Repository navigation
Release PRs with an agent-drafted, editable changelog - #200
Closed
calvinleng-science wants to merge 1 commit into
Closed
calvinleng-science wants to merge 1 commit into
calvinleng-science wants to merge 1 commit into
Conversation
calvinleng-science
force-pushed
the
calvin/release-notes-publish
branch
from
October 27, 2026 20:15
193dd48 to
e33280b
Compare
release-open (manual) bumps setup.py on a release/v<version> branch and opens a PR into main labelled `release`. Its description holds a changelog drafted by Claude Code on the self-hosted `changelog-agent` runner with read-only repo tools (.github/actions/draft-changelog, setup in RUNNER.md). If the agent hasn't finished within 10 minutes, the PR gets the commit subjects instead. Merging it runs release-tag, which tags the merge commit and dispatches release.yml. After PyPI, release.yml creates the GitHub Release from the PR's (edited) changelog; hand-pushed tags get GitHub's generated notes.
calvinleng-science
force-pushed
the
calvin/release-notes-publish
branch
from
October 27, 2026 22:41
bbcc648 to
6ac7546
Compare
Contributor
Author
|
Closing for now: the self-hosted changelog-agent runner can't be set up for this repo yet. The work is kept on local branches for later. |
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
New release flow
release-open(Actions → Run workflow; choose patch / minor / major, or an exact version). It bumpsversion=insetup.pyon arelease/v<version>branch and opens a PR intomainlabelledrelease. The changelog sits between<!-- changelog:start -->/<!-- changelog:end -->in the PR description.v*tag, or ifsetup.pyno longer matches the last tag. Versions are bumped only by this workflow from now on.release-tag(on merge of areleasePR) checks the changelog isn't empty and tags the merge commitv<version>. It then startsrelease.ymlon that tag withworkflow_dispatch, because a tag pushed withGITHUB_TOKENdoesn't trigger workflows.release.ymlruns as before: test PyPI → validate → PyPI. It also acceptsworkflow_dispatch;sdistonly runs when the ref is av*tag. A newgithub-releasejob then creates the GitHub Release from the release PR's changelog. A hand-pushed tag has no release PR, so it falls back to GitHub's generated notes since the previous tag.Pushing a
v*tag by hand still works.Changelog drafted by Claude Code
.github/actions/draft-changelogruns Claude Code headless on a self-hosted runner labelledchangelog-agent. It reads the commits since the last tag, looking at the diffs where a message isn't clear, and writes user-facing notes under New / Fixed / Changed.git log/show/diff, Read, Grep and Glob. It loads no settings, hooks or MCP servers from the box, and stops at $5 or 9 minutes.release-open, which someone with write access starts by hand. The self-hosted job has read-only repo access; pushing and opening the PR happen on GitHub-hosted runners..github/actions/draft-changelog/RUNNER.md.Example, run locally for v2.8.1..v2.8.4:
Publishing these notes to the docs site (downloads.science.xyz) is left for a follow-up.
Before merging
release-opencan't open the PR.Runner (not blocking the merge)
A runner directory is staged on carbon22 (
~/synapse-python-changelog-actions-runner) with Claude Code installed. It still needs:config.sh --labels changelog-agent).sudo ./svc.sh install <runner user>..env.Until then, release PRs get the plain commit list after 10 minutes. That machine also runs other runners, so moving this one to its own user is recommended (see RUNNER.md).
Notes
GITHUB_TOKEN, somain/cla-checkwon't run on release PRs. They only changesetup.py, andmainhas no required checks.Testing
changelog-agentlabel.setup.pyedit (v2.8.4 → 2.8.5 / 2.9.0 / 3.0.0), changelog extraction, the release-PR lookup and the jobs-API query on real runs.