mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-25 21:20:00 +00:00
0bd6e8b9d8
The first beta's page listed no changes, and the full changelog file is neither attached to nor linked from any release page, so a reader could not look up a change the summary did not name. Add a pointer, advisory and additive. The renderer appends a "## Source comparison" section after Roll back: a link to GitHub's comparison of the release tag with the stable rollback target the workflow already passes (--rollback-target and --candidate-tag). It is a pointer, not a list. GitHub shows at most 250 commits in a comparison and this beta had 328 changes, so the section says larger comparisons may omit commits and is not called a full list. It never fails a release on its own. The helper renders nothing, and raises nothing, for a missing or malformed tag, a base that is not a lower stable release, a trailing newline, non-ASCII digits, or numbers too large to convert. Bodies without the section, including every earlier release and any frozen in-flight one, keep validating, because the validator already permits a trailing section and is unchanged. The post-update changelog dialog reads only recognised category headings, so a separate heading after Roll back is ignored by it. Every consumer of the rendered body was audited (the renderer's validators, create-release, validate-release-assets, recover-release-activation, the updater backend, the what's-new model and the Go and TypeScript tests): no regression. Review of the first draft found a crash on a 5000-digit tag, a newline that would land inside the URL, and overclaiming contract text; all fixed and pinned by tests that fail against the first draft. A tags/ prefix would avoid a branch that shares a tag's name, but GitHub's web comparison URL returned 404 for it on existing tags, so bare refs are used and the limit is recorded. Tests run the real renderer on the v6.5.0 notes: placement after Roll back, exact spacing, numeric ordering, ten edit and annotation cycles with CRLF and the extra jq newline, expected-body rejection of a changed or deleted section, and absence still validating. They fail against the original renderer. Making the section required, and a generated row-level inventory that proves completeness, need a declarative contract record in the preparation snapshot and are deliberately deferred; the contract explains why. Contract-Neutral: Adds an advisory link to rendered release pages; no published artifact, tag, signing, install or customer contract changes.