Repository navigation
ci: the boundary gate reports on merge-queue entries, so it can be required - #1305
Merged
antoinetoussaint-byte merged 1 commit intoNov 4, 2026
Merged
Conversation
…quired Measured on #1303: with `boundaries` added as a required status check, the merge-queue entry sat in AWAITING_CHECKS with every other required context already green. `boundaries` was the one context absent from the queue head, because this workflow fired only on `pull_request` and `push`. A required context that never reports on a queue entry strands the pull request until the check-response timeout ejects it. `go.yml` already carries `merge_group` with a comment saying exactly this. This brings the boundary gate to the same footing so the requirement can be put back on the ruleset, where the gate actually binds rather than merely reports. 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.
What this fixes
The boundary gate (
scripts/check-boundaries.sh) runs on every pull request andreports green — but it is not a required status check, so nothing stops a pull
request that fails it from merging. Making it required is one API call. Doing
only that breaks the merge queue, and this PR is the other half.
How it was found, rather than reasoned about
I added
boundariesto this repo'smain protectionruleset at 18:30 today.#1303 was position 1 in the merge queue,
AWAITING_CHECKS, with itsmerge_groupCI run already completed/success. It stayed there.Diffing the queue head's check runs against the ruleset's required contexts
named exactly one:
Every other required context had reported on the queue entry.
boundaries.ymlfired on
pull_requestandpush: branches: [main]only, and the merge queuebuilds each entry on a
gh-readonly-queue/main/...branch and firesmerge_group. So the gate could not report there, and the entry would have satuntil
check_response_timeout_minutesejected it.I removed the requirement to unblock #1303, which then merged. This PR makes the
gate able to carry the requirement, so it can go back on.
The change
One trigger, plus the comment explaining why it is load-bearing.
go.ymlalready carriesmerge_groupwith a comment making this same point —including the observation that
lintstays pull-request-only on purposebecause
only-new-issueshas no diff baseline in a merge group. This brings theboundary gate to the same footing.
Why it matters beyond this repo
A gate that runs and reports is not a gate that blocks, and a required context
that cannot report is worse than no requirement at all — it converts a passing
pull request into a stranded one. Both failure modes are live on this fleet
today: only two of ten repositories checked had their security gate as a
required status check, and
codefly-dev/service-python-fastapihad no branchprotection or ruleset of any kind.
The same trap has a quieter form worth stating here, since this file is where
someone will look next: a path-filtered job reports
SKIPPEDrather thanabsent, which satisfies a required context.
codefly-dev/cli'spinsjobreported
SKIPPEDon #1289, #1288, #1286 and #1222 — all four — so requiring itwould enforce nothing while appearing to enforce everything. Before adding any
context to a ruleset, check it reports on a pull request and on a queue entry,
and that it reports a verdict rather than a skip.
After this merges
boundariesgoes back on themain protectionruleset's required contexts(16 contexts, up from the current 15). I will do that and confirm it against a
real queue entry rather than assume it.
Docs
No documented behaviour changes: the gate's rule, its script and its governing
handbook page (
concepts/boundaries.md) are untouched. What changes is wherethe existing gate reports, and that is recorded in the workflow comment itself —
the place the next person editing this trigger will read.
🤖 Generated with Claude Code