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
rc_cut.sh cuts vX.Y.Z-rc.N after the final vX.Y.Z already exists #4957
Verification of the fix on #4923 (head 91bf1de), from a non-author. No separate branch: the fix lives in #4923.
Red/green on the real input. Both runs use rc_cut.sh --run-id 37931743595 --dry-run, which writes nothing. That is the green CI run on release/0.70.3 @8a9c6dd9ea, which is the branch tip, and v0.70.3 exists.
main @845004a121 prints cut v0.70.3-rc.1. The misfire reproduces.
The run id in the body above, 37909980467, is a run on main. Both versions skip it as "not release/X.Y.Z", so it cannot show the defect.
Self-test at 91bf1de: 26 ok, PASS. rc-cut.yml runs it before the cut.
Four further one-line mutants, all red:
exact match changed to substring: 4 FAIL;
run_cut's D_FINALS fill deleted: 2 FAIL;
tag listing parsed as refs/heads: 3 FAIL;
v$v changed to $v: 4 FAIL.
Not pinned by a row. If the new listing read is changed from || return 2 to fail open, no row catches it. The existing tag and tip reads have the same gap, and the shipped code fails closed.
Fixed on main through #4923 (e33f529). scripts/release/rc_cut.sh:77 skips the rc cut when the final tag vX.Y.Z already exists ("release/X.Y.Z is released"). The self-test rows at :127-135 cover it: a final tag present gives skip (the 0.70.3-rc.1 misfire, 422), near-miss names such as v0.70.00 or v0.70.0x are not the final tag, and three API listing bodies (compact, pretty-printed with the final listed last, and []) go through tag_names_of_refs. Line :137 checks that run_cut fills the list from that listing.
Activity
rc_cut: skip a release branch whose final tag already exists
rc_cut: test the final-tag listing end to end
release scripts: clear the two x86-main reds on 92237c4
evidence(pr-review): receipts for #4923 heads 49f3c59..70beeba
noahgift commentedon Oct 9, 2026
Verification of the fix on #4923 (head 91bf1de), from a non-author. No separate branch: the fix lives in #4923.
Red/green on the real input. Both runs use
rc_cut.sh --run-id 37931743595 --dry-run, which writes nothing. That is the green CI run on release/0.70.3 @8a9c6dd9ea, which is the branch tip, and v0.70.3 exists.cut v0.70.3-rc.1. The misfire reproduces.skip final tag v0.70.3 already exists: release/0.70.3 is released.The run id in the body above, 37909980467, is a run on
main. Both versions skip it as "not release/X.Y.Z", so it cannot show the defect.Self-test at 91bf1de: 26 ok, PASS. rc-cut.yml runs it before the cut.
Four further one-line mutants, all red:
refs/heads: 3 FAIL;v$vchanged to$v: 4 FAIL.Not pinned by a row. If the new listing read is changed from
|| return 2to fail open, no row catches it. The existing tag and tip reads have the same gap, and the shipped code fails closed.Refs #4957, #4923
Merge main 466e0de into la-71/policy-unquoted-hash to resolve a conflict
noahgift commentedon Oct 10, 2026
Fixed on main through #4923 (e33f529).
scripts/release/rc_cut.sh:77skips the rc cut when the final tagvX.Y.Zalready exists ("release/X.Y.Z is released"). The self-test rows at:127-135cover it: a final tag present gives skip (the 0.70.3-rc.1 misfire, 422), near-miss names such asv0.70.00orv0.70.0xare not the final tag, and three API listing bodies (compact, pretty-printed with the final listed last, and[]) go throughtag_names_of_refs. Line:137checks that run_cut fills the list from that listing.feat(release): the stage list lives in code - one data file, one read…
release: policy reader refuses an unquoted #; nightly rows match insi…