You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(devx): gate .claude/skills/** on the ADR merge-approval check (#9395) (#9407)
Implements the maintainer ruling on #9319 decision 2 (2026-08-17): the
`ADR maintainer approval` gate's path predicate extends to
`.claude/skills/**`, so Prime Directive #14's human-merge reservation is
machine-enforced on the lane's own protocol surface rather than declared.
- the single ADR prefix becomes a GOVERNED_SURFACES table: identical pass
conditions (an APPROVED standing + no armed auto-merge), distinct failure
wording, each surface naming its own rule;
- the #8012 armed-auto-merge clause reaches the new path class identically,
with its own emptiness proof (identical reviews, opposite verdicts);
- one path hit governs the whole PR -- a mixed diff is never judged by
proportion, pinned by comparing a 1-of-4 verdict with a 1-of-1 one;
- the report renderer is pure, so the "each surface names its own rule"
requirement is asserted on the text an operator actually reads;
- PR #9238 -- the skills-only PR the merge queue landed with zero reviews --
joins the historical replay fixtures as a real capture, pinned RED.
The workflow needed no trigger change: it carries no `paths` filter (a path
filter would skip the whole workflow and hang the queue on a required context
that never reports), and #9238 already produced a completed `ADR maintainer
approval` check run through the clean path.
No existing check is weakened: every prior assertion still runs, and the
self-test goes from 66 to 96 assertions.
Fixes#9395
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments