Skip to content

ci(claude-security-review): merge-queue execution evidence β€” merge_group runs pass through without reviewΒ #272

Description

@kyle-sexton

πŸ€– 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    automatedOpened by automation.needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: lowNice-to-have, cosmetic, or speculative; opportunistic.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions