Skip to content

docs(release): write down how to curate release notes - #1178

Closed
karlkfi wants to merge 1 commit into
mainfrom
claude/release-notes-method
Closed

karlkfi wants to merge 1 commit into
mainfrom
claude/release-notes-method

Conversation

@karlkfi

@karlkfi karlkfi commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

What

Adds release.md § 5 → Writing the curated notes: the method for turning a release window into notes, written after doing it for v1.3.0.

Why

v1.3.0 was the first release with curated rather than generated notes, and the method was worked out from scratch. Both inputs that feed it mislead in specific, repeatable ways.

operator-caveats-since.sh reports headings that changed, not headings that are new. v1.3.0 listed two BREAKING headings and neither was a caveat for an upgrading operator:

  • priorityTiers was already present in v1.2.0 — a pre-1.0 change whose section merely got edited
  • capacityGate.mode's removed values had only ever existed on main, and the field defaults to Off

Drafting from that output directly would have told operators a pre-1.0 change breaks their upgrade and sent them after an audit they did not need. The section gives the one-line git show <prev-tag>:… | grep -qF test that separates the two.

The commit log needs the inverse filter. Keep feat/fix in shipped scopes, drop ci/dogfood/test/docs/build, and say you dropped them, so 461 commits do not read as 57 user-facing changes.

Also recorded

  • Promote by danger, not by label. v1.3.0's most hazardous item carried no BREAKING heading at all: the PriorityClass allowlist CRD apply, which affects every install and whose rollback re-arms a cluster-wide outage.
  • "Guarded migration" is not "breaking change." If skipping a step stops the upgrade with a message naming the fix, saying breaking overstates it. If a wrong path fails silently, say so loudly.
  • Caveat what the validation run did not exercise. The dogfood gate runs against github.com, so it says nothing about GHES. Check the feature's own docs/plan/archive/ "what this will not verify" section before describing it as finished.
  • Keep the trailing (#NNNN). GitHub auto-links a bare #NNNN in a release body, so every line becomes traceable for free.
  • Count what you list. v1.3.0's draft claimed 25 features and listed 23.
  • Verify anchors by hand. make doc-links covers the repo, not a notes file outside it.
  • Chart versions carry no leading v. A copy-pasted helm command with one fails.
  • Run the deslop skill. Release notes are the most-read prose the project ships.

Testing

make doc-links green. Docs only, no code touched.

The new section lints at 1.0 violations per 100 words under the deslop plain-mode lint; the surrounding file is untouched and unmeasured.

v1.3.0 was the first release whose notes were curated rather than generated, and
the method was rediscovered from scratch. Both inputs mislead in ways worth
naming once.

operator-caveats-since.sh reports headings that CHANGED, not headings that are
NEW. v1.3.0 listed two BREAKING headings and neither was a caveat for an
upgrading operator: priorityTiers was already in v1.2.0, and capacityGate.mode's
removed values had only ever existed on main. Repeating them unexamined would
have sent operators after migrations they did not need. The section gives the
one-line git test that tells the two apart.

The commit log needs the inverse filter: keep what ships, drop ci/dogfood/test/
docs/build, and say you dropped them so 461 commits do not read as 57 user-facing
changes. Keeping the trailing (#NNNN) costs nothing and GitHub auto-links it.

Also recorded: promote by danger rather than by label (v1.3.0's most hazardous
item carried no BREAKING heading), distinguish a guarded migration from a
breaking change, caveat anything the validation run did not exercise, verify
anchors by hand because make doc-links cannot see a notes file, and the
chart-version form that makes a copy-pasted helm command fail.
@karlkfi

karlkfi commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator Author

Superseded by #1183, which carries this commit as its first of four and then corrects three of its claims — the blob/vX.Y.Z/ link form, the reason make doc-links does not cover a notes file, and the ~525-words/nine-links figure (the shipped notes ran 2100 words and 25 links). Merging this alone would put those on main. Nothing is lost: the commit is preserved in #1183.

@karlkfi karlkfi closed this Aug 3, 2026
@karlkfi
karlkfi deleted the claude/release-notes-method branch August 5, 2026 03:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant