Skip to content

ci(scenario): the windows leg — GOEXE binaries, bash shell, empirical audit - #351

Merged
David-Noble-at-work merged 4 commits into
developfrom
ci/writ-scenario-windows
Aug 9, 2026
Merged

David-Noble-at-work merged 4 commits into
developfrom
ci/writ-scenario-windows

Conversation

@David-Noble-at-work

Copy link
Copy Markdown
Contributor

Phase 4 of #346 — the #91 audit's empirical slice, proven (or falsified) by this PR's own windows-latest scenario leg. Up-front fixes: $(GOEXE) suffixing in the Makefile, .exe-aware binary resolution in the harness, shell: bash for the scenario job. Known reliance: runner admin privilege for symlink creation. Product gap recorded for the fuller audit: TargetOrder reads HOME only (the harness sets both HOME and USERPROFILE; real Windows users have only the latter).

… audit

Phase 4 of the writ-deploy scenario (#346), the #91 audit's empirical
slice. Binaries build with $(go env GOEXE) so Windows gets .exe, the
harness resolves the suffixed binary, and the scenario job forces
shell: bash (Windows run: defaults to PowerShell). Symlinks ride the
runner's admin privilege; the harness sets HOME and USERPROFILE, with
the product's HOME-only TargetOrder read noted as a real-Windows gap
for the fuller #91 audit. The windows-latest matrix leg is the proof.
@David-Noble-at-work David-Noble-at-work self-assigned this Aug 9, 2026
David Noble added 3 commits August 8, 2026 17:19
…irst catch

New-OpInventory stored walked directories with the OS separator and
concatenated them raw into import paths, so Windows generated
backslashed imports and the build died. ToSlash at the conversion.
The scenario matrix also gains fail-fast: false — a failing leg must
not cancel the other platforms' evidence (it canceled the green unix
legs on this PR's first run).
…ch, ruled deeper

url.Parse reads a Windows drive letter as a one-letter URI scheme, so
string-to-resource construction died on every Windows path. The census
showed the constructors' file-URI input grammar had no user — no
script, no caller, no test — so instead of a disambiguation heuristic
the dual grammar is deleted: the input is a filesystem path, full
stop, and the RFC 8089 validation block goes with it. The one real
round-trip survives explicitly: catalog rehydration hands back the
provider's own emitted identity specific ("file://" + path), stripped
by TrimPrefix — the provider decoding only what it mints, exactly as
readback does. Input-domain tests pin the contract in both providers:
path and own-specific yield the same identity, windows-shaped paths
are paths, foreign-scheme strings are paths.
…o entries

The windows leg deployed successfully end to end; the only failure was
the assertion's unix-shaped floor of three status entries. Windows
matches exactly the two base projects (no Unix/Darwin variants apply),
so the floor is platform-aware.
@David-Noble-at-work
David-Noble-at-work merged commit dc21738 into develop Aug 9, 2026
5 checks passed
@David-Noble-at-work
David-Noble-at-work deleted the ci/writ-scenario-windows branch August 9, 2026 02:37
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