Repository navigation
ci(studio): split edit accuracy into 15 PR shards packed by measured case time - #6784
Conversation
There was a problem hiding this comment.
Verdict: REQUEST CHANGES · 1 blocker · 0 important · 0 nits · head 8636780d
- blocker: the head no longer matches the PR. The title, the body ("10 shards instead of 5", "+3 runner minutes") and 05a2699 describe 10 shards. 8636780 moved all three counts (
ci.yml:1194,:1268,:1324) and the comment at:1182to 15. Your own table puts 15 at 558 s for +6 runner-minutes, not 707 s for +3. The squash title is what goes on main, so it has to say what it does. Either go back to 10, or update the title, body and rationale for 15. Also fill in## After, which still says "filled in from that run".
Scope
The three shard counts agree with each other, and the retry plan and gate derive shards from artifacts, so 15 would work mechanically. Locally, edit-accuracy-retry, check-edit-accuracy-filter and merge-queue-workflows pass 7/7. CI on 8636780 is still running.
Edit accuracy: accurate 271 (base branch 271), smooth 103 of thoseThe gate passes. Quarantined, measured but not gated (0) |
There was a problem hiding this comment.
Verdict: APPROVE — 1 resolved, 0 open, 0 new · 8636780d (same head)
✅ The title and body now describe 15 shards, and ## After is filled in from run 40998022015. All 15 shards and the gate passed, and the gate ended at 569 s. CI, Windows render verification, CodeQL and regression are green on this head.
…shard's first cases are
There was a problem hiding this comment.
Verdict: APPROVE — 1 resolved (carried from #6778: slow-runner stop vs longest-first order), 0 open, 0 new · 8636780d → 6f9590ed
✅ The stop now compares runner speed against each case's usual seconds. Locally, grid and report tests pass 17/17, and both 1.68x pin tests fail when I restore the old 60 s rule. The only reader of slow-runner.json is the CI step that checks the file exists, so the new shape is safe. CI and Windows render verification are green on this head.
What changes
Two changes to how the edit accuracy shards are split, both measured on real runs:
prslice (271 cases) in 15 shards instead of 5. The merge queue keeps its full grid in 20. The gate's and retry job's shard counts move with it.edit-accuracy/timings.json(test:edit-accuracy:timingsregenerates it). Shards are packed longest first, the same bin packingplan-regression-shards.mjsuses, and each starts with its slowest cases. An untimed case counts as the slowest.(Replaces #6778, which carried step 2 and was blocked on the slow-runner stop.)
Why
The shards are the critical path of every run that touches Studio.
Studio: edit accuracy (k/5)took a median 893 s and up to 1243 s. Every other job ends by about 525 s.Runner speed also varies: every case in a shard runs at about the same multiple of its usual time, 0.72x at p10, 1.43x at p90 and 1.68x at worst over 100 merge-queue shards. Packing can't change that. Simulated with runner multiples drawn from those 100, the expected slowest merge-queue shard drops from 748 s to 686 s, about 60 s per run.
After
Step 1, 15 PR shards (run 40998022015, round-robin split):
Steps 2 and 3, packing and the speed-based stop (run 41002343889, 15 shards):
On the PR slice in 15 shards, one run cannot show packing's gain: the runner multiples (0.58x to 1.70x) dominate. The run did show the stop fix working. Under the old 60 s rule, two packed shards started with first-four medians of 57.0 s and 58.8 s, within 3 s of a needless re-run, on runners of about 1.45x. The new rule put them at 1.43x and 1.45x, against a 3x cut-off.
Merge-queue numbers follow from the first queue runs after this lands, compared as a median over several runs, because one run is dominated by runner speed.
No visible change
Only the edit accuracy bench (under
packages/studio/tests/), apackages/studio/package.jsonscript,packages/studio/AGENTS.mdandci.ymlchange. Studio itself is untouched.Checks
bunx vitest run packages/studio/tests/e2e/edit-accuracy/grid.test.mjs packages/studio/tests/e2e/edit-accuracy/report.test.mjs: 17/17, three runs in a row.report.test.mjs: the stop compares against usual seconds, so long cases on a normal runner pass.scripts/edit-accuracy-retry.test.mjs,check-edit-accuracy-filter.test.mjsandmerge-queue-workflows.test.mjs: 7/7. oxlint, oxfmt, the comment ratchet, comment citations andfallow auditpass.