fix(release): gate Release PR transitions#11094
Draft
gustavovalverde wants to merge 1 commit into
Draft
Conversation
10 tasks
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.
Motivation
The v6.2.2 Release PR was merged outside the Mergify queue before approval and Release readiness completed. The post-merge controller initially rejected it, but accepted a late approval on rerun because it queried the PR's live review decision instead of verifying the merge path.
The release squash push also ran release-plz while v6.2.2 was still absent from crates.io, which created the immediate duplicate Release PR #11087. Automatic publication needs one supported transition, and release-plz must not react to its own release commit.
Part of #11092.
Solution
Require GitHub to report the
mergifybot as the Release PR merge actor before automatic publication can start. This reuses the existing Mergify queue conditions as the approval and check boundary; a direct or administrator merge remains blocked on every rerun and requires explicitly authorized break-glass recovery.Give every generated Release PR the reserved
chore: releasetitle prefix, and skip Release PR generation for both that prefix and commits authored by thezebra-releaseapp. The generated checklist and release documentation now identify approval followed by Mergify queueing as the single automatic path, while the existing manual check and resume dispatches remain exit hatches into the same controller.Tests
actionlint,zizmor --pedantic, markdownlint, TOML parsing, and focused release-transition fixtures pass. Live GraphQL evidence confirms that a queued Zebra merge recordsmergedByas themergifybot while the v6.2.2 direct merge records a user.Specifications & References
Follow-up Work
This PR closes the observed release-squash self-trigger, not the full registry blind window. An unrelated push to
mainbefore the previous Cargo release reaches crates.io can still make the prior changes appear unreleased. #11092 tracks the release-in-flight boundary, Cargo acceleration, parallel artifact preparation, rehearsals, and the final single-owner cutover.AI Disclosure
PR Checklist
type(scope): description