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
ci(shard-timings): zero candidate runs is NOT MEASURED, not a finding
The refresh lane read every non-zero from the run selector as a refusal, so
an EMPTY candidate list printed "NO ELIGIBLE RUN among the 0 ... every one
was censored, failed, or has lost its artifacts" and failed the job. Nothing
had been examined, and none of those three causes had occurred.
Split into two legs with two exits and two messages: an empty candidate list
exits EXIT_PREREQUISITE_NOT_MET (3, the repo-wide code), candidates that
existed and were all rejected keep exit 1 and keep the sentence naming the
causes that now apply. The workflow reads 3 as NOT MEASURED, leaves the
dataset alone, stays green, and says loudly in its annotation and its step
summary that a persistent NOT MEASURED is a defect rather than a steady
state. The step's own run block is lifted out of the YAML and driven under
bash against a stub node on all three exit codes.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012GKcPZbMoGq7WPzKLfRBTU
# ⛔ NEVER QUIET. A 3 that scrolls past in a green job is how this
304
+
# lane ends up passing because it never looked — the shape that has
305
+
# already cost this repo two cards. It is an annotation, a step
306
+
# summary section and a job-level notice, and every one of them says
307
+
# that a PERSISTENT 3 is a defect rather than a steady state.
308
+
echo "not_measured=true" >> "$GITHUB_OUTPUT"
309
+
echo "::warning::Shard timings NOT MEASURED: no completed \`schedule\` run of ci.yml exists on main yet. The dataset was left untouched. If this repeats once the hourly full run has been live for a few hours, the trigger is gone or every hourly run is being cancelled — file it."
310
+
{
311
+
echo "### Shard timings: NOT MEASURED (exit 3) — nothing was regenerated, and nothing failed"
312
+
echo
313
+
echo "\`select-shard-timings-run --candidates\` found **no completed \`schedule\` run of"
314
+
echo "\`ci.yml\` on \`main\` at all**. That is not \"every candidate was rejected\": there were"
315
+
echo "no candidates, so no run was censored, none failed and none lost its artifacts."
316
+
echo "\`scripts/test-shard-timings.json\` is untouched, which is the correct outcome for this"
317
+
echo "reading, and this job is green because nothing went wrong — not because anything passed."
318
+
echo
319
+
echo "Expected exactly once: while the hourly full run bootstraps. The trigger has to be on"
320
+
echo "\`main\` and one run has to finish, and run-summary artifacts live 1 day."
321
+
echo
322
+
echo "⛔ **A PERSISTENT NOT MEASURED IS A DEFECT, NOT A STEADY STATE.** If this section is"
323
+
echo "still here after the hourly run has been live for a few hours, the \`schedule\` trigger"
324
+
echo "has been removed from \`ci.yml\` or every hourly run is being cancelled — and the"
325
+
echo "balancing dataset is quietly ageing out while this job reports green. File a card."
326
+
echo
327
+
echo "The selector's own refusal text, verbatim:"
328
+
echo
329
+
echo '```'
330
+
cat "$RUNNER_TEMP/select-stderr.txt" 2>/dev/null || echo '(the refusal text is in this job log)'
331
+
echo '```'
332
+
} >> "$GITHUB_STEP_SUMMARY"
333
+
exit 0
334
+
fi
335
+
if [ "$SELECT_EXIT" -ne 0 ]; then
336
+
echo "::error::select-shard-timings-run refused with exit $SELECT_EXIT — candidates existed and none was eligible. Nothing was regenerated."
0 commit comments