Skip to content

Write CHANGELOG only when cutting a release - #848

Merged
Mikola Lysenko (mikolalysenko) merged 3 commits into
mainfrom
docs/changelog-release-only
Oct 5, 2026
Merged

Mikola Lysenko (mikolalysenko) merged 3 commits into
mainfrom
docs/changelog-release-only

Conversation

@mikolalysenko

@mikolalysenko Mikola Lysenko (mikolalysenko) commented Oct 5, 2026 •

Copy link
Copy Markdown
Collaborator

PRs stop editing CHANGELOG.md. Release notes get written once, at release time, by the release agent: the release train's release-sync routine, or whoever cuts a release by hand. It works from the PRs merged since the last tag and from the code they changed.

  • AGENTS.md (new, imported by a one-line CLAUDE.md so Claude Code sessions and cloud routines load it automatically): never touch CHANGELOG.md outside a release/v* or release-sync PR, and restore it if a PR you work on already changed it.
  • CHANGELOG.md preamble: replaces Release train PR 1: release.py core (offline stamp, rc versions, CHANGELOG sync/fold, blocker gate) #643's "Add entries under [Unreleased]" with "PRs never edit this file; only the release agent writes [Unreleased]". The rule that ### headings set the bump level is unchanged.
  • docs/releasing.md step 1: the [Unreleased] notes are written at cut time from git log --first-parent <last-tag>..origin/main and the code.

Labeled agent:needs-human so the PR burn-down routine leaves it alone. Its new rule would otherwise revert this PR's CHANGELOG.md edit. The routine prompts and the shared procedure docs on bughunt/ledger and arch-audit/ledger already carry the same rule.

Follow-up for the release-train design (not changed here): DESIGN.md §3.7 step 2 still describes the routine as a gap-filler, capped at 20 bullets for commits that "have no CHANGELOG change". Under this policy it becomes the only writer, so the cap and the gap-fill framing need revisiting.

🤖 Generated with Claude Code

Agents were adding long per-PR changelog entries. Release notes are
now written once, at cut time, by the release agent from the merged
PR log and the code. AGENTS.md (imported by CLAUDE.md) tells every
agent to leave CHANGELOG.md alone, and the release runbook says
where the notes come from.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts:
#	docs/releasing.md
@mikolalysenko
Mikola Lysenko (mikolalysenko) merged commit 428b938 into main Oct 5, 2026
210 checks passed
@mikolalysenko
Mikola Lysenko (mikolalysenko) deleted the docs/changelog-release-only branch October 5, 2026 13:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants