π€ Agent-authored (autonomous babysit lane, fable-autopilot). Deferred carve-out recorded during #266 / #269, operator-ratified.
The gap
claude-security-review's required check asserts execution evidence β proof a security pass ran (ADR 0002's #509 addendum). Since #269 that claim is enforced by failing closed when an in-scope review could not run.
That enforcement is scoped to pull_request events only. A merge_group run passes through: it reports green without any review having happened.
Why it is deliberate, not an oversight
The pinned anthropics/claude-code-action cannot serve merge_group at all. At the pinned SHA 12531344451323133b0493233c759991ac61da12 (v1.0.174), merge_group appears in neither ENTITY_EVENT_NAMES nor AUTOMATION_EVENT_NAMES, so parseGitHubContext reaches:
throw new Error(`Unsupported event type: ${context.eventName}`);
β src/github/context.ts:251
Every merge_group invocation therefore throws, for a cause no head change can fix and no retry can clear. Failing closed there would pin a permanently red required check and wedge any adopting consumer's merge queue β with no explanatory PR comment, since the comment steps are PR-gated.
Separately, track_progress: true is hardcoded on this lane and its validator rejects every non-pull_request event (src/modes/detector.ts:84-98), so workflow_dispatch / schedule are in the same category.
Why it is low-urgency today
No org repo runs a merge queue. The gap is latent: it becomes real only when one is enabled. claude-code-plugins β the only consumer where this check is required β triggers on pull_request only.
Trigger to revisit
Any org repo adopting a merge queue on a branch protected by security-review-gate, or claude-code-action gaining merge_group support upstream β whichever comes first.
At that point the merge queue is the merge gate, so a green-without-review check there is exactly the silent-evidence failure #266 was filed to eliminate.
Acceptance criteria (when the trigger fires)
- A
merge_group run whose security review could not execute does not produce a required-check state that permits the queued merge.
- The remedy does not reintroduce the permanent-wedge failure mode: whatever blocks must be clearable by an operator or by a completing review, not stuck on an event the action rejects.
- The
merge_group caveat is removed from the reusable's CONSUMER CONTRACT and from the POSTURE carve-out once the gap is closed.
Where the carve-out is documented
π€ Agent-authored (autonomous babysit lane, fable-autopilot). Deferred carve-out recorded during #266 / #269, operator-ratified.
The gap
claude-security-review's required check asserts execution evidence β proof a security pass ran (ADR 0002's #509 addendum). Since #269 that claim is enforced by failing closed when an in-scope review could not run.That enforcement is scoped to
pull_requestevents only. Amerge_grouprun passes through: it reports green without any review having happened.Why it is deliberate, not an oversight
The pinned
anthropics/claude-code-actioncannot servemerge_groupat all. At the pinned SHA12531344451323133b0493233c759991ac61da12(v1.0.174),merge_groupappears in neitherENTITY_EVENT_NAMESnorAUTOMATION_EVENT_NAMES, soparseGitHubContextreaches:β
src/github/context.ts:251Every
merge_groupinvocation therefore throws, for a cause no head change can fix and no retry can clear. Failing closed there would pin a permanently red required check and wedge any adopting consumer's merge queue β with no explanatory PR comment, since the comment steps are PR-gated.Separately,
track_progress: trueis hardcoded on this lane and its validator rejects every non-pull_requestevent (src/modes/detector.ts:84-98), soworkflow_dispatch/scheduleare in the same category.Why it is low-urgency today
No org repo runs a merge queue. The gap is latent: it becomes real only when one is enabled.
claude-code-pluginsβ the only consumer where this check is required β triggers onpull_requestonly.Trigger to revisit
Any org repo adopting a merge queue on a branch protected by
security-review-gate, orclaude-code-actiongainingmerge_groupsupport upstream β whichever comes first.At that point the merge queue is the merge gate, so a green-without-review check there is exactly the silent-evidence failure #266 was filed to eliminate.
Acceptance criteria (when the trigger fires)
merge_grouprun whose security review could not execute does not produce a required-check state that permits the queued merge.merge_groupcaveat is removed from the reusable's CONSUMER CONTRACT and from the POSTURE carve-out once the gap is closed.Where the carve-out is documented
.github/workflows/claude-security-review.ymlβ POSTURE section (scope-of-claim paragraph) and themerge_groupline of the CONSUMER CONTRACT.