Skip to content

Say how the changelog is assembled without gh - #3063

Merged
soutaro merged 1 commit into
masterfrom
claude/release-doc-mcp-changelog
Aug 3, 2026
Merged

Say how the changelog is assembled without gh#3063
soutaro merged 1 commit into
masterfrom
claude/release-doc-mcp-changelog

Conversation

@soutaro

@soutaro soutaro commented Aug 3, 2026

Copy link
Copy Markdown
Member

gem:changelog and gem:changelog:json go through gh, which a Claude Code on the web session cannot reach. api.github.com is blocked at the agent proxy for anything the shell does — gh is not installed, installing it does not help, and rewriting the tasks against REST or Net::HTTP would be refused the same way, since the 403 is keyed on the session rather than on the client. The rest of the release is unaffected: gem:check_release and gem:tag read git and the working tree, and gem:gh_release runs on a runner.

So docs/release.md gains a section for the route that does work there — the GitHub MCP server — written as the three steps the task itself takes: resolve the base tag with git describe, list the commits with git log, then match the pull requests by head.sha against list_pull_requests. That intersection is what the GraphQL associatedPullRequests query answers, reached from the other side.

Most of the section is the ways it goes wrong, because the obvious shortcut is a trap. Reading the numbers out of Merge pull request #N subjects looks like it works on this repository and loses pull requests silently: the path filter the task uses (--full-history --simplify-merges -- . ':(exclude)rust') drops the merge commits while keeping the commits they merged, so five of the eight numbers of the 4.1.2 cycle disappear with them, and a squashed or rebased pull request never writes that subject at all. Also documented: head.sha only lands in the history because this repository merges with merge commits, the listing reports merged: false for merged pull requests so merged_at is the field to read, backports need their (cherry picked from commit <sha>) trailer resolved first as changelog_origins does, and the rust/ exclusion belongs on the pull requests rather than on the commit list.

Verified against the 4.1.2 cycle: the procedure yields exactly #3053#3061, with #3052 correctly falling outside v4.1.1. This is the list #3062 was written from.

Docs only, no code change.


Generated by Claude Code

`gem:changelog` and `gem:changelog:json` go through `gh`, which a Claude
Code on the web session cannot reach: `api.github.com` is blocked at the
agent proxy for anything the shell does, so `gh` is absent, installing it
does not help, and rewriting the tasks against REST or Net::HTTP would be
refused the same way. The rest of the release is unaffected -- the other
tasks read git, or run on a runner.

Document the route that does work there, the GitHub MCP server, as the
three steps the task itself takes: resolve the base tag, list the
commits, then match the pull requests by `head.sha`. That intersection
is what the GraphQL `associatedPullRequests` query answers.

The trap it warns about is the obvious shortcut of reading the numbers
out of `Merge pull request #N` subjects, which looks like it works and
loses pull requests silently: the path filter the task uses drops the
merge commits while keeping the commits they merged, and five of the
eight numbers of the 4.1.2 cycle went with them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014QUAgW2m9wsYE1cLM1fFbw
@soutaro soutaro added the skip-changelog Skip PRs in CHANGELOGs label Aug 3, 2026 — with Claude
@soutaro
soutaro added this pull request to the merge queue Aug 3, 2026
Merged via the queue into master with commit 269a752 Aug 3, 2026
23 checks passed
@soutaro
soutaro deleted the claude/release-doc-mcp-changelog branch August 3, 2026 03:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip-changelog Skip PRs in CHANGELOGs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants