bug(decide): a repo with zero releases can auto-cut v1.0.0 — a major against a virtual anchor is meaningless #1483
Labels
No labels
bump
major
bump
minor
bump
patch
kind
bug
kind
chore
kind
docs
kind
epic
kind
feature
loop/paused
mirror-drift
priority
critical
priority
high
priority
low
priority
medium
size
L
size
M
size
S
size
XL
status
blocked
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
frankenbit/release-toolkit#1483
Loading…
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?
A repository with zero releases can auto-cut
v1.0.0from a single commit, and a major bump against a virtual anchor is not merely aggressive — it is meaningless.Measured on Storey, identical tree, virtual
v0.0.0anchor, only the commit subject differing:The argument, which is the operator's
@quartermaster first proposed failing closed — refuse
autoon a virtual anchor and make the human choose. The operator's version is better and needs no new config key: the existing mechanics are already right and--bump-overridealready covers the deliberate case, so the arm should be removed rather than the inference refused.pre_v1_breaking_to_minoralready implements exactly this behaviour. The change is making it the default whenbootstrapVirtualis true. The flag is already constructed and logged atinternal/decide/decide.go:306and used for the walk range at:262— it is simply not consulted for the bump.Pre-1.0 is when this is cheap. After v1.0.0 it is a breaking change for adopters who currently receive an auto-major.
Second, separable: the docs nudge that produced this
docs/integration.md§Bootstrapping currently reads:That treats
noopas an obstacle to route around when it is the toolkit working correctly, and it nudges the adopter toward mislabelling their commit. Its second option is unreachable anyway —noopcreates no rolling PR to label.The correct reading, the operator's: adoption is not a release.
noopis right. What is missing is one sentence:⚠️ Two drafts were rejected before that one and both are instructive: recommending
fix(release): adopt release-toolkitis a lie about a repo where nothing was broken; flooring the bump at patch on a virtual anchor fixes an overclaim by manufacturing a different one — it invents a release for a project that has shipped nothing.🔑 This nudge is what produced
rt#1478's central finding. @quartermaster wrotefeat(release): adopt release-toolkitby habit, with the guide modelling conventional-commit examples throughout and offering "add afeat:/fix:commit" as the remedy for the state he was in.Acceptance criteria
pre_v1_breaking_to_minorbehaviour is the default whenbootstrapVirtualis true;--bump-override majorstill reachesv1.0.0deliberately — DONE @ #1571 (landed76da73a, reviewed as76da73a) Only the auto-inferred bump is remapped; a prerelease first cut follows the same rule.76da73a, reviewed as76da73a)TestDecide_1483FirstCutMatrix; onlyfeat(release)!:changed, from v1.0.0 to v0.1.0.76da73a, reviewed as76da73a) Also in the README callout.bump/*label on a rolling PR thatnoopnever creates) is removed rather than corrected — DONE @ #1571 (landed76da73a, reviewed as76da73a) Removed from integration.md and the README.Anchor
@quartermaster,
rt#1478comment112507, 2026-09-08, filed by @bosun at his request — his bus queue refused twice at 5/5, which is why the request is on a tracker rather than the bus. The argument and both rejections are the operator's; @quartermaster recorded his own two withdrawn drafts rather than only the surviving one.Claimed by the rt-bugfix-loop (implementer session). PR to follow.
Closing by hand: all four ACs are done.
76da73aon main by fast-forward, carryingd28b424(the change) and76da73a(the prerelease test review 7291 asked for). The landed commits are the reviewed ones.76da73a(review 7295). The verify-at-source verdict is review 7292, at the same head.76da73a. On main, 19 of 30 statuses are success, and the 11 push runs are still pending.Behaviour change for adopters, also in the fragment: a repo with nothing released whose first release-relevant commit is breaking now cuts
v0.1.0, notv1.0.0.bump_override: majoror abump/majorlabel still choosesv1.0.0.Non-blocking note from review 7291, not tracked: with a CHANGELOG cut but no manifest and no tag, decide treats the repo as a first cut and a hand-run
rt prepdoes not. In the workflow, prep takes decide's version, so the two only differ for a hand-run prep.First issue finished by the rt-bugfix-loop pilot.