Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
237 commits
Select commit Hold shift + click to select a range
7234b13
Split sd_ssh and sd_crypto source lists per area
FacuM Oct 25, 2026
0026b66
WIP: M2 backend work and hand-off
FacuM Oct 25, 2026
0f3108c
Extend the backend hand-off to every milestone
FacuM Oct 25, 2026
52c1be6
Fix the failing M2 unit suites and add the RSA reference vectors
FacuM Oct 25, 2026
214da3c
Add matrix-driven transport interop tests for every fixture row
FacuM Oct 25, 2026
4704784
Add auth interop: every key format and user-certificate paths
FacuM Oct 25, 2026
5905f41
Implement pool members and admission in sd_sftp (01 10.9, increment 1)
FacuM Oct 26, 2026
acacdab
Fix the XP/x86 flavours after the M2 WIP and pool work
FacuM Oct 26, 2026
4a81541
Make the x64-analysis preset green again and scope the matrix tests
FacuM Oct 26, 2026
efdbc8c
Label the srv_* interop tests with 'matrix' for the ci-local exclusion
FacuM Oct 26, 2026
5923090
Hand-off update: M2 session state and the striping design
FacuM Oct 26, 2026
886f891
Hand-off update: 2026-10-26 session pointer and CI gate status
FacuM Oct 26, 2026
cc0cd3a
Fix the x86 Debug crypto_pk timeout and the reconnect stale-handle race
FacuM Oct 26, 2026
c4934e9
Implement pool striping over member streams (01 10.9, increment 2)
FacuM Oct 26, 2026
340fa33
Fix the sub-open request accounting in pool striping
FacuM Oct 26, 2026
5df0432
Add fake-transport unit tests for pool striping
FacuM Oct 26, 2026
7fa4b81
Guard pool member events with a per-member generation
FacuM Oct 26, 2026
7198a2b
Hand-off update: striping tested and hardened, CI gate diagnosis
FacuM Oct 26, 2026
64409dc
Keep a member-lost write's other wires answerable
FacuM Oct 26, 2026
6a14ad9
Add striping interop coverage with member loss
FacuM Oct 26, 2026
812de26
Address review findings in the pool striping path
FacuM Oct 26, 2026
0ff5652
Address review findings in the pool striping path
FacuM Oct 26, 2026
67145fb
Document the striping contract and update the M2 notes
FacuM Oct 26, 2026
dccb8c2
Close the review leftovers in the striping path
FacuM Oct 26, 2026
2d26f5e
Add pool member admission backoff and abandonment (01 10.9, increment 3)
FacuM Oct 27, 2026
bdf8156
Implement the system proxy opt-in and TM-R10 decision tests
FacuM Oct 27, 2026
5966ee3
Add the vfs striping policy and the 1 GiB pool measurement
FacuM Oct 27, 2026
4871fcb
Fix the C28182 analyzer warning and exclude the bench label from ci-l…
FacuM Oct 27, 2026
cabdd7f
Keep the striping test frames under the analysis stack budget
FacuM Oct 27, 2026
1fee8ee
Add the M2 CLI commands and finish the sd_mount mapping
FacuM Oct 27, 2026
cbe6439
Localize the M2 CLI strings into the six locales
FacuM Oct 27, 2026
147ca33
Hand-off update: M2 code complete, closure list and contract changes
FacuM Oct 27, 2026
3185a54
Add the M2 acceptance run, the D38 pass 1 package and its first fixes
FacuM Oct 27, 2026
38a6e32
Start M3: IPC contract, prompt broker, l10n tooling and the UI skeleton
FacuM Oct 27, 2026
a10a7a2
Drop the right pool member in the striping interop test
FacuM Oct 27, 2026
1836af6
Stop tests from leaking UI and agent processes; close D38 leftovers
FacuM Oct 27, 2026
8c9e71a
Merge branch 'wip/r2-fix' into wip/m2-backend
FacuM Oct 27, 2026
5cc218b
Add the classic Explorer context menu handler (shelldrive-shellext.dll)
FacuM Oct 27, 2026
674972b
Merge branch 'wip/r2-shellext' into wip/m2-backend
FacuM Oct 27, 2026
6a45d85
Add the UI prompt host and its dialogs
FacuM Oct 27, 2026
b38c902
Merge branch 'wip/r2-prompt' into wip/m2-backend
FacuM Oct 27, 2026
55129d0
Publish the Explorer state snapshot and the host-side Explorer data
FacuM Oct 27, 2026
8e09a64
Merge branch 'wip/r2-snap' into wip/m2-backend
FacuM Oct 27, 2026
d046a69
Add the profile editor, quick mount, import and the remaining UI verbs
FacuM Oct 27, 2026
566a8bc
Add the host-key manager, logs viewer, settings, about box and icons
FacuM Oct 27, 2026
5f2cf42
Merge branch 'wip/r3-uitools' into wip/r3-uiprof
FacuM Oct 27, 2026
ac4d958
Retry the build folder removal in ci-local -Clean
FacuM Oct 27, 2026
760bf6d
Add the remaining M3 agent methods and events
FacuM Oct 27, 2026
c2edb5e
Merge branch 'wip/r3-uiprof' into wip/m2-backend
FacuM Oct 27, 2026
6561fc3
Merge branch 'wip/r3-ipc2' into wip/m2-backend
FacuM Oct 27, 2026
7ee0783
Add the first-run wizard, dark title bars and balloon rate limiting
FacuM Oct 27, 2026
cb47734
Read every 03 section 3.4.1 profile key and add the M3 CLI commands
FacuM Oct 27, 2026
635832b
Merge branch 'wip/r4-uipolish' into wip/m2-backend
FacuM Oct 27, 2026
549d6c7
Add the M3 acceptance run
FacuM Oct 27, 2026
bfa85ed
Mark the shell extension's open verb as resolved in m3-notes
FacuM Oct 27, 2026
0b4011d
Add the updater engine, update IPC and the offline signing tool
FacuM Oct 27, 2026
191d2b1
Add the self-installing setup engine and stub
FacuM Oct 27, 2026
10c9d01
Generate ADMX/ADML from one policy table and add the reproducibility …
FacuM Oct 27, 2026
a440822
Merge branch 'wip/m4-updater' into wip/m2-backend
FacuM Oct 27, 2026
dde97b2
Merge branch 'wip/m4-setup' into wip/m2-backend
FacuM Oct 27, 2026
dfc1977
Merge branch 'wip/m4-admx' into wip/m2-backend
FacuM Oct 27, 2026
9f539e2
Read the update policies through sd_policy
FacuM Oct 27, 2026
c80ea7d
Give unit test executables an asInvoker manifest
FacuM Oct 27, 2026
a769a21
Add the setup wizard pages and the update consent UI
FacuM Oct 27, 2026
2d989e4
Add fuzz targets, extend the constant-time gate and add timing tests
FacuM Oct 27, 2026
a2b0fbf
Add the ARM64 flavour (build-only) and test the agent shutdown event
FacuM Oct 27, 2026
42b2190
Keep the fuzz corpus byte-exact (no line-ending conversion)
FacuM Oct 27, 2026
1fa8403
Merge branch 'wip/r6-fuzz' into wip/m2-backend
FacuM Oct 27, 2026
d37474f
Merge branch 'wip/r6-arm64' into wip/m2-backend
FacuM Oct 27, 2026
243503d
Keep the SSE2 vectorizer out of constant-time loops
FacuM Oct 27, 2026
ad0e60c
Add the ARM32 flavour (build-only, D5/D31)
FacuM Oct 27, 2026
20353cd
Add the per-machine MSI packages (WiX 3.14)
FacuM Oct 27, 2026
16bc81f
Add the ShellDriveSvc core: service mode, machine profiles, global mo…
FacuM Oct 27, 2026
4e8f629
Merge branch 'wip/r7-svc' into wip/m2-backend
FacuM Oct 27, 2026
aabf512
Merge branch 'wip/r7-arm32' into wip/m2-backend
FacuM Oct 27, 2026
c9ec6d8
Fix the x64-analysis warnings in the service code and its tests
FacuM Oct 27, 2026
f0fa4bb
Localize WixUI dialog strings to the project register
FacuM Oct 27, 2026
9d14b13
Add token-only WebDAV mode with a WinHTTP self-test (TM-R19)
FacuM Oct 27, 2026
79eacd4
Add the administrator UI for service prompts
FacuM Oct 27, 2026
f7c9db0
Raise the unit.crypto_pk timeout to 900 s on x64
FacuM Oct 27, 2026
18e68fd
Merge branch 'wip/r8-wixes' into wip/m2-backend
FacuM Oct 27, 2026
64977b6
Merge branch 'wip/r8-adminui' into wip/m2-backend
FacuM Oct 27, 2026
7f670a9
Merge branch 'wip/r8-tokdav' into wip/m2-backend
FacuM Oct 27, 2026
b0c51fd
Add SHA-NI and AES-NI fast paths with runtime dispatch (M6)
FacuM Oct 27, 2026
32a8848
Add ShellDriveSvc install, uninstall, start and stop with Event Log
FacuM Oct 27, 2026
ff90183
Merge branch 'wip/r8-scm' into wip/m2-backend
FacuM Oct 27, 2026
a4ccbec
Merge branch 'wip/r8-cpu' into wip/m2-backend
FacuM Oct 27, 2026
7a935e9
Add the MIT license (Copyright 2026 LibreStatic)
FacuM Oct 27, 2026
50a8c02
Add maintenance dialog set so that Change offers features and options
FacuM Oct 27, 2026
4b40873
Remember DOKANY and linked connections choices; own EnableLinkedConne…
FacuM Oct 27, 2026
d8fc73e
Fix the round 8 gate: analysis warnings and a stale secret test direc…
FacuM Oct 27, 2026
9ce83bc
Merge branch 'wip/r9-msimodify' into wip/m2-backend
FacuM Oct 27, 2026
9b72063
M5 global WebDAV spike: decision logic, attach seam, go/no-go
FacuM Oct 27, 2026
95cadfd
Bring the AES-NI and SHA-NI code under the constant-time gate
FacuM Oct 27, 2026
f6e60c5
Add service status and repair-data for the machine folder
FacuM Oct 27, 2026
07b09af
Merge branch 'wip/r10-ctni' into wip/m2-backend
FacuM Oct 27, 2026
a1e08e4
Add the token-only WebDAV consent prompt and its plumbing (TM-R19)
FacuM Oct 27, 2026
eb9d60c
Merge branch 'wip/r10-svcstatus' into wip/m2-backend
FacuM Oct 27, 2026
8b5ded1
Merge branch 'wip/r10-tokconsent' into wip/m2-backend
FacuM Oct 27, 2026
9359cb1
Run ctest in parallel in ci-local with resource locks
FacuM Oct 27, 2026
3824263
Fix the round 10 gate failures
FacuM Oct 27, 2026
7692dc8
Merge branch 'wip/r11-ctestj' into wip/m2-backend
FacuM Oct 27, 2026
7f122d9
Give the apps tests a unique configuration root per process
FacuM Oct 27, 2026
d0bac3c
Test the token-only WebDAV console consent end to end
FacuM Oct 28, 2026
751e1d6
Merge branch 'wip/r12-tokharness' into wip/m2-backend
FacuM Oct 28, 2026
79dcc5f
Check machine folders at service start and write Event 3102
FacuM Oct 28, 2026
28d262d
Document the not_directory reason of Event 3102
FacuM Oct 28, 2026
a865662
Merge branch 'wip/r12-svcowner' into wip/m2-backend
FacuM Oct 28, 2026
0d6a316
Add hostkey add and the machine gate for --machine
FacuM Oct 28, 2026
74994d4
Merge branch 'wip/r12-hkmachine' into wip/m2-backend
FacuM Oct 28, 2026
180451e
Keep the SHA-256 digest store scalar and judge the full CT list on x64
FacuM Oct 28, 2026
ddbc066
Merge branch 'wip/r12-ctfinal' into wip/m2-backend
FacuM Oct 28, 2026
d6c63b0
Add a test filter and a Release-only switch to ci-local for single-ch…
FacuM Oct 28, 2026
278d3ea
sd_webdav: keep the destination lock across a replacing MOVE
FacuM Oct 28, 2026
7ff2057
Make test-owned machine-global names unique per process
FacuM Oct 28, 2026
00a0f86
Add shelldrive diag bench (and bench alias)
FacuM Oct 28, 2026
ec78bd1
diag bench: stamp the run folder with QueryPerformanceCounter; German…
FacuM Oct 28, 2026
4338a16
Check key files by handle and re-apply machine DACLs at start
FacuM Oct 28, 2026
5e72013
Event 3102: word the message for refused files as well as folders
FacuM Oct 28, 2026
7bccb04
Enforce service_access and service_access_write per request in sd_vfs
FacuM Oct 28, 2026
2986a52
Add per-user hostkey add through the agent
FacuM Oct 28, 2026
145950b
Merge branch 'wip/r13-testnames' into wip/m2-backend
FacuM Oct 28, 2026
b2d4db0
Merge branch 'wip/r13-davmove' into wip/m2-backend
FacuM Oct 28, 2026
9b35996
Merge branch 'wip/r13-bench' into wip/m2-backend
FacuM Oct 28, 2026
b8d6541
Merge branch 'wip/r13-idacl' into wip/m2-backend
FacuM Oct 28, 2026
4ffec7a
Merge branch 'wip/r13-vfsacl' into wip/m2-backend
FacuM Oct 28, 2026
2b3d3c0
Merge branch 'wip/r13-hkuser' into wip/m2-backend
FacuM Oct 28, 2026
d839108
Allow GetSecurityDescriptorControl and GetSidIdentifierAuthority on t…
FacuM Oct 28, 2026
b1d98ab
Speed up the local gate: parallel builds, a build/test pipeline and s…
FacuM Oct 28, 2026
4af8dbd
Service pipe: 64 KiB cap for non-admins, two instances for admins
FacuM Oct 28, 2026
4a48167
sd_vfs: event-driven offline wait and offline negative entries
FacuM Oct 28, 2026
30cde0b
Add key from server in the host key manager, fix the accept request n…
FacuM Oct 28, 2026
10fb689
Connect for hostkey add --from-server (per user)
FacuM Oct 28, 2026
db69273
Cache Dokany requestor identities and raise Event 1200 for global cha…
FacuM Oct 28, 2026
8012afd
Add NIST fast reductions for P-256, P-384 and P-521 field products
FacuM Oct 28, 2026
42fe3fc
Merge branch 'wip/r14-svcpipe' into wip/m2-backend
FacuM Oct 28, 2026
bd4b1dc
Merge branch 'wip/r14-offwait' into wip/m2-backend
FacuM Oct 28, 2026
63dc081
Merge branch 'wip/r14-ui' into wip/m2-backend
FacuM Oct 28, 2026
7193473
Merge branch 'wip/r14-hkconn' into wip/m2-backend
FacuM Oct 28, 2026
7babac5
Key the Dokany requestor cache on token object identity
FacuM Oct 28, 2026
fd8f7be
Merge branch 'wip/r14-dokaudit' into wip/m2-backend
FacuM Oct 28, 2026
ce522a4
Select the field representation per curve: NIST reduction for P-521 only
FacuM Oct 28, 2026
5ae7ef9
Merge branch 'wip/r14-nist' into wip/m2-backend
FacuM Oct 28, 2026
923b4f0
Fix the round 14 gate: XP import floors, /analyze findings and an int…
FacuM Oct 28, 2026
7ce32f2
Settings: host key trust toggles, credential roaming, WebClient statu…
FacuM Oct 28, 2026
9d03bdc
Add TM-R34 folder checks, Dokany chain seam and release skeleton
FacuM Oct 28, 2026
252e334
Add the service side of machine host keys
FacuM Oct 28, 2026
12fbfa9
Add the Service page: service.status and service.repair_data on the s…
FacuM Oct 28, 2026
f269493
Merge branch 'wip/r15-installer' into wip/m2-backend
FacuM Oct 28, 2026
5b827bc
Merge branch 'wip/r15-uisettings' into wip/m2-backend
FacuM Oct 28, 2026
4b3a4e8
Merge branch 'wip/r15-svcmachine' into wip/m2-backend
FacuM Oct 28, 2026
b7c54be
Merge branch 'wip/r15-uisvc' into wip/m2-backend
FacuM Oct 28, 2026
75267b4
Add zlib@openssh.com delayed compression with an own DEFLATE codec
FacuM Oct 28, 2026
980e85f
Merge branch 'wip/r15-zlib' into wip/m2-backend
FacuM Oct 28, 2026
1ba4fc8
Add diag --check, --fix and --bundle (03 6.1, 10.5)
FacuM Oct 28, 2026
5624b3c
Merge branch 'wip/r15-diag' into wip/m2-backend
FacuM Oct 28, 2026
d9f1a53
Fix the round 15 gate: fixture profile count and a striping wait unde…
FacuM Oct 28, 2026
97b1c3a
Add adaptive SSH channel receive windows (M7)
FacuM Oct 28, 2026
1f2d37d
Add Copy remote path and the This PC Mount submenu to the shell exten…
FacuM Oct 28, 2026
3622c9c
Add two-stage elevation for the per-machine setup (04 6.4)
FacuM Oct 28, 2026
dc71a60
Verify setup payload tables and add sd-release, nightly checks
FacuM Oct 28, 2026
12d5583
Add hostkey reject, UpdateHostKeys policy 2 and the pipe class at con…
FacuM Oct 28, 2026
31e28fc
Add the changed-key dialog, the wrong-key-type notice and the 7.5 mai…
FacuM Oct 28, 2026
575b4e5
Merge branch 'wip/r16-adaptwin' into wip/m2-backend
FacuM Oct 28, 2026
fdf4a1f
Merge branch 'wip/r16-shellext' into wip/m2-backend
FacuM Oct 28, 2026
1a38279
Merge branch 'wip/r16-setupelev' into wip/m2-backend
FacuM Oct 28, 2026
e81900d
Merge branch 'wip/r16-release' into wip/m2-backend
FacuM Oct 28, 2026
a9203f5
Merge branch 'wip/r16-hkpolicy' into wip/m2-backend
FacuM Oct 28, 2026
c81e189
Merge branch 'wip/r16-uihk' into wip/m2-backend
FacuM Oct 28, 2026
e67ac51
01 4.8: state the adaptive window rule as implemented (bandwidth-dela…
FacuM Oct 28, 2026
e2c3df5
Add jump chains and proxies for service profiles (2.6 rule 1)
FacuM Oct 28, 2026
3d2b9d8
Merge branch 'wip/r16-svcproxy' into wip/m2-backend
FacuM Oct 28, 2026
8fcbafe
Fix the round 16 gate: no CRT wcsstr in the UI, relative profile count
FacuM Oct 28, 2026
de95d13
Service policies, proxy secret verb, hostkey mounts without a letter …
FacuM Oct 28, 2026
07cc9e7
Agent: host key failure details, list security state and scope
FacuM Oct 28, 2026
409211d
Add the event list, reject declined host key offers and show host key…
FacuM Oct 28, 2026
1a84838
Merge branch 'wip/r17-svcpol' into wip/m2-backend
FacuM Oct 28, 2026
d473436
Merge branch 'wip/r17-uidata' into wip/m2-backend
FacuM Oct 28, 2026
2574e49
Merge branch 'wip/r17-uiev' into wip/m2-backend
FacuM Oct 28, 2026
7afcc98
Installer: per-machine install through the MSI, live progress, /log=,…
FacuM Oct 28, 2026
b3f9b48
Write menu.cache from the profile store and register the shell extension
FacuM Oct 28, 2026
58f84d2
Merge branch 'wip/r17-menucache' into wip/m2-backend
FacuM Oct 28, 2026
cc2fa22
ci-local: build the MSI and run its tests on x86-ia32 and x64-modern …
FacuM Oct 28, 2026
28f84db
Elevated stages never write the /log= path
FacuM Oct 28, 2026
ff6d77c
Back the round 17 settings keys: write mode, log privacy, notify kind…
FacuM Oct 28, 2026
b1de068
Merge branch 'wip/r17-settingsbe' into wip/m2-backend
FacuM Oct 28, 2026
35d5c7c
Test: keep several listening instances in the fake pipe agent and ser…
FacuM Oct 28, 2026
d715f5e
Merge branch 'wip/r17-agentfake' into wip/m2-backend
FacuM Oct 28, 2026
fbe28d7
Relay the msiexec log over the result pipe for /log=
FacuM Oct 28, 2026
280bd3a
Merge branch 'wip/r17-setupfin' into wip/m2-backend
FacuM Oct 28, 2026
8902e02
msi tests: build the package first on flavours without a setup payloa…
FacuM Oct 28, 2026
36e91b0
Settings: default write mode, log privacy, agent start at sign-in and…
FacuM Oct 28, 2026
e1bf3d4
Setup: per-machine uninstall, launch after all-users install, empty keys
FacuM Oct 28, 2026
f4ad5ad
UI: consume the round 17 agent data (key type dialog, store_kind, lis…
FacuM Oct 28, 2026
b86eb38
Log privacy: typed host, user and remote path specifiers
FacuM Oct 28, 2026
9213988
Merge branch 'wip/r18-logpriv' into wip/m2-backend
FacuM Oct 28, 2026
83ebbff
Merge branch 'wip/r18-uisettings2' into wip/m2-backend
FacuM Oct 28, 2026
3445d13
Merge branch 'wip/r18-setupuninst' into wip/m2-backend
FacuM Oct 28, 2026
0ee8c19
Merge branch 'wip/r18-uiconsume' into wip/m2-backend
FacuM Oct 28, 2026
05e393f
Add MD5 fingerprints, known_hosts comments, event history and machine…
FacuM Oct 28, 2026
0c30abc
Merge branch 'wip/r18-hkextras' into wip/m2-backend
FacuM Oct 28, 2026
f274840
Keep Network locations in step with profile changes and clean them at…
FacuM Oct 28, 2026
d704145
Close round 18 follow-ups: templates, notify kind, ssh_log level, ins…
FacuM Oct 28, 2026
170b31b
Merge branch 'wip/r19-shelllabels' into wip/m2-backend
FacuM Oct 28, 2026
7fd477c
Merge branch 'wip/r19-smallfix' into wip/m2-backend
FacuM Oct 28, 2026
4353a0d
Add end-to-end tests of the CLI over the service pipe
FacuM Oct 28, 2026
8b63447
Merge branch 'wip/r19-svce2e' into wip/m2-backend
FacuM Oct 28, 2026
e6c23c0
Ship the x86-sse2 shell extension in the x64 MSI
FacuM Oct 28, 2026
2fc3037
Merge branch 'wip/r19-x86shell' into wip/m2-backend
FacuM Oct 28, 2026
5570aa9
diag: add round 19 check rows (Dokany version and deny list, Windows …
FacuM Oct 28, 2026
d39d934
Merge branch 'wip/r19-diagmore' into wip/m2-backend
FacuM Oct 28, 2026
5e345d2
Register the x86 shell extension per user on split views
FacuM Oct 28, 2026
0fc250d
Merge branch 'wip/r20-x86payload' into wip/m2-backend
FacuM Oct 28, 2026
3aaf364
ui: hostkey_source_insecure balloon, reconnect reason, agent event hi…
FacuM Oct 28, 2026
826866e
Merge branch 'wip/r20-uitail' into wip/m2-backend
FacuM Oct 28, 2026
edb8732
Add shelldrive location add, remove and repair verbs
FacuM Oct 28, 2026
699c759
Merge branch 'wip/r20-locverbs' into wip/m2-backend
FacuM Oct 28, 2026
acef8dc
Localize Event Log messages of shelldrive-host
FacuM Oct 28, 2026
5793003
vfs: unknown names fail at once while offline
FacuM Oct 28, 2026
cee04c4
release: define release-gates.txt and enforce it in sd-release sign
FacuM Oct 28, 2026
2f61662
Merge branch 'wip/r21-gates' into wip/m2-backend
FacuM Oct 28, 2026
0710ca6
Emit Event Log messages for every LANGID of each language
FacuM Oct 28, 2026
d19f4b4
Merge branch 'wip/r21-evloc' into wip/m2-backend
FacuM Oct 28, 2026
3e32aa0
AGENTS.md: Event Log message text is localized, insert strings stay E…
FacuM Oct 28, 2026
9b40630
CODEOWNERS: own every path by @LibreStatic/maintainers
FacuM Oct 28, 2026
47b9de2
CODEOWNERS: own every path by @FacuM
FacuM Oct 28, 2026
c58dc99
lab: support generation 2 VMs with Secure Boot and vTPM
FacuM Oct 28, 2026
fa1e7f6
lab: record VM creation state in docs/dev/lab-results.md
FacuM Oct 28, 2026
5f34bc3
lab: record QEMU, payload validation, maintainer checklist
FacuM Oct 28, 2026
d8c2fb7
lab: record evening session (Win7 bases, P1/P2 mysteries)
FacuM Oct 28, 2026
ed3bb89
lab: make the reduced CPUID set opt-in per VM
FacuM Oct 29, 2026
f755dd8
lab: record P1 fix, DVD >4GiB root cause, Win10 split-media install
FacuM Oct 29, 2026
67b34e4
Fix the reproducible-build check: fixture paths and CAB member times
FacuM Oct 29, 2026
0cf8a7a
ci: print failing test output (--output-on-failure)
FacuM Oct 29, 2026
0ce911b
Fix the runner-only failures: pipe owner, loopback selftest, repro scope
FacuM Oct 29, 2026
cfee089
webdav: diagnose the token self-test probe per WinHTTP step
FacuM Oct 30, 2026
f3e20d7
webdav: disable the probe request authentication instead of autologon…
FacuM Oct 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
* text=auto eol=lf
*.md text eol=lf
*.ico binary
tests/fuzz/corpus/** -text
3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Every path is owned by the maintainer; 04 section 6 (TM-R39) requires this review at least for .github/,
# installer/, cmake/SdSign.cmake and tools/sd-release/.
* @FacuM
34 changes: 28 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
# CI (04 §11.2): build + unit tests + import audit for x64-modern, x64-xp, x86-ia32 and x86-sse2, plus the
# x64-analysis (/analyze) build. The x86 flavours also run the ISA audit and the constant-time helper-call
# gate (sd-isacheck) as post-build steps and CTests; their test binaries run under WOW64 on the x64
# runner (Dokany tests skip there). TM-R39: first-party actions only, pinned by commit SHA; read-only token.
# runner (Dokany tests skip there). The arm64 and arm32 entries are build-only (M6, 04 §1.1, §5.1): they
# cross-compile on the x64 runner, the build-time tools run from a nested x64 build, and no test runs (ARM
# binaries cannot run there; the ARM64 test job belongs to windows-11-arm, §11.2; arm32 has no test job, D5).
# TM-R39: first-party actions only, pinned by commit SHA; read-only token.
name: ci

on:
Expand All @@ -24,7 +27,7 @@ jobs:
strategy:
fail-fast: false
matrix:
preset: [x64-modern, x64-xp, x86-ia32, x86-sse2]
preset: [x64-modern, x64-xp, x86-ia32, x86-sse2, arm64, arm32]
env:
SD_BUILD_NUMBER: ${{ github.run_number }}
steps:
Expand All @@ -34,7 +37,7 @@ jobs:
persist-credentials: false

- name: Set up v141_xp toolset
if: matrix.preset != 'x64-modern'
if: matrix.preset != 'x64-modern' && matrix.preset != 'arm64' && matrix.preset != 'arm32'
uses: ./.github/actions/setup-xp-toolset

- name: Configure
Expand All @@ -51,13 +54,16 @@ jobs:
shell: pwsh
run: cmake --build --preset ${{ matrix.preset }}-debug

# arm64 and arm32 are build-only (ARM test binaries cannot run on the x64 runner, 04 §11.4): ctest is skipped.
- name: Test Release
if: matrix.preset != 'arm64' && matrix.preset != 'arm32'
shell: pwsh
run: ctest --preset ${{ matrix.preset }} --output-junit "${{ github.workspace }}/build/ctest-${{ matrix.preset }}.xml"
run: ctest --preset ${{ matrix.preset }} --output-on-failure --output-junit "${{ github.workspace }}/build/ctest-${{ matrix.preset }}.xml"

- name: Test Debug
if: matrix.preset != 'arm64' && matrix.preset != 'arm32'
shell: pwsh
run: ctest --preset ${{ matrix.preset }}-debug
run: ctest --preset ${{ matrix.preset }}-debug --output-on-failure

- name: Upload binaries
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
Expand Down Expand Up @@ -89,4 +95,20 @@ jobs:

- name: Test
shell: pwsh
run: ctest --preset x64-analysis
run: ctest --preset x64-analysis --output-on-failure

# TM-R39 / TST-32: the workflow lint (tools/check-workflows.ps1). Read-only; CODEOWNERS is reported as a warning
# until the maintainer review owner is recorded.
workflow-lint:
name: workflow lint
runs-on: ${{ vars.SD_BUILD_RUNNER || 'windows-2022' }}
timeout-minutes: 10
steps:
- name: Check out
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Lint the workflows
shell: pwsh
run: ./tools/check-workflows.ps1
130 changes: 130 additions & 0 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
# Nightly checks (docs/design/04 §11.2; M6 notes in docs/dev/m6-notes.md): libFuzzer runs of the parser targets with a
# time budget per target, and the dudect-style constant-time timing tests (tests/ct, D1; SD_CT_TIMING).
#
# fuzz one job per target (tests/fuzz/CMakeLists.txt, sd_add_fuzz_target): the x86-fuzz preset (libFuzzer and
# AddressSanitizer, never shipped), 600 s per target, the repository corpus copied to a scratch folder first so
# the repository is never written. A crash or a timeout uploads its input and fails the job.
# ct dudect timing tests on the quiet-machine flavours of the matrix (x86-ia32, x64-modern). Hosted runners are
# noisy: a failure here is a signal to rerun on the lab machine (04 §11.2), not a release decision.
# lint the workflow lint (tools/check-workflows.ps1): read-only, runs on every night as well.
#
# Secrets: none are referenced and no cache is restored (TM-R39). Actions: first-party, pinned by commit SHA, the
# same pins as ci.yml. Token: read-only. Triggers: schedule and workflow_dispatch only; no pull_request trigger.

name: nightly

on:
schedule:
- cron: "17 3 * * *"
workflow_dispatch:

permissions:
contents: read

concurrency:
group: nightly-${{ github.ref }}
cancel-in-progress: false

jobs:
workflow-lint:
name: workflow lint
runs-on: windows-2022
timeout-minutes: 10
steps:
- name: Check out
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Lint the workflows
shell: pwsh
run: ./tools/check-workflows.ps1

fuzz:
name: fuzz ${{ matrix.target }}
runs-on: windows-2022
timeout-minutes: 45
strategy:
fail-fast: false
matrix:
target: [json, ini, utf_names, text_sanitize, keyfile, known_hosts, cert, kexinit, sftp_reply, wd_http, wd_xml, state, manifest, inflate]
steps:
- name: Check out
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Configure (x86-fuzz)
shell: pwsh
run: cmake --preset x86-fuzz

- name: Build the libFuzzer target
shell: pwsh
run: cmake --build build/x86-fuzz --config Debug --target sd-fuzz-${{ matrix.target }}-libfuzzer

- name: Run for 600 seconds on a scratch copy of the corpus
shell: pwsh
env:
SD_FUZZ_TARGET: ${{ matrix.target }}
run: |
$exe = Get-ChildItem -Path build/x86-fuzz -Recurse -Filter "sd-fuzz-$env:SD_FUZZ_TARGET-libfuzzer.exe" | Select-Object -First 1
if (-not $exe) { throw "libFuzzer target not found" }
$work = Join-Path $env:RUNNER_TEMP "corpus-$env:SD_FUZZ_TARGET"
New-Item -ItemType Directory -Force -Path $work | Out-Null
Copy-Item -Path (Join-Path "tests/fuzz/corpus" $env:SD_FUZZ_TARGET) -Destination $work -Recurse -Force
$artifacts = Join-Path $env:RUNNER_TEMP "fuzz-artifacts-$env:SD_FUZZ_TARGET"
New-Item -ItemType Directory -Force -Path $artifacts | Out-Null
Push-Location $artifacts
try {
& $exe.FullName (Join-Path $work $env:SD_FUZZ_TARGET) -max_total_time=600 -timeout=20 "-artifact_prefix=$artifacts/"
if ($LASTEXITCODE -ne 0) { throw "fuzzer exit $LASTEXITCODE" }
} finally {
Pop-Location
}

- name: Upload crashes and timeouts
if: failure()
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: fuzz-crash-${{ matrix.target }}
path: ${{ runner.temp }}/fuzz-artifacts-${{ matrix.target }}
if-no-files-found: ignore
retention-days: 30

ct:
name: dudect (${{ matrix.preset }})
runs-on: windows-2022
timeout-minutes: 90
strategy:
fail-fast: false
matrix:
preset: [x86-ia32, x64-modern]
steps:
- name: Check out
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Configure with the timing tests
shell: pwsh
run: cmake --preset ${{ matrix.preset }} "-DSD_CT_TIMING=ON"

- name: Build sd-ct-dudect
shell: pwsh
run: cmake --build build/${{ matrix.preset }} --config Release --target sd-ct-dudect

- name: Run the timing tests (all primitives, default samples)
shell: pwsh
run: |
$exe = Join-Path "build/${{ matrix.preset }}/bin/Release" "sd-ct-dudect.exe"
& $exe 2>&1 | Tee-Object -FilePath "ct-${{ matrix.preset }}.txt"
if ($LASTEXITCODE -ne 0) { throw "dudect reports a timing difference or bad inputs (exit $LASTEXITCODE)" }

- name: Upload the timing report
if: always()
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: ct-${{ matrix.preset }}
path: ct-${{ matrix.preset }}.txt
if-no-files-found: ignore
retention-days: 30
Loading