Conversation
Releases leave the `0.0.0-alpha.N` stream. The config already carried `bump-minor-pre-major` and `bump-patch-for-minor-pre-major`, which the three prerelease keys made inert; dropping those keys is what turns the pair on. So a breaking marker gives a minor, a feature and a fix give a patch, and nothing reaches 1.0.0 without removing two more keys. The manifest names `0.0.0` as the version to bump from, so the next release PR cuts `0.0.1`, or `0.1.0` if a breaking marker lands first. The base-version guard in `pr-title.yml` refused `!` because it would have moved the base version off the stream. There is no stream to move off, so the guard goes, and with it the manifest checkout and the PR-body read it needed. release-please's auto-merge step goes too: it was fenced as temporary and only ever fired for a prerelease, so from here it would have done nothing on every release. AGENTS.md, CONTRIBUTING.md, RELEASING.md, the README, the installation page and the PR template all said a breaking marker is refused. They now say what it does. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FmFn3b7j5QifYazTFufExd
FBumann
added this pull request to stack #524
September 17, 2026 20:03
The previous commit on this branch left the alpha stream, which is not what was asked. It is reverted here: `versioning: prerelease`, `prerelease` and `prerelease-type` stay, the auto-merge step stays, and every release is still `0.0.1-alpha.N`. What remains is the breaking marker. `pr-title.yml` refused a `!` and a `BREAKING CHANGE:` footer to keep the base pinned at `0.0.0`; the guard goes, so a marker moves the base to `0.1.0` and the counter carries on. With it goes the manifest checkout and the PR-body read that only the footer check needed. The manifest moves from `0.0.0-alpha.96` to `0.0.1-alpha.96`, because at a zero patch `versioning: prerelease` absorbs a minor bump into the counter — a marker on `0.0.0-alpha.96` would have changed nothing. At `0.0.1` it bites. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FmFn3b7j5QifYazTFufExd
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.
Note
The following content was generated by AI.
What this changes
The alpha stream stays.
versioning: prerelease,prereleaseandprerelease-typeare untouched, the auto-merge step is untouched, and every release is still an alpha thatpipwill not resolve without--prerelease. Publishing those alphas to PyPI is the base PR, #522.What changes is the breaking marker.
pr-title.ymlrefused a!and aBREAKING CHANGE:footer to keep the base version pinned at0.0.0. The guard is gone, so a marker moves the base and the counter carries on:feat:,fix:, and every hidden type0.0.1-alpha.96→0.0.1-alpha.97feat!:, or aBREAKING CHANGE:footer0.0.1-alpha.96→0.1.0-alpha.96With the guard go the sparse checkout of the manifest and the PR-body read that only the footer check needed. The conventional-subject check and the 72-character warning are untouched.
Why the manifest moves to
0.0.1-alpha.96Because at
0.0.0the marker would have done nothing.versioning: prereleaseabsorbs a bump into the counter whenever the digits below it are already zero, whichRELEASING.mdhas written down and #251 in the sibling repo found the hard way. At0.0.0-alpha.96a minor bump is absorbed, sofeat!:would have produced0.0.0-alpha.97and announced nothing. At0.0.1the patch is not zero, so the minor bump bites.The next release is therefore
0.0.1-alpha.97, not0.0.0-alpha.97.0.0.1a97sorts above0.0.0a96, so nothing goes backwards.What was verified, and what could not be
pr-title.ymlparses as YAML;prettier --checkclean on every file in the diff.pytest -q -n auto: 1280 passed, 6 skipped. The 10 failures intests/test_docs.pyare the same 10 that fail onorigin/mainin this container, for a docs plugin it lacks. Not run:pixi run ci, the strict docs build,reuse lint,zizmor.0.1.0-alpha.96from a marker. Nothing runs it until a merge tomain, so the first release PR after afeat!:is the proof. The behaviour is what this repo's ownRELEASING.mdrecords, not something measured in this PR.Swept with it.
AGENTS.md,CONTRIBUTING.md,RELEASING.mdand the PR template all said the marker is refused; they now say it moves the minor.RELEASING.md's "Leaving the alpha stream" list loses step 4, the one this PR performs.The first pass on this branch was wrong and is reverted in its second commit: it dropped the prerelease keys and left the stream, which the prompt above corrects. The branch name
ci/leave-the-alpha-streamis a leftover misnomer — the net diff keeps the stream. Say the word and I will move it to a branch that reads right.Departure from a Part 2 default. The diff's topmost row is
.github/, which the table typesci; that is what it is typed.AGENTS.mdandCONTRIBUTING.mdin the same diff would bechoreon their own.Base branch. Stacked on
ci/publish-to-pypi(#522), which edits the sameRELEASING.mdsections.🤖 Generated with Claude Code
https://claude.ai/code/session_01FmFn3b7j5QifYazTFufExd