ci(windows): dev push CI fails a rotating Windows test by timeout on every run, blocking the publish gate
Summary
Every push-CI run on dev today fails one to three Windows jobs, each time on a different test that hits its timeout (20 s, 30 s or 60 s budgets) while the same test passes on the next run. The rotating set means no single fix lands the gate: publish.yml's gate-reuse needs a fully green ci.yml run on the release-state SHA, so a release currently depends on gh run rerun --failed luck. This is the same shape as #8250 (closed 2026-09-14) and #8294 (closed 2026-09-15) with a fresh rotation.
Evidence (dev push CI, 2026-09-15)
| run | head | job | failing test | budget |
|---|---|---|---|---|
| 34980106383 | 820b02f04 | test (windows-latest, 2/2) | member injection residency > parked then messaged by task id > detach_rpc resumes one acknowledged turn | 20 s (#8316) |
| 34982160042 | 633a194fb | test (windows-latest, 1/2) | one memory identity across real Bun processes > two synchronized tool writers > twenty linear commits land with observed lock contention | 30 s |
| 34982160042 | 633a194fb | test (windows-latest, 2/2) | #given a console-less parent #when the default RPC child starts #then windowsHide suppresses its console | 60 s |
| 34984871235 | c5b7e6ac5 | senpi-compatibility (windows-latest) | ordered delivery mailbox > persists pending messages and enforces count and byte caps | 15 s |
| 34984871235 | c5b7e6ac5 | test (windows-latest, 2/2) | omob refresh integration > Windows target and command omob-custom.EXE > executable suffix retained | 60 s |
| 34984871235 | c5b7e6ac5 | test (windows-latest, 2/2) | the actual metadata step validates before npm reads and forwards channel outputs | 11 s |
Each job otherwise passes thousands of tests (e.g. 9318 pass / 1 fail, 6003 pass / 2 fail, 3466 pass / 1 fail). PR-CI Windows legs run a reduced set in about 20 s and stay green, so the rotation is only visible on dev push runs.
The one deterministic Windows failure in the same window, the ulw-loop footer goal cache (#8321), is fixed by #8322 and passes at c5b7e6ac5.
Expected
- Tests that spawn real processes or contend on file locks on Windows either get a budget derived from a measured Windows baseline or a deterministic wait on the event they need, so a loaded runner does not turn them into timeouts.
- A Windows push-CI run on
devis green without reruns for a week of normal merge traffic, measured from the run list. - Any test that cannot be made deterministic on the hosted Windows runner is moved to a Windows-specific lane with retries declared in the workflow (
bun test --retry), never skipped.
Scope
In: the six tests above and the residency case owned by #8316 / #8318, plus the workflow-level retry policy for the Windows lanes. Out: PR-CI (already green), non-Windows legs.
Related
#8250, #8294, #8316, #8318, #8321, #8322, #7717 (release gate vs cancelled CI).
Source: code-yeongyu/oh-my-openagent