build(release): stamp gate + workflow-created tags; stamps to 1.6.0 - #582
Merged
Merged
Conversation
…rkflow creates the tag, not the maintainer celeris.Version sat at 1.5.5 through three releases, the sub-module pins at 1.5.8, and the README headline at 1.5.8, because nothing checked them and the release was cut by hand. mage CheckRelease verifies that every hand-written stamp (server.go Version, the four middleware/*/go.mod pins, the README "What's new" heading) agrees with VERSION, or with each other when VERSION is unset. CI runs the second form on every PR, so the stamps cannot drift apart. VERSION=vX.Y.Z mage PrepRelease moves all of them at once and leaves a placeholder under the README heading that CheckRelease refuses until the release prose exists. The Release workflow gains a workflow_dispatch input: from main it runs CheckRelease against the requested version, runs CI, and only then creates the tag and the GitHub Release itself, so a stale stamp means no tag exists and nothing has to be deleted. A release created by hand still goes through the same gate and stops before sub-module tags and the proxy ping; GOVERNANCE.md records the recovery recipe (delete while the proxy still answers 404, otherwise the version is burned). Stamps moved to 1.6.0 and the README section written for it.
FumingPower3925
force-pushed
the
feat/release-gate
branch
from
September 13, 2026 11:28
d83b4f5 to
9a706ba
Compare
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.
Closes the "I forgot to bump the version again" class for good.
What was stale:
server.goVersionsaid 1.5.5 through three releases, the fourmiddleware/*/go.modpins said 1.5.8, the README headline said 1.5.8. Nothing checked any of them and the release was cut by hand.Now
mage CheckRelease: every hand-written stamp must agree withVERSION(or with each other when unset). Runs in CI on every PR (ci.yml, lint job), so the stamps cannot drift apart between releases.VERSION=vX.Y.Z mage PrepRelease: moves all stamps at once, leaves a placeholder under the README heading thatCheckReleaserefuses until the prose is written.release.ymlgainsworkflow_dispatchwith aversioninput: frommain, it runsCheckReleaseagainst the input, runs CI, then creates the tag and the GitHub Release itself (gh release create --target $GITHUB_SHA --generate-notes), then the sub-module tags and the proxy ping from the same run. A stale stamp means no tag is created; nothing to delete.gh release delete vX.Y.Z --cleanup-tagis harmless; once served, the version is burned and the next patch ships.Verified locally: on the stale tree
CheckReleasefailed naming all five mismatches; afterPrepReleaseand the README prose it passes; negative controls: one stale pin → fail,VERSIONdisagreeing with the tree → fail, a duplicated heading → fail.actionlintclean on both workflows. The CI job on this PR is the first run of the check itself.Stamps are at 1.6.0 with the release section written; the validation sentence is added at release time once the soak and bench are in.