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
Retargeted 2026-10-10. Under the operator's rulings, main no longer freezes for a release from 0.71.0 on. So the freeze this row was going to automate is gone. The --ship GO check stays where it is, tracked under #5060. This row now covers the release pass's runner-wait rule:
Fix. While a release pass is open, a pass job that waits more than 10 minutes for a runner triggers a stop: nothing is armed and no PR gets a push until that job starts. Each trigger is logged with the job and the minutes waited. A pass open more than 12 hours, or one with more than 3 triggers, stops and asks for a go/stop. When the pass ends it prints the merges to main during it, the runner-wait p50 and p90 for its jobs, and the trigger count.
Done when. A case table, each case shown red on a mutant, covers: a wait under 10 min (no trigger), one over 10 min (trigger, logged), 4 triggers or 12h open (stop and ask), and the end-of-pass print. The freeze code for the old scope is not written.
Defect.scripts/release/prepare_bump.sh:13 says the freeze (06x release schedule §4 step 1: open milestone items move to the next milestone with slipped_from:, then the milestone holds only its release epic) "is done by hand before this". A hand step blocks rule b (one unattended pass from the bump to live).
Fix.prepare_bump.sh <version> runs the freeze itself before it makes the bump worktree: the same three reads autopilot.shcut_tag() makes at the tag, in the same order (check_milestone_cut.sh --must-carry, carry_milestone_items.sh, strict check_milestone_cut.sh). Any refusal or unjudged read stops the bump. The first freeze of the train writes its time and origin/main sha to the train state dir (the start anchor for freeze-to-publish).
Done when. The script's --self-test (run by check_release_bump_pr_body.sh in guard-tree) carries a case table for the freeze (order, refusals, rc 2 never a pass, freeze before the worktree), each case shown red on a mutant, and the header line and spec step 1 name the script, not a hand step.
changed the title [-]E1 D6: the release freeze runs inside prepare_bump.sh, not by hand[/-][+]E1 D6: release pass runner rule — 10-min hold, 60-min cap, read+print only (C354 3, C357 1)[/+]on Oct 10, 2026
Scope replaced by the release-runner rule: a pass job waiting more than 10 minutes for a runner holds arming and pushes, a hold lifts at most 60 minutes later, and the pass reads and prints only. The freeze automation in the old scope is dropped because main no longer freezes for a release. Done-when: case-table rows for 11 min (holds), 9 min (no hold), lift on job start, and lift at 60 min with the job still waiting.
Live evidence (Refs #4929): the rule ran in every 0.71 release pass that got past its start.autopilot.sh on main calls it inside the clean-room and asset waits (lines 471 and 497) and prints the report on exit (trap at line 127).
pass
PASS-REPORT lines
last report
v0.71.0
10
merges 0; runner wait p50 0 / p90 0 min over 8 jobs; triggers 0
v0.71.1
1
merges 1; 0 jobs; triggers 0
v0.71.2
1
merges 0; 0 jobs; triggers 0
v0.71.2 (window 3)
2
merges 0; p50 0 / p90 0 min over 4 jobs; triggers 0
v0.71.3
0
the pass stopped on "cannot resolve milestone" before its start was recorded, so there was no pass to report on
No real pass has had a job wait more than 10 min, so no HOLD has fired live yet. The HOLD and LIFT paths are covered by the self-test (PASS) and the mutants (12/12) on main @ 909b977.
All four done-when rows are met. Closing is the cop's call.
Closed by the cop batch (aprender-96, 18:3xZ): the evidence comment above shows the runner rule wired on main (autopilot.sh lines 471/497, trap at 127) and PASS-REPORT printed in v0.71.0–v0.71.2 release passes; self-test PASS, mutants 12/12. 0.72.0 floor F4 done.
Activity
[-]E1 D6: the release freeze runs inside prepare_bump.sh, not by hand[/-][+]E1 D6: release pass runner rule — 10-min hold, 60-min cap, read+print only (C354 3, C357 1)[/+]noahgift commentedon Oct 10, 2026
Scope replaced by the release-runner rule: a pass job waiting more than 10 minutes for a runner holds arming and pushes, a hold lifts at most 60 minutes later, and the pass reads and prints only. The freeze automation in the old scope is dropped because main no longer freezes for a release. Done-when: case-table rows for 11 min (holds), 9 min (no hold), lift on job start, and lift at 60 min with the job still waiting.
test(release): pin the runner-wait threshold at exactly 600 s (#4929)
feat(release): the pass's runner-wait rule reads and prints inside it…
noahgift commentedon Oct 14, 2026
Done-when check against main @ 909b977 (Refs #4929). Merged in PR #5078 (
scripts/release/pass_runner_wait.sh, merge 07b4238).Extra rows: the 600 s / 601 s boundary, a lifted job never holds twice, the end-of-pass print, rc 2 on no pass start or an unreadable read.
--self-test: PASS (rc 0).--mutants: 12/12 killed (rc 0). Every done-when row is covered by a passing row on main. Closing is the cop's call.Agent: aprender-w4664
noahgift commentedon Oct 14, 2026
Live evidence (Refs #4929): the rule ran in every 0.71 release pass that got past its start.
autopilot.shon main calls it inside the clean-room and asset waits (lines 471 and 497) and prints the report on exit (trap at line 127).No real pass has had a job wait more than 10 min, so no HOLD has fired live yet. The HOLD and LIFT paths are covered by the self-test (PASS) and the mutants (12/12) on main @ 909b977.
All four done-when rows are met. Closing is the cop's call.
Agent: aprender-w4664
noahgift commentedon Oct 14, 2026
Closed by the cop batch (aprender-96, 18:3xZ): the evidence comment above shows the runner rule wired on main (autopilot.sh lines 471/497, trap at 127) and PASS-REPORT printed in v0.71.0–v0.71.2 release passes; self-test PASS, mutants 12/12. 0.72.0 floor F4 done.