ci: pin the first release to 0.1.0 and scope its changelog - #64
Merged
Conversation
release-please opened its first release PR proposing 1.0.0 with a changelog containing 228 entries covering the entire history of the repository. Two causes, two fixes: The `refactor!:` that collapsed the distributions is a breaking change, so release-please bumped MAJOR. `bump-minor-pre-major: true` applies semver's pre-1.0 rule instead, so a breaking change moves 0.x to 0.(x+1) rather than to 1.0.0. Placed top-level, where it is the default for every package. There are no tags in the repository, so release-please had no baseline and walked all history. `bootstrap-sha` stops the commit scan at 39d488a, the parent of 28687fe (the first PR of this phase), so the changelog covers this phase. It is top-level because the schema does not accept it per-package. It is ignored once a release PR has merged and can be removed then. The version itself is pinned by the footer below rather than by a `release-as` config key: that key is sticky and would pin every subsequent release to 0.1.0, and the schema marks the per-package form deprecated in favour of the commit footer. The footer expires with this commit, so there is nothing to remember to remove. Release-As: 0.1.0
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 freeto 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.
Release PR #61 (
chore: release main) is not mergeable as intended. Two defects, both observed on it.Defect 1 — it proposes
1.0.0, not0.1.0Task 10 landed as
refactor!: collapse distribution to .... The!marks a breaking change, so release-please bumps MAJOR. The generated changelog header reads:The plan calls for a
0.1.0beta, and the maintainer has confirmed0.1.0.Defect 2 — the changelog is the entire repository history
It contains 228 entries — every
feat:ever committed (e.g. "add AggregatorNode", "Add CLI for NL2SQL LangGraph pipeline"), including many predating this work, several duplicated.There are zero tags in the repo (verified local and remote), so release-please has no baseline and walks all history. Note the compare URL above references a
v0.1.0tag that does not exist.The three knobs
Each was verified against
googleapis/release-pleasedocs/manifest-releaser.md,README.mdandschemas/config.jsonbefore being applied.bump-minor-pre-major: true— top-levelSchema description (
definitions.ReleaserConfigOptions.properties):So while the version is below
1.0.0afeat!/fix!moves0.1.0to0.2.0, which is semver's rule for a pre-1.0 public API. Without it the next breaking commit lands on1.0.0by accident — which is precisely defect 1.Valid both top-level and per-package (the root schema
allOf-inheritsReleaserConfigOptions). Placed top-level, where it is the default for the single package.bootstrap-sha— top-level (top-level only)and
Set to
39d488ae9f9943ea5d9879bf2dd503c34370b24a. That is the parent of28687fe(merge of PR #47, Phase 1 Task 1,chore: stop tracking runtime and build artifacts), so Task 1 itself is included and the changelog covers this phase rather than the whole project.It is self-expiring:
bootstrap-shais present in the rootpropertiesallowlist but absent fromReleaserConfigOptions, confirming it cannot go per-package.Release-As: 0.1.0— a commit footer, not a config keyThis is the one that needed care.
release-asin the config is sticky. Fromdocs/manifest-releaser.md, immediately above the"release-as"example:It does not pin one release — it pins every release, forever, to that version, silently. The schema also marks the per-package form deprecated:
So no
release-askey was added torelease-please-config.json. The version is pinned by a commit footer instead, perREADME.md:The commit on this branch carries
Release-As: 0.1.0in its body. The footer applies to that one commit and expires with it, so there is nothing to remember to remove — which is the whole reason it was chosen over the config key. This repo merges PRs with merge commits, so the footer reachesmainintact.Changes
Only two files.
CHANGELOG.md, every version number and.release-please-manifest.jsonare untouched.release-please-config.json— two lines:{ "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", "release-type": "python", "bootstrap-sha": "39d488ae9f9943ea5d9879bf2dd503c34370b24a", "bump-minor-pre-major": true, "separate-pull-requests": false, "include-component-in-tag": false, "packages": { ... } }docs/development/releasing.md— documents the pre-1.0 bump rule, whatbootstrap-shadoes and that it can be dropped once a real tag exists, and a!!! dangeradmonition on the stickyrelease-asconfig key explaining why this repo uses the footer instead and should not gain that key.Verification
release-please-config.jsonparses as JSON.git cat-file -t 39d488ae9f...→commit;git rev-parse 28687fe^→39d488ae9f9943ea5d9879bf2dd503c34370b24a(exact match).pytest -m "not integration": 231 passed, 1 skipped, 47 deselected — twice, unchanged.pytest -m "integration and not llm": 28 passed — twice, unchanged.mkdocs build --strictclean (exit 0, no warnings), throwaway venv fromrequirements-docs.txt.Nothing was tagged, published or released.
After merge, release-please will regenerate PR #61 — the version and changelog can be verified there.