fix(ci): a red base must not trap the PR that repairs it - #62
Merged
Conversation
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.
Ported from bitbaum/orangecat#650.
The sweep refused to merge anything onto a base whose CI failed. Right for an
unrelated change — a broken base should not quietly collect more of them. A
deadlock when the PR is the repair: the fix cannot travel the path its own
redness blocks, so only a human can move it. (Froze
maonakamoto/aoz-housingoutright on 2026-08-07.)
Now the sweep identifies which jobs are red and lets a PR through only if its
own checks pass every one of them. Not a weakening: a PR's checks run on the
merge result (
refs/pull/N/merge), so green-on-those-jobs is direct evidencethe post-merge base is better than the pre-merge base.
Still refused: a PR that does not run the failing job, one that covers only some
of them, and a base failure whose jobs cannot be identified (falls back to the old
blanket refusal). A green base is untouched and makes no extra API call.
Verified against the real script with a fake
ghon PATH; 5 tests upstream.🤖 Generated with Claude Code