You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 4fe161b
Browse filesBrowse the repository at this point in the historyBrowse files
ci: accumulate runs until the workspace is covered, instead of hunting for one that covers it
The lane's first live run (34083991141) measured the fact the documented refresh
procedure does not state: NO single green run measures the whole workspace. Of
the seven retained green push runs on main, the best measured 52 of the 71
packages the committed dataset holds; the rest measured 2, 3, 13, 18, 22 and 49.
All seven were partial cache replays, so every candidate was rejected and the job
exited 1 having regenerated nothing.
That is the cache design rather than luck: turbo's key is namespaced per shard
and only main pushes write it, so a package whose inputs have not changed is a
HIT -- and the generator refuses hits rather than recording a replayed ~0.1s
window as a suite's cost. "Download six artifacts from any green run" therefore
measures a SLICE of the workspace.
Runs are now accumulated until coverage is satisfied, each fenced by its own
`--run <id>` group. That grouping is exactly what the #16473 fix on this branch
added: slices are summed WITHIN a run and the per-run sums are medianed ACROSS
runs, so a package measured by three of the accumulated runs gets the median of
three observations -- the property the dataset's merge rule always claimed and
could not previously deliver. Feeding several runs without that grouping is
refused by name, so this path could not have been taken before the rider.
The argument list is rebuilt from the accepted set each round rather than
appended to, so a run the generator refuses is dropped cleanly instead of
poisoning every later attempt. The PR body and commit message now name every
contributing run; the newest is the one the refresh is dated from.
When even the whole accumulation falls short the job still refuses loudly, and
its message names the remedy that would be a DECISION rather than a tuning knob:
keeping the last measured weight for a package this refresh did not measure.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
if node scripts/ci/select-shard-timings-run.mjs --check-coverage \
283
328
--committed scripts/test-shard-timings.json \
284
329
--refreshed "$WORK/refreshed.json" \
@@ -292,11 +337,18 @@ jobs:
292
337
done
293
338
294
339
if [ -z "$CHOSEN" ]; then
295
-
echo "::error::No eligible run produced a complete measurement of the workspace. Every candidate was a cache replay, refused by the generator, or lost its artifacts. NOTHING was regenerated and no PR was opened — this is a refusal, not a quiet success."
340
+
echo "::error::The ${#ACCEPTED[@]} eligible run(s) on main, accumulated together, still do not measure every package the committed dataset holds — the shortfall above names what is missing. A package can stay unmeasured across every retained run: turbo's cache key is namespaced per shard and only main pushes write it, so a package whose inputs have not changed is a HIT in all of them, and the generator refuses hits rather than recording a replay as a duration. NOTHING was regenerated and no PR was opened — this is a refusal, not a quiet success. If this is the steady state rather than a quiet week, the dataset needs a merge rule (keep the last measured weight for a package this refresh did not measure) rather than a wider run window; that is a decision, not a tuning knob, and it is tracked on the card."
echo "- Newest run in the set: \`$RUN_ID\`, commit \`$HEAD_SHA\` — the date this refresh carries."
433
+
echo "- Every run above had all six \`Test Core (N/6)\` jobs conclude \`success\` with its six"
434
+
echo " run-summary artifacts still retained; runs that were cancelled, failed or had lost"
435
+
echo " their artifacts were rejected by name in the log before any of these were used."
373
436
echo
374
-
echo "## Measured per-shard suite time on that run"
437
+
echo "## Measured per-shard suite time on the newest run in the set"
375
438
echo
376
439
echo "\`\`\`"
377
440
echo "$SHARDS"
@@ -431,7 +494,7 @@ jobs:
431
494
# heredoc would carry its own leading whitespace into the message body.
432
495
git commit \
433
496
-m "chore(ci): refresh the Test Core shard-timings dataset" \
434
-
-m "Regenerated by .github/workflows/shard-timings-refresh.yml from the six test-core-run-summary artifacts of run $RUN_ID ($HEAD_SHA). Generated, never hand-edited."
497
+
-m "Regenerated by .github/workflows/shard-timings-refresh.yml from the test-core-run-summary artifacts of $RUN_COUNT accumulated run(s) ($RUNS), newest $RUN_ID at $HEAD_SHA. Generated, never hand-edited."
435
498
git push origin "$BRANCH"
436
499
437
500
PR_URL=$(gh pr create --base main --head "$BRANCH" \
0 commit comments