ci(windows): dev push CI fails a rotating Windows test by timeout on every run, blocking the publish gate

Author: code-yeongyuCreated Sep 15, 2026Updated Sep 16, 2026
Labelsbug

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 dev is 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