ci(windows): raise build timeout for cold cache - #725
Conversation
`Build Windows tests` no longer fails to compile -- 727a6d6 fixed the E0425 that broke the Windows lib-test unit -- but the job now dies at the 45m job timeout instead. In run 32789438873 the Swatinem cache restore took 12s (a miss), setup finished in 52s, and `Build nextest archive` then burned 44m08s before the job timeout killed it mid-compile. Earlier runs only appeared to fit inside 45m because the resolution error aborted the `tracedecay` lib-test unit before codegen. Raise the ceiling to 75m so a genuinely cold cache can complete. The gate still runs and still has to pass; a hung linker will fail loudly. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0175M5Lyn1pPrX9a6CYvwDVn
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: eb51a8a194
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| # killed mid-compile). Earlier runs only "finished" faster because a | ||
| # resolution error aborted the `tracedecay` lib-test unit early. 75m fits | ||
| # a genuinely cold cache while still failing loudly on a hung linker. | ||
| timeout-minutes: 75 |
There was a problem hiding this comment.
Fix the cold-cache build instead of raising its timeout
On a cold Windows cache, this patch only moves the cancellation ceiling from 45 to 75 minutes; the commit explicitly describes 75 minutes as an unobserved estimate, so the job can consume another 30 minutes and still cancel without establishing a passing Windows gate. Keep the existing ceiling and reduce, scope, or cache the Build nextest archive workload using measured cold-run evidence.
AGENTS.md reference: AGENTS.md:L126-L128
Useful? React with 👍 / 👎.
…plan-reopened' into HEAD
5bac377
into
codex/tracedecay-total-redesign-plan-reopened
Summary
Build Windows testson #707 has two distinct causes, one already fixed and one still live. This PR addresses the live one.Cause 1 — the compile error (already fixed on base, not by this PR)
Verbatim from run 32769481844 (and identically in 32749920192):
The helper was gated
#[cfg(all(test, unix))], but its only consumer —mod project_server_capacity_journey_testinsrc/daemon/production_harness.rs:793— is gated plain#[cfg(test)]. On Windows the consumer compiled and the helper did not.This was fixed in
727a6d6c3(PR #720) by widening the gate to#[cfg(test)]. That is correct on both platforms: the body only does aBTreeMaplookup plusWeak::upgradebehind astd::sync::Mutex, with no Unix-specific API, so it compiles and behaves identically on Windows. It is already an ancestor of this base — nothing in this PR re-does it.I audited the same gating class across the tree for other instances. All 16 remaining
cfg(all(test, unix))sites are consistent: six gate an entire test module, and the rest (serve_socket_client, the fiveretirement_reaper_*helpers,mark_endpoint_bound, theDAEMON_INVOCATION_*re-exports) are only reached from call sites that are themselves#[cfg(unix)]-gated item-by-item. This matches the CI evidence — both failing runs reported exactly 3 errors and onlytracedecay(lib test) failed to compile; every other crate built on Windows.Cause 2 — the 45-minute job timeout (what this PR fixes)
With the compile error gone, the job stopped failing and started getting cancelled. Step timings from the newest run, 32789438873 job 97628697287, on base SHA
9a526da4f:Cache Windows Rust build outputsBuild nextest archiveJob start
23:39:31+timeout-minutes: 45=00:24:31— exactly when the step was cut. No step failed; the job timeout fired.The earlier runs only appeared to fit inside 45m because
E0425is a resolution error: it aborted thetracedecaylib-test unit before codegen, so those runs never paid for the full build. Fixing the compile error removed that accidental shortcut and exposed that a cold-cache full-workspacenextest archivedoes not fit in 45m.This still cascades identically:
Test Windowsfails in seconds on the unsatisfied dependency and all fiveTest Windows shard {1..5}/5jobs skip, so the Windows suite stays entirely unexecuted.Change: raise
windows-build.timeout-minutesfrom 45 to 75, with the measurement recorded in the comment.This does not disable, skip, or
continue-on-errorthe job — the gate still runs and still has to pass, and a hung linker still fails loudly. It only gives a cold cache room to finish. The existing comment shows the same ceiling was already moved 30 → 45 for this reason; the 45 was simply still too low once the build ran to completion.Verification
cargo check --workspace --all-targets --lockedon Linux: clean,Finishedin 5m38s, 0 errors. This PR touches only YAML, so no Rust code is affected on either platform.--target x86_64-pc-windows-msvcfails in thetree-sitter-*C build scripts (no MSVC C headers locally).--target x86_64-pc-windows-gnufails inort-sys(no prebuilt ONNX Runtime forwindows-gnu; CI usesmsvc, which does have one).The real confirmation is the next wide CI run:
Build Windows testsshould complete rather than being cancelled at 45m, and the five shards should finally execute. If the archive step turns out to need more than 75m even warm, that is a build-time problem to attack directly rather than by raising the ceiling again.🤖 Generated with Claude Code
https://claude.ai/code/session_0175M5Lyn1pPrX9a6CYvwDVn