Skip to content

Commit 8c4b2f3

Browse files
bpamiriPeter Amiriclaude
authored
chore(release): promote changelog into [4.0.4] (+ fix promote tooling) (#3219)
* fix(build): changelog-promote emits release.yml-compatible section format The changelog.d fragment system (#2994) was never exercised by a real cut. Its promote step wrote "## [version] - date" (two-hash, no tag link), but every released section — and release.yml's notes extraction (awk '/^# \[VERSION\]/,/^---$/') — uses a single-hash "# [version](tag) => date". With the two-hash header the one-hash awk extracts zero lines, so the GitHub Release would publish with EMPTY notes. Also: boundary detection searched for the next "## " heading, but version sections here are single-hash, so the first "## " match landed on a subheading inside the 3.0.0 section — pulling every release since into the promoted body. And a stray "----"/"---" rule in [Unreleased] could leak in. - Match the next version heading at "#" OR "##" + " [" (correct tail boundary). - Drop horizontal-rule lines from the promoted body. - Emit "# [version](tag-url) => date" + explicit "---" separators around it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Peter Amiri <petera@pai.com> * chore(release): assemble changelog.d fragments into [4.0.4] Promote the 83 pending changelog.d fragments (plus prior [Unreleased] content) into the [4.0.4] release section via tools/changelog-promote.sh, and clear the fragment folder. Done on develop first (per the release playbook) so develop's [Unreleased] doesn't go stale and force a back-port after the cut. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Peter Amiri <petera@pai.com> * fix(build): consolidate changelog sections by heading in canonical order The first promote pass exposed a second defect: when [Unreleased] carries the same heading twice (develop had two '### Performance' blocks), the merge appended the fragment bullets to EACH same-named section — double-counting every performance fragment (e.g. the $getStatusCodes entry appeared twice). It also emitted sections in [Unreleased] file order with the duplicate intact and fragment-only sections tacked on last. merged_sections now combines all bullets for a heading into ONE section and emits sections in canonical order (Added, Changed, Deprecated, Removed, Performance, Fixed, Security), existing bullets before fragment bullets. Regenerated the [4.0.4] section: 116 unique entries (was 124 with 8 dupes), canonical order, no duplicate headings. Verified zero unique entries lost. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Peter Amiri <petera@pai.com> * docs(build): sync changelog-promote usage header + summary to new format Address the Reviewer-A nit: the top-of-file usage comment still advertised the old "## [version] - date" shape and the summary print() used " - " — both now reflect the single-hash, tag-linked, "=>"-dated section the script emits. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Peter Amiri <petera@pai.com> * test(build): cover new changelog-promote format + section consolidation Address Reviewer-A (CHANGES_REQUESTED): the format change broke Test 3, which still asserted the old "## [ver] - date" header — re-anchor it to the single-hash, tag-linked, "=>"-dated section the script now emits. Add Test 5 covering the merged_sections consolidation: a [Unreleased] body with two "### Performance" blocks plus a matching *.performance.md fragment must collapse to one heading in canonical order with each bullet appearing exactly once (the double-count regression the 4.0.4 cut surfaced). Full suite green (11/11). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Peter Amiri <petera@pai.com> --------- Signed-off-by: Peter Amiri <petera@pai.com> Co-authored-by: Peter Amiri <petera@pai.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 66e8c2c commit 8c4b2f3

86 files changed

Lines changed: 235 additions & 126 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 107 additions & 5 deletions
Large diffs are not rendered by default.

changelog.d/2897-shared-pluginobj-request-lifecycle.performance.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

changelog.d/2911-ratelimiter-db-storage.fixed.md

Lines changed: 0 additions & 2 deletions
This file was deleted.

changelog.d/2957-deploy-w4-rollup.fixed.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

changelog.d/3013-querybuilder-scope-handler-sanitization.fixed.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

changelog.d/3016-mcp-deprecation-stale-path.fixed.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

changelog.d/3026-cli-test-base-path.fixed.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

changelog.d/3029-dispatch-bare-cfabort-adobe.fixed.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

changelog.d/3030-reload-envswitch-redirect.fixed.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

changelog.d/3031-envswitch-explicit-override.fixed.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)