fix(recovery): a colliding example version, rt jargon, and a silent second stranded cut #1138
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#1138
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Three small things in the recovery workflow, found by reading it as an adopter would. Two are wording, one is a real gap.
1. A colliding example version
v0.57.0appears twice inreusable-recover-pending-cut.ymlwith unrelated meanings:A careful reader cannot tell from the file which one binds, and reasonably concludes the input is hard-wired. It is not —
version: ${{ inputs.version }}is plumbed correctly. Use an example that cannot collide (1.2.3).2.
rtis jargon in adopter-facing textThe input descriptions are read by someone who installed the toolkit, not by us. Name the tool: "the version release-toolkit reports as pending", not "what rt reports".
3. A second stranded cut is silent — the real gap
The pending-version predicate reads the top-most released section above the manifest, so the verb folds exactly one. If two versions are stranded, the second stays put and nothing says so. The operator has no reason to suspect it, and it surfaces later as a fresh
pending_cutblock on their next release.After a successful fold, re-check and report it — "one more pending version remains, run again".
The no-work case already refuses well and needs no change:
AC
rt— scope: input descriptions only. Two error messages still namert decideandrt recover-pending-cut; those are commands an adopter can run, not jargon, and stripping them would make the errors less useful.remaining_pending_versionoutput, the PR body, and a::warning::. A re-grade that cannot grade is disclosed as unknown, not as clean.TestFoldBackRecoversExactlyOneStrandedSectionmeasures the fold half end-to-end: two stranded sections, folded twice, heading sequence asserted at each step, plus a third-fold control returningErrSectionNotFound. The announces half is covered structurally by the bats arm (the re-grade runs after the fold and reaches the body and the output) — not behaviourally. A full two-run pass through the workflow itself is not exercised here and would need a live runner.git diff origin/main...HEADtouches either refusal.Anchor
Operator review of #1135's merged workflow, 2026-09-04. Item 1 found via a wrong mechanism — the input was assumed hard-wired — which is itself the evidence that the collision misleads.