Skip to content

Collect release notes from fragments in a rolling draft pull request - #38

Merged
jtravs merged 3 commits into
mainfrom
chore/changelog-fragments
Nov 4, 2026
Merged

jtravs merged 3 commits into
mainfrom
chore/changelog-fragments

Conversation

@jtravs

@jtravs jtravs commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Second of three PRs bringing optmat up to solprop's standards. It's stacked on #9, so the diff here is this PR's alone; retarget it to main once #9 merges.

What changed

  • Fragments: pull requests add changelog.d/<slug>.<category>.md instead of editing CHANGELOG.md, so they stop colliding on it. poe changelog-check joins the gate, and poe changelog-preview and poe changelog-collect are new.
  • Rolling draft: .github/workflows/release-notes.yml keeps one draft PR, Prepare the next release notes, with the fragments collected. It never force-pushes, merges, tags or publishes, and stops if the branch is edited by hand.
  • Ported from solprop: tools/release_notes.py, tools/update_release_notes.py and their tests. solprop's copies are GPL-3.0-or-later and these are MIT. git log names John Travers as the only author of those files, so this rests on him relicensing his own code.
  • docs/developers/releasing.md: new, since nothing documented a release before.
  • tests/test_release_metadata.py: new. CITATION.cff must match the changelog's newest section, and the citation, .zenodo.json and pyproject.toml must name the same authors.
  • tests/test_counts.py: the check that the record counts appear in CHANGELOG.md is removed, because it would fail on every data PR once ordinary PRs stop editing that file. README and overview stay tested, and stating the counts is now a release step.
  • CI: permissions: contents: read, cancellation of superseded runs, and actions pinned by commit in ci.yml and release.yml, which holds the PyPI token. Job names are unchanged because the main ruleset requires them.

Worth checking

Needs doing by a maintainer: turn on Settings → Actions → General → Allow GitHub Actions to create and approve pull requests, which is off. Without it the workflow can't open the draft. My attempt to change it was refused by this tool's permission check.

Verified

  • poe check: passed, 21539 passed and 1 skipped, 100.00% coverage, docs built. Run before one later comment-only commit to pyproject.toml.
  • poe test-release: 5 passed, from a fresh worktree outside .claude/. In the .claude/ worktree it failed, for a reason unrelated to this change: The sdist includes build output when built from a worktree under .claude/ #37.
  • poe changelog-preview on this PR's fragment: correct Unreleased section, released history unchanged.
  • Private-wording scan: no new hits.

Not verified until merge: the workflow itself, which runs only from main. After merging and enabling the setting, gh workflow run release-notes.yml --ref main should produce the draft with this PR's fragment collected and removed.

🤖 Generated with Claude Code

jtravs and others added 2 commits November 4, 2026 10:56
Pull requests add a changelog.d/ fragment instead of editing CHANGELOG.md, and
a workflow keeps one draft pull request with them collected, as in solprop.
The tools and their tests are ported from solprop, relicensed MIT by their
author. A new page documents the release; a test keeps CITATION.cff and the
changelog's newest section in step; the changelog's counts move to a release
step, since ordinary pull requests no longer edit it.

CI reads the repository only, cancels superseded runs and pins its actions by
commit, which matters most for release.yml's PyPI token.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jtravs jtravs added the testing Tests, test lanes and CI coverage label Nov 4, 2026
Copilot AI balanced review requested due to automatic review settings November 4, 2026 11:12

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-04T11:14:29.563094Z 440c7d3 PR opened
🔒 Security Review ✅ Completed 2026-11-04T11:16:21.755483Z 440c7d3 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@codecov

codecov Bot commented Nov 4, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@jtravs
jtravs changed the base branch from chore/issue-standard to main November 4, 2026 12:08
@jtravs
jtravs merged commit 046a506 into main Nov 4, 2026
5 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

testing Tests, test lanes and CI coverage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants