fix(ci): partition pr-review concurrency by draft flag#13
Merged
Conversation
Co-Authored-By: Claude Fable 5 <[email protected]>
|
Auto-merge blocked — risk-tier paths touched. This Claude-authored PR modifies files matching the risk-tier patterns Matched files: |
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 second of two independent routes to the
review / Claude Reviewfail-open. The trigger half (ready_for_reviewintypes:) is already fleet-wide; this is the other half.The load-bearing fact: GitHub counts a
skippedrequired context as SATISFIED. So when this check skips, the PR merges green and unreviewed — silently.How the concurrency group causes that: the reusable gates its job on
draft == false, so a stale draft-payloadsynchronizerun is a guaranteed no-op — but in a sharedclaude-review-<PR>group it can cancel (or replace, if queued) the realready_for_reviewrun. Result:skipped→ satisfied → merged unreviewed. Fixing the trigger alone does not close this.Why it hits the PRs that matter most: fleet policy makes DRAFT the standard auto-merge opt-out, so every manual-merge / high-risk PR is draft→ready — the recommended workflow was the one most likely to skip review.
Not theoretical:
wxa-mcp-server#339merged unreviewed through this class and took jake-ai down for ~13h (0 tools available) on 2026-07-14/15.Reference fix:
wxa-mcp-server#344.pr-classify,pr-codex-review,claude-author-automergeandsafe-paths-automergealready partition this way —pr-reviewwas the lone holdout (same race asattaxion_dev#303).Non-draft runs keep today's supersede semantics: a newer push still cancels an in-flight stale run.
Note for the merger:
claude-code-actionrejects PRs whose diff touches their own calling workflow file, soreview / Claude Reviewcannot pass here by construction. Where that check is required, usetemplates/ci-workflows/scripts/merge-workflow-only-pr.sh.Auto-merge rationale: MANUAL MERGE — .github/workflows/** is a high-risk surface. CI-config only; no application code.
🤖 Generated with Claude Code