Repository navigation
Require curated notes and titles for stable releases - #51
Merged
Merged
Conversation
Stable releases published with GitHub's generated PR list and a bare "DragonSniff vX.Y.Z" title because the curated-notes path was optional and the title was hardcoded, so v0.5.0 lost the release-title tradition. Curated notes now live at docs/releases/<tag>.md, with the first line as the release title. Preflight validates presentation before any tag is created or image is promoted: a stable release fails if its notes are missing, lack a subtitle, or have no body. The workflow appends the artifact section itself. Generated notes remain an RC-only fallback. Adds the curated v0.5.0 notes that are now published on the release.
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
v0.5.0 published with a bare
DragonSniff v0.5.0title, and its body was the container/wheel hashes followed by GitHub's generated PR list. That broke the release-title tradition (Watch it breathe, Watch it persist, Mark the moment). Two causes:release.ymlhardcoded--title "DragonSniff $RELEASE_TAG", and it silently fell back to--generate-noteswheneverdocs/releases/<tag>.mdwas absent. The directory had never been created.The live v0.5.0 release has already been retitled DragonSniff v0.5.0 — Connect the dots, with its body rendered from
docs/releases/v0.5.0.mdin this PR. Only the release title and body were edited; the tag, commit, wheel, and images are unchanged.Contract
docs/releases/<tag>.md: the first line is the title,# DragonSniff <tag> — <subtitle>; the rest is the body.release_notes.py check, runs before the tag job and before any promotion. A missing file, missing subtitle, or empty body fails the release before anything is mutated. It deliberately does not add a new stranded-tag path (see Release workflow can strand an annotated tag when a later job fails #50).## Artifacts(wheel, wheel SHA256, version container, immutablesha-container, manifest digest), placed before a trailing## Full changelog. Curated files may not hand-write one. Only thesha-reference is labelled immutable.DragonSniff vX.Y.Z-rc.Nand uses generated notes after the artifact section. That branch carries an explicittest "$PRERELEASE" = trueguard.Changes
scripts/release_notes.py(new):checkandrender.github/workflows/release.yml: preflight presentation gate; creation uses the rendered title/body; generated notes only in the guarded RC branch. The existing-release verification path and job ordering are unchanged.docs/releases/v0.5.0.md(new): the curated v0.5.0 notesdocs/releasing.md: documents the contracttests/test_release_notes.py(new): 19 testsValidation
compileall;git diff --check--generate-noteson the stable pathDoes not dispatch a release. #50 is untouched.