Repository navigation
fix(update): repair the Windows installer tests broken by #8534 - #8548
Conversation
The dev batch went red on four Windows shards (run 43000940642). Two causes: - The Windows supervisor tests run a private copy of npm-install.mjs from a data: URL and rewrote only "./mutation-guard.mjs" to a file URL. #8534 added "./windows-installer-marker.mjs" and "./test-home-guard.mjs", which a data: URL cannot resolve. A shared test loader now pins every relative ./*.mjs import and refuses a copy with an unpinned one, and a new case loads the copy on every host so CI catches this without the Windows lane. - #8534 stopped probing a recorded installerPid on win32 unless terminationUnconfirmed was set, so a marker with a live installer read free on Windows. confirmInstallerExit already drops the Windows witness, so the rule was unnecessary: the pid is probed again on every platform. Refs #8524
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
✅ Deterministic PR hygiene checks passed. |
|
Caution Review failedThe pull request is closed. Walkthrough
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
Maintainer judgment (bundle lane: urgent fix for the dev Windows batch)Value. This turns the dev Windows batch green again (run 43000940642: shards 1, 3, 6 and 8 failed after #8534). It also stops this class of break from hiding behind the Windows lane. Causes and fixes.
UX change. None. Production code changes only in Existing users. POSIX is unchanged. On Windows, no marker that production writes carries the reverted shape: Verification.
NOT RUN. The Windows-only cases themselves (cmd-wrapped joins, supervisor exit, process attributes). The coordinator re-runs the dev batch after merge; this PR dispatches no lane=all. Residual (noted). The loader's refusal regex misses a bare side-effect Refs #8524 |
Summary
The dev Windows batch went red on shards 1, 3, 6 and 8 (run https://github.com/lidge-jun/opencodex/actions/runs/43000940642, head 0873b5c). #8534 caused it in two ways.
update-npm-timeoutandupdate-npm-supervisor-exitrun a private, instrumented copy ofsrc/update/npm-install.mjsfrom adata:URL. They rewrote only"./mutation-guard.mjs"to afile:URL. fix(update): release an interrupted Windows update marker once its supervisor is gone #8534 added"./windows-installer-marker.mjs"and"./test-home-guard.mjs"to that module, and a data: URL cannot resolve them, so every Windows supervisor case failed withCannot find module './windows-installer-marker.mjs' from 'data:text/javascript;base64,…'.tests/helpers/update-module-data-url.tspins every relative./*.mjsimport to the shipped file'sfile:URL. It refuses a copy that still has an unpinned relative import.guardedSpawnuntouched.installerPidrule. fix(update): release an interrupted Windows update marker once its supervisor is gone #8534 stopped probing a recordedinstallerPidon win32 unlessterminationUnconfirmedwas set, so a marker with a live installer readfreeon Windows. This broke "a failed marker retains the update fence while its installer remains alive" and "prior installer marker refuses and remains untouched".confirmInstallerExitalready drops the Windows supervisor pid, so a finished update leaves none for a reused pid to hold, and the rule was unnecessary.Refs #8524
Verification
Cannot find module './windows-installer-marker.mjs' from 'data:…';sync-update-mutex.mjs, "win32: a recorded live installer keeps a marker fenced" fails (freewhereactiveis expected). Both pass on this head.bun test tests/update: 1046 pass, 317 skip, 0 fail. The skips are Windows-only cases and the parser-backed lint.bun run typecheck,bun run privacy:scan,bun run structure:check, test-layout, the file-size ratchet and the Lab boundary all pass.NOT RUN: the Windows shards themselves. The coordinator re-runs the dev batch after merge; this PR does not dispatch lane=all.
Checklist
Summary by CodeRabbit