Repository navigation
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
The v0.12.0 release page was 79K characters: every
changelog.dnote pasted in order, with no summary and no PR links. Two of the notes made up two thirds of it. Following the team's feedback (Azim: Polars-style highlights, database terms, Conventional Commits PR titles; Andrew: say why a release breaks things), this change does two things.Example: https://gist.github.com/pronskiy/79ed411306fcd90fcff8c4d58fa9e006?permalink_comment_id=6407395#gistcomment-6407395
Format 2 for every release after v0.12.0 (
scripts/release_notes.py):changelog.d/vX.Y.Z.md, written in the release-prep PR, holds the intro, a## Why these changessection (required when any note is breaking), 3 to 5###highlights, the## Contributorsto thank and an optional## Note order.## Note ordersection in the release file puts the most important notes first; it is never printed.## Contributorssection (- @handlelines) becomes a thank-you line before the footer. The guide gives agh apicommand that lists the PR authors.## Highlightsempty while they are written: preview and CI pass, and the snapshot refuses a minor release until 3 to 5 are in.diff.renamesandlog.followsettings, and a link replaced by the release squash itself is accepted.body --tag v0.12.0.Release Note Gate (
scripts/check-pr-title.py,.github/workflows/release-note-gate.yml):type(scope)!: summary. The types arefeat fix perf refactor docs test ci build chore revert rfc bench release; GitHub'sRevert "…"titles also pass.feat,fixorperfPR adds a note, and a!PR adds a.breaking.mdnote. Theskip-changeloglabel waives the note, never the title.pull_request_target, base-branch code only, the head fetched as data, title and labels passed throughenv:. The merge-group run passes without a check.Docs: the release-notes guide (release file, caps, highlight style, PR titles), the PR template, AGENTS.md and
docs/dev/ci.md.Backing issue / RFC
deny.tomledit / comment / one-line CI) — no issue/RFC requiredNo issue or RFC backs this yet; the design came from the team's discussion of the v0.12.0 release notes.
Checklist
Local verification
Run inside the documentation environment (markdown-it-py 4.0.0):
python3 scripts/test_release_notes.py— 94 tests, OK (54 before)python3 scripts/check-pr-title.py --self-test— 25/25 cases passpython3 scripts/release_notes.py verify --version v0.12.0 --target v0.12.0— OKpython3 scripts/release_notes.py body --tag v0.12.0 --target v0.12.0 | shasum -a 256—60f73177…db752, the same as before the changepython3 scripts/check-docs.py,bash scripts/check-agents-md.sh,python3 scripts/check-merge-group-triggers.py,python3 scripts/check-workflow-action-pins.py,python3 scripts/check-change-classes.py,python3 scripts/check-classify-copy.py— all pass#123links, and its output was identical withdiff.renamesset tocopiesand tofalsetypos— not run locally (not installed); CI runs itNotes for reviewers
release.jsonbump (P1).changelog.d/release.jsonstill names v0.12.0 onmain, so any new note failscheck-docs. That is why this PR carries no changelog note of its own. Once the bump lands, the note is one line:- Release pages open with an intro and highlights, explain upgrade actions, and link each change to its pull request.pull_request_targetruns the base branch's workflow, so it starts on PRs opened after this merges.skip-changeloglabelRelease Note Gateto.github/branch-protection.jsonand apply it## Why these changessection with no breaking notes renders an empty "Upgrade actions" heading.-(the Fix Regression Gate has the same pattern).formatprints a traceback instead of an error._is refused).