Repository navigation
[Bug]: native Windows lane never runs the control-plane suites the project hardened and fixed for Windows, so Windows-only regressions ship qualified #6638
Description
What happens
LoopX ships native Windows support, and the native Windows qualification lane (windows-powershell in .github/workflows/python-tests.yml) is a required merge-gate job. That lane runs a curated list of TypeScript suites (6 of the 266 files in tests/control_plane_ts/). Every control-plane suite that carries behavior written or fixed specifically for native Windows is currently outside that list, so its Windows behavior is never exercised in CI:
| Suite | Native Windows fix that made it host-qualified | In the Windows lane |
|---|---|---|
tests/control_plane_ts/checkpoint_artifacts.test.ts |
#6562 / #6566: copied-file durability flush through a read-only handle | no |
tests/control_plane_ts/sqlite_backup.test.ts |
#6258: state-backup archive flush through a writable handle | no |
tests/control_plane_ts/agent_preferences.test.ts |
#6356: host-independent assertions | no |
tests/control_plane_ts/authority_archive.test.ts |
#6356, and it asserts the win32 directory-sync boundary |
no |
tests/control_plane_ts/canonical_task_lease_renew.test.ts |
#6356 | no |
tests/control_plane_ts/cold_source_import.test.ts |
#6356 | no |
tests/control_plane_ts/coordination_runtime_shadow.test.ts |
#6356 | no |
tests/control_plane_ts/effect_runtime_snapshot.test.ts |
#6356 | no |
tests/control_plane_ts/goal_acceptance_authority.test.ts |
#6356: CRLF-aware configuration fence | no |
tests/control_plane_ts/quota_void_commit.test.ts |
#6356 | no |
tests/control_plane_ts/shadow_entry_delivery.test.ts |
#6356 | no |
The lane also installs no repository-root dependencies, so any suite that imports a package (for example the PostgreSQL provider's pg) cannot run there at all.
Impact
Windows-only runtime regressions keep shipping with green qualification:
- [Bug]: native Windows: runtime.checkpoint_artifacts capture and materialize always fail because the copied-file durability flush uses a read-only handle #6562:
runtime.checkpoint_artifactscapture and materialize failed on every Windows host; only a user-side run oftests/control_plane_ts/checkpoint_artifacts.test.tson Windows exposed it. The fix (fix(checkpoint): flush captured members through update handles on Windows #6566) is merged, and its own review named this follow-up: the checkpoint suite is not part of thewindows-powershelllane, which is why this Windows-only regression escaped CI. - fix(backup): flush state backup archives through writable handles on Windows #6258:
loopx backup-state --executefailed on Windows because both durability flushes used read-only handles — the same defect class as [Bug]: native Windows: runtime.checkpoint_artifacts capture and materialize always fail because the copied-file durability flush uses a read-only handle #6562, in a different owner, with no Windows qualification either. - [Bug]: native Windows: remaining 32 host-dependent control-plane TypeScript test failures after #6207 #6351 / test: guard remaining host-dependent control-plane assertions on native Windows #6356: ten control-plane suites needed native Windows hardening, which means their assertions differ by host; after hardening, CI still never runs them on Windows.
Root cause: the lane list is hand-curated and no contract keeps it aligned with the suites that encode native Windows behavior, so each Windows-only fix can land without adding the coverage that would catch the next one. #6562 is the demonstrated cost of that drift.
Expected
The windows-powershell lane qualifies every control-plane suite that carries native Windows behavior, and a contract test keeps it that way so the coverage cannot silently drop out again.
Environment
- Repository revision:
dda6f7ef7(main), verified on a native Windows 11 host withnode v22.22.3(the version the lane pins for its SQLite steps). - The 11 listed suites run green on that host:
271 tests, 246 pass, 0 fail, 25 skipped (20 PostgreSQL-provider, 3 symlink-privilege, 2 POSIX-only), 48.1s(node --no-warnings --experimental-sqlite --experimental-strip-types --test <suites>).
Drafted with AI assistance at my request, under my direction and review.
Activity
coordination: backfill agent-l9x3 claim (issue loopx-project#6638, PR l…