chore(release): retire .release-toolkit-release-notes.md sidecar — CHANGELOG.md as single source of truth #301
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#301
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Diagnosis
draft-release.shpreferred a.release-toolkit-release-notes.mdsidecar over the CHANGELOG section as the Forgejo release-body source (introduced in release-toolkit#77 to split "long-form developer prose" from "short consumer summaries"). The sidecar was written byrelease-prep.shat rolling-PR-creation from fragment summaries.Cold-Read compression fixes were silently discarded on 3 published releases (v0.20.0, v0.21.0, v0.22.0). All Cold-Read fix-passes (v0.20.0 →
9fdc60d, v0.21.0 →c5c610a, v0.22.0 →9caa764) touched CHANGELOG.md only — the sidecar stayed stale. Operator caught this visually on the releases page 2026-07-02 post-v0.22.0-cut.Meta-shape observation
This is the scoped-mechanism-vs-open-substrate class recursing on the very fix we declared closed 30 minutes before it fired (release-toolkit#295 sub-shape). The Cold-Read discipline was scoped to CHANGELOG.md; the release-body substrate uses a sidecar. n=3+ family instance under the meta-class. Retro material.
Operator directive (verbatim)
Immediate mechanical fixes (Phase 1)
Already done pre-tracker-file — v0.20.0, v0.21.0, v0.22.0 release-body PATCHed to match compressed CHANGELOG.md content via
edit_releaseAPI.Systemic elimination (Phase 2)
scripts/draft-release.shL108-125: remove sidecar preference branch. CHANGELOG.md becomes the only source.scripts/release-prep.shL344-382: remove sidecar-write step. Replace with armof any legacy sidecar so the file stops shipping stale content.scripts/release-prep.shL619-627: staging block adjusted to note the retirement-transition behaviour (stages the sidecar deletion on first post-#301 cut; no-op thereafter).scripts/lib/fragments.sh::fragment_get_summary+categorize_fragment_summaries: remove (dead code; only consumer was the sidecar-write).tests/fragments.bats: removefragment_get_summary+categorize_fragment_summariestests.tests/draft-release.bats: replace the "sidecar path bypasses CHANGELOG normalization" test with a regression guard asserting the sidecar is IGNORED even when present.tests/release-prep.bats: replace the stale-carryover guard with a #301 regression guard asserting the sidecar is DELETED on every cut.docs/integration.mdL518: drop the sidecar row from the Three Surfaces table.AGENTS.mdL209: drop the sidecar stale-carryover note..release-toolkit-release-notes.md: delete the committed file.External-consumer safety
Consumers with a committed sidecar are safe:
draft-release.shalways reads CHANGELOG.md regardless of sidecar presence..release-toolkit-release-notes.mdfrom your repo if present."Refs
daea): "the class doesn't announce itself; it hides in the surface you didn't check."