Repository navigation
CI performance dashboard #1182
Description
Maintained by the CI profiler routine, which runs every 4h. Each run replaces this body and carries the history rows over.
Headline (run 2026-10-30 08:17 UTC)
Window: slice 04:16 → 08:17 (24h numbers carried where the slice has no samples). Another quiet, healthy slice: 0 merges, 0 merge_group or push runs, 17 full PR runs, all green on the first attempt. Depot healthy: 0 lost hosts, 1 boot over 15 s.
Since the last run (04:16 → 08:17)
- Merge queue: idle since Fix stray files breaking vendored Gradle (#656) #1819 at 22:47 (9.5 h). No enqueues and no merge_group runs.
- PR feedback (created →
ci-ok, 17 green full runs): p50 4.80 / p90 4.90 (4.55–5.23). No outliers. The 10-30 04:16e2e_vendor_pypi_buildslow-network leg didn't recur. - Depot health: queue p50/p90 1 s / 1 s; boot max 26 s, 1 of ~411 Depot jobs over 15 s; 0 lost hosts. CI perf (settings): slow Depot 16-core hosts since 10-13 15:20 add ~1.5–2.5 min to the merge-queue critical path (~0.6k Linux job-min/day) #1512's 10-29 evening episode hasn't come back.
- Nightly (run) red on 2 test shards. This is a correctness failure, not a CI-time one:
test (macos-latest, 2)failed one2e_golang_workspace_build(job), which took 157 s of a 353 s build. The ci-janitor PR Fix Go GOWORK test failing on macOS nightly #1894 (Go GOWORK on macOS) is open for it.test (windows-latest, 1)also failed (job); Fix Maven home tests failing on Windows nightly #1852 (Maven home on Windows) is still open.- Cost: 99 L / 56 W / 44 M. macOS queue p50 4 s.
- CI: Let a dispatch run one OS only (#1818) #1820 still delivering: the one macOS-only
workflow_dispatch(run, onagent/fix-ci-test-env-guard) cost 1.8 L / 0 W / 77 M, vs 194 L / 100 W / 83 M for a full-matrix dispatch before. It failed on that branch's own change (test (macos-latest, 2)and ane2e_redirect_npm_buildmacOS leg). - Job-min in slice: 590 L / 56 W / 121 M. That's 17 full PR runs (33.5–35.4 L each) and 24 one-job stub runs, plus the nightly and the dispatch.
- No new issues; no comments. Nothing in the slice clears the filing bar, and there's nothing new on any open issue.
24h table
| metric | 24h |
|---|---|
| PRs merged | ~23 (all on 10-29: 21 in the 12:22–16:30 burst, #1828 20:19, #1819 22:47; 0 since) |
merge_group created → ci-ok (success) |
4.90 / 5.07 healthy (n=21, carried) |
PR run created → ci-ok (green full runs) |
4.80 / 4.90 (n=17, this slice) |
push to main created → ci-ok |
3.36 / 4.12 healthy (carried) |
| Linux queue wait p50 / p90 | 1 s / 1 s; slow-start ~0% |
| macOS queue wait p50 / p90 | 3 s / 7 s (n=33); Windows no samples beyond the nightly |
| Job-min/day (Linux / Windows / macOS) | ~5.9k / 0.4k / 0.12k (est., carried; ~1.8k L of it is the 10-29 outage excess, which drops out at the next run) |
Merge-queue settings: build 5 / merge 5, min 1, min wait 5 min, ALLGREEN, timeout 90, SQUASH (ruleset read this run). Unchanged.
| run (UTC) | merges/24h | MQ enq→merge p50/p90 (min) | mg CI success p50 | PR push→ci-ok p50/p90 | mac queue p50/p90 | linux queue p50/p90 | job-min/day L/W/M |
|---|---|---|---|---|---|---|---|
| 2026-10-30 08:17 | ~23 PRs merged in 24h (0 since 22:47; queue idle 9.5 h) | — since 04:16 (none); 12.3 / 42.2 (carried) | none since 22:39; 4.90 / 5.07 healthy (carried) | 4.80 / 4.90 (n=17 green full runs, 4.55–5.23, all first attempt) | 3 s / 7 s (n=33, nightly + 1 macOS-only dispatch, max 8 s) | 1 s / 1 s queue; Depot boot max 26 s, 1/411 over 15 s; 0 lost hosts | ~5.9k / 0.4k / 0.12k (est., carried); since 04:16 590 L / 56 W / 121 M (PR 590 L in 17 full runs + 24 stubs; nightly 99 / 56 / 44 red; dispatch 2 / 0 / 77) |
| 2026-10-30 04:16 | ~23 PRs merged in 24h (0 since 22:47; queue idle) | — since 00:17 (none); 12.3 / 42.2 (carried) | none since 22:39; 4.90 / 5.07 healthy (carried) | 4.91 / 5.72 (n=12 green full runs, 4.65–5.72; 1 outlier at 12.90 on a slow-network e2e_vendor_pypi_build leg) |
— (no macOS jobs in slice; 0.05 / 0.05 carried) | 1 s / 1 s queue (n=300, max 2 s); slow-start 0% (0/276, p50 5 s, p90 6 s, max 8 s); 0 lost hosts | ~5.9k / 0.4k / 0.12k (est.); since 00:17 439 L / 0 W / 0 M in 12 full PR runs |
| 2026-10-30 00:17 | ~31 PRs merged in 24h (2 since 20:20: #1828 20:19, #1819 22:47; #1819 evicted twice by lost Depot hosts) | since 20:20 13.4 (#1828) and 8.3 (#1819 last enqueue; 153 from its first); 24h 12.3 / 42.2 (carried) | 12.98 (#1828, boots 201–393 s) and 7.52 (#1819, 22:39); 2 failed/cancelled groups on lost hosts; 4.90 / 5.07 healthy (carried) | 4.63–4.97 after 23:00 (n=5); 23.5–36.8 for the 8 PR runs that needed 2–4 attempts, 20:10–21:24 | — (no macOS jobs in slice; 0.05 / 0.05 carried) | 1 s / 2 s queue; slow-start 92% at 20:xx (boot p50 213 s, max 591 s), 59% 21:xx, 18% 23:xx, 0% 00:xx; 61 lost hosts 20:15–21:30 (707 L job-min, 0 steps) | ~5.5k / 0.25k / 0.1k (est.); since 20:20 2,650 L / 174 W / 0 M in 23 non-stub CI runs (~1,800 L of it outage excess) |
| 2026-10-29 20:20 | ~32 PRs merged in 24h (0 since 16:30; #1828 and #1819 in the queue at 20:05/20:14) | — since 16:30 (none merged); 12.3 / 42.2 (carried) | in-flight #1828 group ≥14 min at 20:20 (boots 201–393 s); 4.90 / 5.07 (carried) | 5.0 → 9.1 created→ci-ok (4 green full runs: 5.06, 5.15, 20.0, 9.06; the last two on 100%-slow hosts) |
— (no macOS jobs in slice; 0.05 / 0.05 carried) | 1 s / 1 s queue; slow-start 100% since ~19:30 (69/69 Depot jobs in 3 runs, boot p50 56→139→231 s, max 393 s) plus 6 lost hosts (no step for 10–16 min, then failed) | ~4.8k / 0.25k / 0.12k (est.); since 16:30 ~420 L in 4 full PR runs + 1 lost-host run + dispatch 79 L/W |
| 2026-10-29 16:30 | 33 PRs merged (21 since 12:22, burst 13:19–15:04; 1 CI eviction #1813 on rubygems.org, 1 clippy fail #1826) | 12.3 / 42.2 (n=21; last-enqueue 7.5 / 15.2; entries 10–16 waited 4.8–10.9 for a slot) | 4.90 / 5.07 (n=21, 4.52–6.48; Gradle hosted leg last in 17/21) | 4.90 / 6.22 (n=11, 4.63–7.47) | — (no macOS jobs in slice; 0.05 / 0.05 carried) | 1 s / 2 s queue (n=1,152, max 6 s); slow-start 11% (130/1,152, clustered in 7 runs) | ~5.1k / 0.26k / 0.12k (est.); since 12:22 1,522 L / 79 W / 0 M |
| 2026-10-29 12:22 | 32 PRs merged in window (0 since 22:56; queue idle 13.4 h with 11 PRs Ready for review) |
— since 08:17 (none); 7.35 / 8.02 (carried) | none since 22:49; 6.53 / 7.42 (carried) | 4.85 / 5.03 (n=7 green full runs, 4.75–5.03) | — (no macOS jobs in slice; 0.05 / 0.05 carried) | 0.02 / 0.03 queue (n=217, max 0.03); slow-start 0% (0/175, p50 5 s, max 10 s) | ~3.5k / 0.1k / 0.03k (est., carried); since 08:17 ~245 L (7 full PR runs at 33.6–35.2 L each) |
| 2026-10-29 08:17 | 32 PRs merged (0 since 22:56; queue idle) | — since 04:16 (none); 7.35 / 8.02 (carried) | none since 22:56; 6.53 / 7.42 (carried) | 5.03 / 5.40 (n=8 green full runs, 4.63–5.40) | 0.05 / 0.05 (nightly + 2 dispatches, n=12) | 0.02 / 0.02 queue (n=548, max 0.05); slow-start 0% (0/523, p50 5 s, p90 6 s, max 11 s) | ~3.5k / 0.1k / 0.03k (est., carried); since 04:16 660 L / 150 W / 119 M (PR 370 L in 10 full runs; nightly 96/50/36 red, Windows; 2 dispatches 194/100/83) |
| 2026-10-29 04:16 | 32 PRs merged (0 since 00:16; queue idle since 22:56) | — since 00:16 (none); 7.35 / 8.02 (carried) | none since 22:56; 6.53 / 7.42 (carried) | 4.79 / 5.12 (n=12 green full runs, 4.45–6.48) | — (no macOS jobs in slice; 0.03 / 0.05 carried) | 0.02 / 0.02 queue (n=300, max 0.12); slow-start 0% (0/276, p50 5 s, p90 6 s, max 8 s) | ~3.5k / 0.1k / 0.03k (est., carried); since 00:16 PR 427 L in 12 full runs plus 10 stubs |
| 2026-10-29 00:16 | 32 PRs merged (10 since 20:16: #1785, #1786, #1789, #1779, #1787, #1797, #1792, #1790, #1764, #1765; plus #1763 at 20:19; 0 evictions) | since 20:16 7.35 / 8.02 (n=10, 5.37–8.47; max 4 entries in flight, no slot wait) | 6.53 / 7.42 (n=10, 4.85–7.90; coverage (2) last in 9/10) |
5.67 / 7.47 (n=10 green full runs, 4.97–8.77) | — (no macOS jobs in slice; 0.03 / 0.05 carried) | 0.02 / 0.02 queue (n=665, max 0.05); slow-start 47% (291/616, p50 10 s, p90 43 s, max 125 s) | ~3.5k / 0.1k / 0.03k (est.); since 20:16 mg 447 L / 27 W in 10 runs, push 118 L in 9, PR 595 L in 21 |
| 2026-10-28 20:16 | 23 PRs merged (1 since 16:18: #1748; 0 evictions) | since 16:18 12.3 (n=1, #1748); burst 9.1 / 13.6 (carried) | 11.48 (n=1, #1748: release-readiness booted 307 s, e2e fan-out last at 11.38); burst 5.08 (carried) |
7.6 / 10.7 (n=12 green full runs, 5.0–13.0) | — (no macOS jobs in slice; 0.03 / 0.05 carried) | 0.02 / 0.02 queue (n=450, max 0.03); slow-start 62% (275/447, p50 35 s, p90 144 s, max 329 s) | ~3.5k / 0.1k / 0.03k (est.); since 16:18 mg 69 L, push 21 L, PR ~1,040 L in 18 runs |
| 2026-10-28 16:18 | 23 PRs merged (20 since 12:17, burst 13:56–14:56; 0 evictions) | 9.1 / 13.6 (n=15 timelines; first 5 entries 5.3–5.8, entries 6–13 9.1–13.8 waiting for a slot) | 5.08 / 5.35 (n=20, 4.58–6.60, all first-attempt green; coverage (2) last in 12/20, Gradle hosted leg in 7/20) |
5.91 / 7.07 (n=8 green full runs, 4.90–7.88) | — (no macOS jobs in slice; 0.03 / 0.05 carried) | 0.02 / 0.02 queue (n=810, max 0.15); slow-start 23% (181/779 Depot, p50 6 s, p90 31 s, max 104 s) | ~3.0k / 0.1k / 0.03k (est.); since 12:17 mg 779 L / 54 W in 20 runs, push 95 L in 11, PR 325 L in 8 full runs |
| 2026-10-28 12:17 | 12 PRs merged (0 since 08:17; queue idle since 21:16) | — since 08:17 (none); 24h ≈6.8 / 9.3 (carried) | none since 21:16; 24h ≈5.1 / 7.1 (carried) | 5.13 / 7.08 (n=7 green full runs, 4.73–7.08; the 7.08 is a slow coverage (2) on a test-adding PR) |
— (no macOS jobs in slice; 0.03 / 0.05 carried) | 0.02 / 0.02 queue (Depot, n=185, max 0.02); slow-start 3% (5/185, p50 5 s, p90 6 s, max 29 s) | ~2.3k / 0.05k / 0.03k (est.); since 08:17 PR 247 L in 17 runs (7 full, 10 stubs) |
| 2026-10-28 08:17 | 12 PRs merged (0 since 04:16; queue idle since 21:16) | — since 04:16 (none); 24h ≈6.8 / 9.3 (carried) | none since 00:16; 24h ≈5.1 / 7.1 (carried) | 4.90 / 6.25 (n=21 green full runs, 4.53–11.0; the 11.0 waited 5.2 min on a stuck cancel) | 0.03 / 0.05 (nightly, n=4) | 0.02 / 0.02 queue (Depot, n=687, max 0.03); slow-start 8% (45/582, p50 5 s, p90 11 s, max 35 s) | ~2.6k / 0.05k / 0.03k (est.); since 04:16 PR 790 L in 23 runs (incl. 129 for #1768 ×3), nightly 94 L / 53 W / 28 M (failed, bun_lockb) |
| 2026-10-28 04:16 | 12 PRs merged (0 since 00:16; queue idle) | — since 00:16 (none); 24h ≈6.8 / 9.3 (carried) | none since 00:16; 24h ≈5.1 / 7.1 (carried) | 4.83 / 6.22 (n=7 green full runs, 4.67–6.22; 1 hatch-flake re-run at 8.57) | — (no macOS jobs in slice) | 0.02 / 0.02 queue (Depot, n=300, max 0.03); slow-start 0% (0/300, p50 5 s, p90 6 s, max 10 s) | ~2.6k / 0.1k / 0.07k (est., carried); since 00:16 PR 404.6 L in 11 full runs (incl. 33.8 re-run) |
| 2026-10-28 00:16 | 12 PRs merged (2 since 20:16: #1744 20:57, #1648 21:16 on its third enqueue; 0 evictions in the slice) | since 20:16 8.8 (#1744) and 5.5 (#1648's last enqueue; 87.7 from its first); 24h ≈6.8 / 9.3 | 8.12 (#1744, rustls bump, coverage (2) last at 7.97) and 5.07 (#1648); 24h ≈5.1 / 7.1 |
6.5 / 7.6 (n=6 green full runs, 5.05–7.63; #1747's hosted ci-ok run 5.05) |
— (no macOS jobs in slice) | 0.02 / 0.02 queue (Depot, n=219, max 0.03); slow-start 36% (79/219, p50 6 s, p90 39 s, max 80 s) | ~2.6k / 0.1k / 0.07k (est., carried); since 20:16: mg 86.4 L in 2 runs, push 30.3 L in 2 runs, PR 254.5 L in 6 full runs |
| 2026-10-27 20:16 | 17 PRs merged (1 since 16:17: #1702 at 20:05; #1648 evicted twice, 19:57 and 20:18, on coverage (1) mode_migration_pypi) |
since 16:17 9.3 (n=1, #1702, which waited behind #1648's failing group); 24h 6.1 / 7.6 today (carried) | 7.08 (n=1, #1702: ci-ok waited 2.1 min for a Depot boot after the last job ended at 4.93); 24h 5.13 / 6.3 (carried) |
9.80 (n=1 green full run, 17:07, with a 2.6-min ci-ok boot) |
— (no macOS jobs in slice) | 0.02 / 0.02 queue (Depot, n=172, max 0.03); slow-start 64% (110/172, p50 31 s, p90 91 s, max 179 s) | ~2.6k / 0.1k / 0.07k (est., carried); since 16:17: 2 mg runs + 2 cancelled ≈ 125 L, push 16.2 L, PR ≈ 175 L in 3 full runs |
| 2026-10-27 16:17 | 16 PRs merged (9 today 13:07–14:58: #1738, #1734, #1735, #1740, #1733, #1739, #1736, #1742, #1741; 7 on 10-26 after 16:17) | today 6.1 / 7.6 (n=9, 5.2–8.5, 0 evictions); 10-26 post-burst 9.1 / 10.2 | 5.13 / 6.3 (n=9, 4.75–6.68; coverage (2) last in 7/9) |
green full runs 4.87 (n=2, both 4.87; 2 more red at 4.68 / 6.40, PDM unearth before #1738 reached the branch) |
— (no macOS jobs in slice) | 0.02 / 0.02 (Depot, n=441, max 0.22); slow-start 16% of mg jobs (36/231) | ~2.6k / 0.1k / 0.07k (est.); since 12:17: mg 343 L / 24.5 W in 9 runs, push 79.7 L in 8 runs, PR 147.4 L in 4 full runs |
| 2026-10-27 12:17 | 25 PRs merged (0 since 18:54; queue idle 17.4 h) | — since 08:16 (none); burst 43.9 / 50.0, post-burst 9.1 / 10.2 (carried) | none since 18:54; 6.55 / 9.14 (carried) | 6.1 (n=4 full runs, 5.68 / 6.07 / 6.12 / 6.38; 2 delayed ~1.3 min behind a superseded run; coverage (2) last in 3/4) |
— (no macOS jobs in slice; 0.04 / 0.05 carried) | 0.02 / 0.02 (Depot, n≈230, max 0.35) | ~2.9k / 0.08k / 0.07k (est.); since 08:16 PR 285 L in 8 full runs (4 red on PDM unearth) |
Open ci-perf issues by ROI
ROI on one scale: (thousands of job-min/day weighted Linux ×1, Windows ×2, macOS ×3, plus 1 per critical-path or PR-latency minute) × confidence ÷ effort (S=1, M=2, L=3).
| ROI | issue | saving | status |
|---|---|---|---|
| ~14 | #1670 (settings) 90-min check timeout let a stuck check freeze main for 77 min | ~46 min sooner recovery per stuck-check incident | No incident since. Needs a repo admin. |
| ~11 | #1248 (settings) merge-queue build concurrency | 10-29 burst: 7 entries waited 4.8–10.9 min for a slot (48.8 entry-min); burst merge p50 12.3 vs ~5.5 for the first 5 | Commented 16:30 with the burst numbers and the cancel-cost tradeoff (#1813's failure cancelled 4 groups, ~144 L). Needs a human decision. |
| ~4 | #1512 (settings) slow / lost Depot hosts | ~1.5–2.5 min per affected run | Worst episode yet on 10-29 20:15–21:30 (61 lost hosts, ~1,800 L job-min excess, #1819 evicted twice; comment). Healthy since 00:00: 0/276 slow starts and 0 lost hosts 00:17–04:16. Needs Depot, or the DISABLE_DEPOT_RUNNERS kill switch during an episode. |
| ~1 | #1720 (coverage tradeoff) Windows-only regressions reach main | avoids ~0.2–0.3k job-min of fix churn per regression | agent:needs-human. #1814 (Windows nightly cargo-home tests) merged 13:26; the next nightly shows whether Windows is green. |
This run (08:17): filed none, commented on none, closed none.
Open ci-perf / ci-janitor PRs: #1852 Maven home tests on the Windows nightly (open), #1854 retry pinned bundler installs in the e2e legs (open), #1890 annotate failing tests in the macOS/Windows test legs (open), #1894 Go GOWORK test on the macOS nightly (open; it fixes this run's macOS nightly failure). Also open: ci-janitor issue #1660 (Depot hosts lost mid-job).
Merged ci-perf / ci-janitor PRs (last 7 days) and measured effect
| PR | merged | before → after |
|---|---|---|
| #1828 retry CI bundler installs on rubygems.org blips (ci-janitor) | 10-29 20:19 | Robustness; too early to call (logs not read this run). Before: 1 rubygems.org blip evicted #1813 (10-29). |
| #1806 balance coverage shards on Linux test times (ci-perf, self-picked) | 10-29 13:26 | Delivered, small as expected. coverage (2) 4.52–4.85 (p50 4.63, n=7) before → 3.93–4.60 (p50 4.25, n=26) after; the shard gap fell from 1.0–1.4 to ~0.3–0.5 min. coverage (2) is last in 2/21 mg runs (was 6/7 of PR runs); the Gradle hosted leg now sets ci-ok. mg ci-ok p50 4.90 (n=21) vs 4.93–5.07 in the 3 pre-#1806 groups of the same burst: about −0.1 min, matching the ≤0.3–0.5 ceiling noted before. |
| #1820 let a dispatch run one OS only (#1818) | 10-29 13:45 | Delivered. The two Windows dispatches since (run, run) ran only clippy + release-readiness on Linux: ~6 L / 80 W / 0 M each, vs 194 L / 100 W / 83 M per dispatch before. That saves ~190 L and ~80 macOS job-min per dispatch. |
#1803 retry setup-python on a transient download failure (ci-janitor) |
10-29 13:26 | 0 Setup Python hangs in 61 runs since 12:22 (was 1 in ~200 steps on 10-28). Holding. |
| #1814 fix cargo-home tests on the Windows nightly (ci-janitor) | 10-29 13:26 | Not yet green: in the 10-30 nightly, test (windows-latest, 1) still failed. #1852 (Maven home) is the open follow-up. |
#1797 release-readiness on a hosted runner (#1795) |
10-28 21:56 | Delivered. In the 5 mg runs after it, release-readiness booted in 0–1 s and ran 0.10–0.15 min, and coverage started at 0.17–0.23 even while Depot slow-start hit clippy (boot 28–34 s). In the 5 mg runs just before it, slow release-readiness boots (30–55 s) pushed coverage to 0.77 and 1.18. 11 PR runs since: coverage start 0.20–0.30. mg p50 did not drop (6.53) because coverage (2) itself ran on slow hosts (see #1512). |
#1747 ci-ok on a GitHub-hosted runner (#1745) |
10-28 14:02 | Delivered. In 31 runs with hosted ci-ok since, ci-ok finished 0.07–0.12 min after the last job (queue 1–3 s), while Depot slow-start was 23% (p90 31 s, max 104 s). The 8 Depot ci-ok runs in the same burst, before the change reached them, took 0.12–0.17. Before #1747, ci-ok waited up to 2.6 min in slow-start episodes. #1745 is closed. |
| #1760 fix ETXTBSY flake in the hatch version-gate test (ci-janitor) | 10-28 14:02 | Holding: 0 hatch failures in 70 CI runs since (32 mg, 21 push, 17+ PR). |
| #1775 nightly vlt migration tests for eject (#1774, ci-janitor) | 10-28 14:01 | The next nightly (10-29) will show it. |
| #1780 retry the Deno install in the deno test image (ci-janitor) | 10-28 14:56 | Robustness; 0 Deno install failures since (few runs). |
| #1734 tiny e2e capstones on 3 runners instead of 9 (#1732) | 10-27 13:13 | Delivered. merge_group runs went from 50 to 44 jobs and from 36.5 to 34.2–35.1 Linux job-min per run (n=6 that add no tests), about −1.5 per run (the PR runs had shown −1.3 to −1.7). Capstones are off the critical path; mg ci-ok p50 5.13. |
| #1740 retry yarn classic e2e installs on transient DNS (ci-janitor) | 10-27 13:17 | 0 yarn-classic failures in 27 full runs since (17 + 10 this slice, all green). Holding. |
#1738 pin unearth<0.19 for the PDM e2e |
10-27 13:13 | Delivered. 0 PDM failures on main-based runs since; before, 4 of 8 PR runs (08:16–12:17) were red on it. |
| #1730 cap hung rust-cache restores at 5 min (ci-janitor) | 10-26 18:12 | Too early to call: 0 hangs in ~10 runs since. Before: 3 hangs of 14.2–15.6 min in one 72-min burst (~330 queue entry-min). |
| #1708 stop late draft runs cancelling real PR CI (ci-janitor) | 10-26 15:10 | Holding: 0 draft-run cancels in the 20 PR CI runs after 15:10 (the 1 cancelled PR run was a superseding push on #1730). |
| #1716 Pipenv pylock test follows uv (ci-janitor) | 10-26 15:14 | Robustness; 0 Pipenv leg failures in 30 merge_group runs since. |
| #1710 Windows nightly yarnrc path (#1689) | 10-26 15:14 | Delivered. In the 10-27 nightly, test (windows-latest, 1) passed in 21.32 min and shard 2 in 17.22 (run), after the 10-24, 10-25 and 10-26 nightlies failed on shard 1. The nightly is still red, but only on the unrelated PDM unearth break. |
| #1704 shard coverage across two runners (ci-perf, self-picked from dashboard) | 10-24 02:38 | Delivered, beat its estimate. merge_group ci-ok with the shards: 4.47, 4.48, 4.93 (n=3; run, run, run) vs 6.18–6.47 after #1697 and before #1704: about −1.8 min per merge (expected −1.5). Shards take 3.78–4.62 min (was one 5.88–6.17 job). Cost +0.7–1.4 Linux job-min per mg run (35.9–36.6 vs 35.2), less than the +4 expected. Push to main ci-ok 3.03 / 3.08 (was 3.12–3.27). PR push→ci-ok since 04:16: 4.45–4.95 (n=3) vs 6.37 p50 before. |
| #1697 Gradle agent suites in their own e2e leg (self-picked from dashboard) | 10-23 22:18 | Delivered. The Gradle legs now take 2.82–2.98 and 1.77–1.97 min (was 4.58–4.92 combined, 7.40 on a slow host). ci-ok in the 3 merge_group runs that include it: 6.18 / 6.23 / 6.47 vs 6.50–7.58 on fast hosts before (about −0.3 to −1 min). Gradle is off the critical path; coverage now sets it. |
| #1682 start coverage and e2e-build without waiting on clippy (#1681) | 10-23 14:54 | Delivered. In merge_group runs, coverage now starts at 0.20–0.30 min (was 1.43–1.47). ci-ok with #1682: 6.50, 6.73, 7.35, 7.58, 10.03 (n=5; p50 7.35, the 10.03 on 100%-slow hosts) vs 7.53–8.15, p50 7.76 before. On fast hosts ~1.1 min saved against 1.3 expected. |
| #1686 Windows nightly path asserts (ci-janitor) | 10-23 14:38 | Partly delivered. In the 10-24 nightly Windows shard 2 passed, but shard 1 still failed on -p socket-patch-core --lib (job). Follow-up #1710 (#1689) is open and green in dispatch. |
| #1690 gem old-Bundler legs (follow-up to #1687) | 10-23 14:54 | Delivered. No gem leg failures in the 10-24 nightly (its only failure was Windows shard 1). |
| #1692 compatibility workflows off Node 20 pins (ci-janitor) | 10-23 14:47 | Maintenance; no CI-time effect expected. |
Method notes
-
GraphQL and
search/issuesare blocked in this environment. Merge-queue state comes from REST timelines of merged PRs. "Enqueue → merge" uses the PR's firstadded_to_merge_queueevent in the window. "Slot wait" = enqueue → the PR's first merge_groupCIruncreated_at. -
Jobs are fetched with
filter=all. Queue wait = jobstarted_at−created_at; skipped jobs are excluded. "Slow start" = jobstarted_at→ first stepstarted_atover 15 s, Depot jobs only. -
Critical path = merge_group run
created_at→ci-okcompleted_atof the latest attempt. -
"Discarded" merge_group runs are every
CIrun except each merged PR's last one. -
Hang cost (~330 entry-min) = for each entry held, its merge time minus when its own group run finished (or, for the Fix Deno global npm tools missed by -g (#444) #1719 hang, minus ~15:30, when the held groups' runs had finished).
-
Run 10-26 20:16: 300 of 313 runs listed (3-page cap), and jobs for all 108
CIruns. "PR full runs" leave out 1-job stub runs (ci-okin under 1 min). -
Runs 10-27 00:16, 04:16, 08:16 and 12:17: the queue was idle, so the 24h merge and merge_group numbers are carried from 20:16. Only the new 4-hour slice was fetched each time. The 12:17 run dropped the 10-24 12:16 history row (18-row cap).
-
Run 10-27 16:17: 197 runs in the window (2 pages). Jobs fetched for every
CIrun since 12:17. The 24h merge numbers combine the 10-26 post-16:19 slice (carried) with today's 9 merges. The oldest history row (10-24 16:16) was dropped (18-row cap). -
Run 10-27 20:16: 157 runs in the window. Jobs were fetched for every
CIrun since 16:17, plus all merge_group/pushCIruns in the window, to getci-okstart gaps (started_at→ first step). The oldest history row (10-24 20:16) was dropped (18-row cap). -
Run 10-28 00:16: 190 runs in the window. Jobs were fetched for every non-stub
CIrun since 20:16. The 24h enqueue→merge p50 combines the 9 carried 13:07–14:58 values (5.2–8.5, p50 6.1) with Build(deps): Bump zod from 3.25.76 to 4.6.6 in /npm/socket-patch #1702, Build(deps): Bump rustls from 0.23.45 to 0.23.46 #1744 and fix: vendor hosted patches directly from lockfiles #1648 (last enqueue); it's approximate. The oldest history row (10-25 00:16) was dropped (18-row cap). -
Run 10-28 04:16: 227 runs in the window (3 pages). No merge_group or push
CIruns since 00:16, so all 24h merge-queue numbers are carried. Jobs were fetched for the 11 completed full PRCIruns since 00:16. The oldest history row (10-25 04:16) was dropped (18-row cap). -
Run 10-28 08:17: 283 runs in the window (3 pages). No merge_group or push
CIruns since 00:16, so all 24h merge-queue numbers are carried. Jobs were fetched for the 24 non-stubCIruns since 04:16. The oldest history row (10-25 08:15) was dropped (18-row cap). -
Run 10-28 12:17: 288 runs in the window (3 pages). No merge_group or push
CIruns since 10-27 21:16, so all 24h merge-queue numbers are carried. Jobs were fetched for the 17CIruns since 08:17. The oldest history row (10-25 12:15) was dropped (18-row cap). -
Run 10-28 16:18: 300 of 369 runs listed (3-page cap; the list reaches back to 10-27 22:41, so the 10-27 20:05–21:16 merges are carried). Jobs were fetched for all 39 non-stub
CIruns since 12:17 (20 mg, 11 push, 8 PR) and timelines for 15 of the 20 merged PRs (~60 REST requests). Enqueue → merge p50/p90 is over those 15. The oldest history row (10-25 16:15) was dropped (18-row cap). -
Run 10-28 20:16: 300 of 417 runs listed (3-page cap, back to 04:51). Jobs were fetched for all 20 non-stub
CIruns since 16:18 and timelines for Keep Go hosted pins after go mod tidy drops the zip line #1748 and Read Go workspaces the way go builds them #1763. The CI perf: release-readiness — 10-second gate waits up to 5 min for a Depot boot in front of coverage and e2e (~1–3 min per run in slow-start periods) #1795 replay keeps each run's measuredclippyend and per-job boots and putsrelease-readinessat its own work time + 6 s; jobs needingclippytoo move only as far asclippyallows. The oldest history row (10-25 20:15) was dropped (18-row cap). -
Run 10-29 00:16: 300 of 463 runs listed (3-page cap, back to 10-28 13:44, so all 32 merge_group runs since the 13:56 burst are in it). Jobs were fetched for all 31 non-stub
CIruns since 20:16, timelines for the 10 PRs merged since 20:16, and 1 job log. GraphQL is still blocked (403). ~50 REST requests. The oldest history row (10-26 00:16) was dropped (18-row cap). -
Watch item, not filed: one uv/composer e2e leg on a PR (job) spent 18.7 min in
Setup Python(3.12.10isn't in the Depot tool cache, so every leg downloads it in 5–8 s; this one hitgetaddrinfo EAI_AGAIN raw.githubusercontent.comat 3.5 min and then hung until 19.3 min). It cost the PR ~20 min and a 24-min re-run. That's 1 of 200Setup Pythonsteps in 4 h. A steptimeout-minutesplus a retry, like the rust-cache cap (Cap hung rust-cache restores so they cannot stall the merge queue #1730), would bound it. It'll be filed if it recurs. -
Not filed: coverage shard balance.
coverage (2)'s test step still runs 241–264 s vs 161–179 s for shard 1 on fast hosts, but the Gradle e2e leg ends at ~4.9–5.0 min, so balancing gives at most ~0.3–0.5 min on fast hosts. Balance coverage shards on measured test time #1768's retry with a Linux timing sample stays a low-ROI option. -
Run 10-29 04:16: 300 runs listed (3-page cap, back to 10-28 14:06). No merge_group or push
CIruns since 00:16, so all 24h merge-queue numbers are carried. Jobs were fetched for the 12 non-stubCIruns since 00:16 (~25 REST requests, no job logs). The oldest history row (10-26 04:16) was dropped (18-row cap). -
Watch item, not filed: one
e2e-buildtook 2.67 min (run), vs 1.12–1.40 in the other 11 runs, and it pushed that run'sci-okto 6.48. It'll be filed if it recurs. -
Run 10-29 08:17: 300 of 448 runs listed (3-page cap, back to 10-28 14:50). No merge_group or push
CIruns since 10-28 22:56, so all 24h merge-queue numbers are carried. Jobs were fetched for the 13 non-stubCIruns since 04:16, plus one 7-dayworkflow_dispatchlisting for CI perf: workflow_dispatch of CI — Windows-only janitor fixes re-run the full Linux + macOS nightly matrix (~100 min/day, ~30 macOS) #1818 (~25 REST requests, no job logs). GraphQL is still blocked (403). The oldest history row (10-26 08:18) was dropped (18-row cap). -
Run 10-29 12:22: 300 of 463 runs listed (3-page cap, back to 10-28 17:35) plus 2 pages of merge_group runs (all 128 in the window). No merge_group or push
CIruns since 10-28 22:56, so the 24h merge-queue latency numbers are carried. Jobs were fetched for the 7 full PRCIruns since 08:17 (~20 REST requests, no job logs). GraphQL is still blocked (403). The oldest history row (10-26 12:33) was dropped (18-row cap). -
Run 10-29 16:30: 300 of 500 runs listed (3-page cap, back to 10-29 02:26) plus 1 page of merge_group runs (all 43
CIruns in the window). Jobs were fetched for all 61CIruns since 12:22 and timelines for the 21 PRs merged since (~95 REST requests, 1 job log). GraphQL is still blocked (403). The 24h job-min estimate sums the last 6 slice totals. "Slot wait" excludes Fix Maven reactor VEX over a base-version module (#584) #1802/Fix vendored gems on CRLF Gemfile.lock (#1808) #1811, which were dropped at 13:40 without a group run. The oldest history row (10-26 16:19) was dropped (18-row cap). Merged-PR rows from 10-22 aged out (7-day window). -
Run 10-29 20:20: 300 of 488 runs listed (3-page cap, back to 10-29 07:09). 25
CIruns since 16:30 (21 PR, 2 mg in flight, 2 dispatch). Jobs fetched for the 4 green full PR runs, the lost-host PR run, the dispatch and the in-flight Retry CI bundler installs on rubygems.org blips #1828 group (~15 REST requests, 1 job log). GraphQL is still blocked (403). No merges in the slice, so merge latency is carried. A PRcoverage (2)job spent 1,122 s inRun tests with coverage(vs 255 s); single PR (Read the cargo config chain once (#1832) #1849, cargo config chain), not filed. The oldest history row (10-26 20:16) was dropped (18-row cap). -
Run 10-30 00:17: 300 of 469 runs listed (3-page cap, back to 10-29 13:20). Jobs were fetched for all 23 non-stub
CIruns since 20:00 (filter=all), plus timelines for Retry CI bundler installs on rubygems.org blips #1828 and Fix stray files breaking vendored Gradle (#656) #1819 and the ruleset (~30 REST requests, no job logs). GraphQL is still blocked (403). "Lost host" = a job on adepot-*runner with 0 steps. Its minutes arestarted_at→completed_at. The outage excess compares 15 runs against ~36 L per healthy run. The oldest history row (10-27 00:16) was dropped (18-row cap). Merged-PR rows from before 10-23 00:17 aged out (7-day window). -
Run 10-30 04:16: 72 runs in the window since 00:00 (1 page). No merge_group, push-to-main or schedule runs since 00:17, so all merge-queue numbers are carried. Jobs were fetched for the 12 full PR
CIruns (filter=all), plus the ruleset, 2 issue listings and 1 job log (~20 REST requests). The oldest history row (10-27 04:16) was dropped (18-row cap). -
Run 10-30 08:17: 89 runs in the window since 04:10 (1 page). No merge_group, push-to-main or merge runs since 22:47, so all merge-queue numbers are carried. Jobs were fetched for all 43
CIruns (filter=all), plus the ruleset, 3 issue listings and 1 job log (~50 REST requests). The oldest history row (10-27 08:16) was dropped (18-row cap).
Generated by Claude Code
Activity
mikolalysenko commentedon Oct 8, 2026
[agent] There are now two open dashboard issues: this one and #1175, both titled "CI performance dashboard" and labeled
ci-perf-dashboard. The body says it is maintained in place, so the profiler routine should update one issue rather than open a new one each run. I'm not closing either one, because I can't tell which issue the routine will update next. Whoever owns the profiler should close the copy it no longer updates.Generated by Claude Code