Skip to content

CI only: Windows module, test kit and rig - #12

Closed
basal-alfonso[bot] wants to merge 20 commits into
integration/windowsfrom
ci/windows-module
Closed

basal-alfonso[bot] wants to merge 20 commits into
integration/windowsfrom
ci/windows-module

Conversation

@basal-alfonso

@basal-alfonso basal-alfonso Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

CI-only draft for native Windows runs of the combined Windows slices. It targets integration/windows because main has moved on and conflicts. Not for merging.


Summary by cubic

CI-only draft that enables native Windows runs of the module, test kit, rig, and host regression suites; targets integration/windows and is not for merging. Windows child processes now spawn and are owned through basal-launch instead of std::process::Command, so the worker and module suites build and run on Windows.

Windows spawns and process ownership

  • Every Windows child spawn takes a process-wide spawn_lock while its handles are inheritable, so no concurrent spawn can copy another child's handle; spawn_plain starts unconfined children (fixtures, helper tools) under the same rules.
  • Module workers are launched via basal-launch; confinement-fault deaths are counted separately in CONFINEMENT_FAULT_DEATHS, matching Unix SIGSYS accounting.
  • basal-testkit and basal-rig now track native process exit and released ownership, sample working sets, and terminate crash parents natively; reaping assertions observe a signaled process handle.
  • The rig's native process discovery is exercised with a real current-image positive control and an absent-image negative control; the fixture focuses on the CI runtime.
  • CI gains standalone basal-testkit, basal-rig, and basal-host regression test jobs alongside the module job.

Tests and fixtures

  • Host privacy regressions use the public git::run(RevParse) surface so the Windows-private repo capability type stays out of integration tests.
  • fs tests assert platform-specific path behavior: Windows refuses raw .. components with invalid_arguments, Unix resolves and denies them.
  • POSIX-only fixtures (symlinks, signals, descriptor numbers) are #[cfg(unix)] gated and listed in evidence/windows-build-failures.md; remaining assertions in mixed tests still run.
  • New coverage includes the store's owner-only DACL on Windows, leftover PID-based temp directories not blocking launches, and native Windows job/descendant cleanup.
  • cortexkit-store is bumped to =0.2.4 for Windows store support.

Written for commit 79819d1. Summary will update on new commits.

View guided diff Turn on auto-fix

Use basal-launch for all runtime Windows test-kit commands and worker spawns. Track native process exit and released ownership, sample working sets, and terminate crash parents natively. Restore worker suites and wrapper-stack example; retain only named POSIX fixtures and subcases in the Windows failure evidence.

Windows rejects raw relative path components, unlike Unix canonical resolution, so fs assertions now assert the platform contract while keeping the same test names. Keep the rig mutation anchor and every mutation target name unchanged. Native Windows acceptance remains to be measured by the parent-pushed CI run.
# Conflicts:
#	.github/workflows/ci.yml
Use the public basal-proto limit re-export in native spawns and the direct-launch test. Bundle SQLite for the standalone Windows rig test rather than depending on a missing sqlite3.lib. Give the Unix-only tamper result an explicit Option type so the Windows untampered variant also compiles.
Keep Unix dotdot canonicalization assertions and assert Windows raw relative-component refusal instead, preserving the approved-repository positive control and all test names. Build relative-component fixtures with native separators. Construct Windows temporary-file leases with the same drive-path spelling as the write and its roots: expanding the runner temp directory short-name alias only in the lease made the fixture inconsistent.
… context names

# Conflicts:
#	evidence/windows-build-failures.md
…le entry

basal-rig gained a Windows-only windows-sys dependency, which moved the
lockfile lines this control's edit anchors on.
Native run 38081004388 leaves one test-kit failure: Windows rejects raw dotdot components with invalid_arguments before resolution, while Unix resolves and returns denied for the escaped target. Preserve the existing no-host-dispatch, rejected settlement and audit/privacy claims; only assert the platform-specific refusal diagnostic for that one call. No test name or catalogue anchor changes.
Use separate native path components when building the isolated module image path: a slash-containing join could never match QueryFullProcessImageNameW output. Add a Windows PID positive control using the current image and an absent-image negative control, so the new process-discovery path cannot pass only by returning None.
Check the constructed image locator against a literal native spelling as well as the live snapshot. Path equality normalizes separators, while the process finder compares image strings, so an OsStr assertion is needed to catch the slash-containing join regression itself. Keep test items last for native clippy.
Run 38083395906 passes the diagnostic, no-dispatch and rejected-settlement checks but exposes the same Windows invalid_arguments diagnostic in the audit row. Assert that exact platform-specific refusal kind for the malformed escape, preserving allowed/denied labels for the other calls and the unchanged privacy/digest checks.
The full native workspace check in run 38085859495 reached a Windows-private repo function returning a non-public PinnedDirectory in this integration test. Use public git::run(RevParse) to test identical outside/missing refusals on both platforms without exposing the implementation capability type. Log this integration target separately in the Windows baseline so workspace failures cannot conceal it.
@basal-alfonso

basal-alfonso Bot commented Oct 11, 2026

Copy link
Copy Markdown
Author

Closing: its contents are merged on the integration/windows branch.

@basal-alfonso basal-alfonso Bot closed this Oct 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant