docs: document seed-tag requirement for stable branch cutover#116
Open
jwulf wants to merge 1 commit into
Open
Conversation
The previous RELEASE.md procedure incorrectly claimed that a BREAKING CHANGE commit after the latest dev tag would produce the correct stable major version. python-semantic-release actually ignores prerelease tags when computing the next stable version and walks back to the most recent non-prerelease tag. This caused the stable/9 cutover to compute 2.0.0 (against legacy v1.1.3 tag) instead of 9.0.0, failing the Validate version matches stable branch gate. - RELEASE.md: explain the seed-tag requirement and add a recovery section - publish.yml: replace the misleading 'use BREAKING CHANGE' hint with an actionable diagnostic that names the baseline tag PSR used and the specific recovery commands
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The
stable/9release workflow failed with:The suggested fix (
BREAKING CHANGEfooter) was already present — the real cause was different, and the error message misled toward the wrong remediation.Root cause
python-semantic-releasecomputes the next stable version from the latest non-prerelease tag reachable from HEAD. Prerelease tags (v9.0.0-dev.N) are ignored for this calculation.On
stable/9the repo still carried legacyv1.0.0…v1.1.3tags from a previous package incarnation. PSR pickedv1.1.3as the baseline, applied theBREAKING CHANGEbump, and computed2.0.0. TheValidate version matches stable branchgate then (correctly) rejected that version but pointed at the wrong cause.Verbose PSR log confirmed:
The immediate unblock was to tag
v8.9.0at thev8.9.0-dev.38commit so PSR had a sensible baseline; the firststable/9release (v9.0.0) is now published.Changes
v9.0.0-dev.N→ 10.0.0" claim with the seed-tag requirement. Add a recovery section for when the validate step fails.Validate version matches stable brancherror message to:git tag … && git push origin …commands needed to recover.Not addressed in this PR
v1.0.0…v1.1.3tags. That's destructive and should be a separate, explicitly-acknowledged change.Verification
ruff check+pyright— clean (pre-push hook)