A release pull request, and the merge of it publishes - #9
Open
SPIKESPIGEL404 wants to merge 1 commit into
Open
Conversation
The maintenance system had a hole at the end of it: everything could merge itself, and then nothing happened. Publishing meant remembering to draft a release by hand, which is the step most likely to be forgotten and the one where forgetting is least visible. release-please now keeps a single pull request open against main, holding the next version and the changelog it derived from the commit subjects since the last release, rewriting itself as more lands. Nothing is published while it sits there. Merging it is the decision to ship — the one step this whole system asks a person to perform — and that merge creates the tag and the release, from which publish.yml publishes. That pull request is deliberately absent from plugin-automerge's list of automation branches. It is the gate, and a gate that opens itself is furniture. publish.yml gains a workflow_call trigger and keeps its release one. release-please creates the release with GITHUB_TOKEN, and a release created by that token does not trigger workflows, so the publish has to be invoked rather than waited for. The release trigger stays for a release drafted by hand — which is how the first version goes out, before there is a previous release for release-please to count from. The daily schedule on release.yml exists for the same reason in reverse: a merge performed by GitHub's auto-merge is attributed to github-actions[bot], and a push from that token triggers nothing — so a Dependabot bump that merges itself would never reach the push trigger, and the release pull request would quietly stop reflecting it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Closes the hole at the end of the maintenance system: everything could merge
itself, and then nothing happened. Publishing meant remembering to draft a
release by hand — the step most likely to be forgotten, and the one where
forgetting is least visible.
The flow
That release PR is deliberately absent from
plugin-automerge's automationbranch list. It is the gate. A gate that opens itself is furniture.
Two GITHUB_TOKEN facts this is built around
Both are the same rule — a token-driven event triggers no workflow — and
both would have caused silent failures:
release-please creates the release with
GITHUB_TOKEN, sopublish.yml'srelease: publishedtrigger would never fire. Henceworkflow_call: the publish is invoked, not waited for. Thereleasetrigger stays for a hand-drafted release, which is how the first version
goes out — there's no previous release for release-please to count from yet.
A merge performed by GitHub's auto-merge is attributed to
github-actions[bot], so a Dependabot PR that merges itself neverreaches
release.yml'spushtrigger. Hence the dailyschedule— withoutit the release PR would quietly stop reflecting anything that merged on its
own.
That second one is not hypothetical. Four Dependabot PRs auto-merged this
afternoon (TypeScript 7,
@types/node26, vitest 4, and on pi thepi-coding-agentharness bump) and no CI ran onmainfor any of them. Iverified all three
mainbranches build and test green by hand; they do. Butthat verification was manual, and it should not have to be — see below.
Before this does anything
NPM_TOKENas a repository secret and annpmenvironment. Until both exist,the publish job is the only part that fails; release-please will happily keep
its PR current without them.
Still open, separately
With
strict: falsebranch protection, independently-green PRs can combineinto a broken
mainand nothing checks — and auto-merged pushes don't run CIon
maineither. Worth deciding on: a merge queue,strict: true, or ascheduled CI run on
main.