feat(recovery): a verb for the (B) cut-recovery, so the one manual step is not a hand-edit #1130
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#1130
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?
Recovering from an interrupted cut still needs a hand-edit of the CHANGELOG. The one manual step sits in the middle of an otherwise mechanical path, and it is the step where it goes wrong.
What is missing
docs/integration.md § Cut-cancellation recovery (#417)says: "move the orphaned## [vX.Y.Z]content back under## [Unreleased]+ commit". That is prose, executed by hand.With #1128 landed, everything after that step is automatic — decide routes to
update, prep re-composes, the cut fires. Only the first step is manual.Why a verb
The visible change is deleting two lines, but which two decides whether the result composes. A
sedone line off produces a plausible CHANGELOG that behaves differently, and the failure surfaces later as a cut that dies at compose-verify.The parsing is already solved and already in the codebase —
changelog.NewParser().SectionContentand prep'smergeUnreleased(unreleasedProse, combined). It is not exposed to the operator.Precedent:
close-stale-rolling-pris already a recovery verb for a stuck release state.Scope
Recovery (B) only. (A) publishes a release and involves judgement about which tree the version should name — that stays human.
AC
[Unreleased], preserving it byte-for-byte--dry-runprints the diff without writingrt decidereturnsmode=updateon the same treeTest area
v0.57.0is currently in exactly this state on main and the cut is being held for it. Run the verb against it and the recovery is the acceptance test, as it was for #1128.ACs ticked — all five verified on main's live
v0.57.0state, twice: by me while building #1131, and independently by @bosun before merge.Two bounds the tick does not carry, both stated in #1131:
[Unreleased]folds throughMergeSectionsrather than concatenating.#885evidence fields, not from a live tagged repo.