diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f5dc54bee..81e8cb45c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -315,13 +315,16 @@ jobs: platform: win target: nsis arch: x64 - jobTimeoutMinutes: 120 + # Without a Rust cache this row took 108 minutes on 2026-11-13. + jobTimeoutMinutes: 180 - label: Windows arm64 runner: windows-11-vs2026-arm platform: win target: nsis arch: arm64 - jobTimeoutMinutes: 120 + # Without a Rust cache this row took 113 minutes on a pull request on + # 2026-11-13, and was cancelled at its 120-minute limit on main. + jobTimeoutMinutes: 180 steps: &native_desktop_steps - name: Checkout uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 diff --git a/docs/operations/ci.md b/docs/operations/ci.md index a6cbcc4c8..0d1e0d8b8 100644 --- a/docs/operations/ci.md +++ b/docs/operations/ci.md @@ -140,7 +140,8 @@ the merge. path on every pull request; the job installs `dump_syms` 2.3.9 for it, and Rust Cache keeps the binary in `~/.cargo/bin`. Each matrix row declares its complete-job budget: - 330 minutes for each macOS row and 120 minutes for the other four targets. + 330 minutes for each macOS row, 180 minutes for each Windows row, and 120 + minutes for each Linux row. That budget includes setup, host tests, the macOS optimized exception-recovery probe, and native packaging without shortening any check or test-owned deadline. Debug host tests cannot warm the optimized artifacts. The exception probe is @@ -258,7 +259,7 @@ recently used entries above that. Which workflow saves which entry: A job cancelled by `timeout-minutes` or by a newer run skips the cache post step, so the Check and Test budgets above include a cold compile. Native -desktop keeps its 120-minute and 330-minute row budgets. +desktop keeps its 120-minute, 180-minute and 330-minute row budgets. Six native-desktop entries of about 1.6 GB each are about 10 GB on their own, before Check, Test, Crash smoke, Linux Git, and the setup-vp caches. Eviction diff --git a/scripts/ci-platform-contract.test.ts b/scripts/ci-platform-contract.test.ts index 0a1269a66..fd0451e83 100644 --- a/scripts/ci-platform-contract.test.ts +++ b/scripts/ci-platform-contract.test.ts @@ -332,7 +332,9 @@ describe("cross-platform CI contract", () => { // macOS builds the unoptimized host test graph and the optimized native // package with its symbols. // With a Rust cache the macOS rows took 215 and 228 minutes on 2026-11-13. - const minimum = row.platform === "mac" ? 330 : 120; + // Without a Rust cache the Windows rows took 108 and 113 minutes on the + // same day, and Windows arm64 was then cancelled at 120 minutes on main. + const minimum = row.platform === "mac" ? 330 : row.platform === "win" ? 180 : 120; expect(row.jobTimeoutMinutes, String(row.label)).toBeGreaterThanOrEqual(minimum); } });