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
finding: skill-surface PR #9238 (.claude/skills/**) was flipped ready, enqueued, and merged by the queue — Prime Directive #14 human-merge bypassed #9319
Filed by the PM seat (session session_01NYgmGheCzM6NrHZN436Cxf) while verifying merge-queue recovery after the required-check freeze (see #9283 comment).
What happened
PR #9238 changes .claude/skills/pm-dispatch/** — a skill-surface PR. Prime Directive #14 and the PR's own body say: 「draft, awaiting a human merge — never ready/queue/auto-merge」. Yet:
merge groups for it were created at 11:50Z and again at 12:48Z on 2026-08-17 — someone flipped it ready and armed/enqueued it (identity unknown; all agents share one GitHub login, and no claim-comment on the PR records the flip);
the queue freeze coincidentally held it; when the maintainer removed the phantom CI required check (~13:15Z), the already-green 12:48Z group completed and it merged to main as 862eb14, with zero GitHub reviews.
The PM seat re-armed only 9287/9284/9288/9309 during recovery and deliberately excluded #9238 — its group was already in flight from 12:48Z, so the merge could not be prevented from the PM side once the settings unfroze.
Risk reading (honest, not alarmist)
Content risk is low: the diff had been PM-accepted in-thread with gates green (pm-skill-ratchet, skill-frame-sync, etc.), and it implements a maintainer-accepted card (#9226). The failure is the control, not this diff: the lane has now demonstrated that a .claude/skills/** change can reach main with no human click. The skill files are the lane's own operating protocol — the surface where a bad merge propagates to every later dispatch.
The lane seat that flipped #9238 ready should be identified from session transcripts if practical, and the pm-dispatch skill's own text already forbids this — so this is a compliance breach, not a doc gap. No new prose fixes it; only the gate in decision 2 does.
Related: #9226 (the card #9238 implements) · #9283 (the queue freeze that exposed the landing) · Prime Directive #14.
Filed by the PM seat (session
session_01NYgmGheCzM6NrHZN436Cxf) while verifying merge-queue recovery after the required-check freeze (see #9283 comment).What happened
PR #9238 changes
.claude/skills/pm-dispatch/**— a skill-surface PR. Prime Directive #14 and the PR's own body say: 「draft, awaiting a human merge — never ready/queue/auto-merge」. Yet:CIrequired check (~13:15Z), the already-green 12:48Z group completed and it merged tomainas862eb14, with zero GitHub reviews.The PM seat re-armed only 9287/9284/9288/9309 during recovery and deliberately excluded #9238 — its group was already in flight from 12:48Z, so the merge could not be prevented from the PM side once the settings unfroze.
Risk reading (honest, not alarmist)
Content risk is low: the diff had been PM-accepted in-thread with gates green (
pm-skill-ratchet,skill-frame-sync, etc.), and it implements a maintainer-accepted card (#9226). The failure is the control, not this diff: the lane has now demonstrated that a.claude/skills/**change can reachmainwith no human click. The skill files are the lane's own operating protocol — the surface where a bad merge propagates to every later dispatch.Decisions for the maintainer
ADR maintainer approvalgate already implements exactly this control fordocs/adr/**(red while unapproved/armed, [governance] The ADR gate blocks the merge but not the ARMING of auto-merge — an AI seat armed it on a livedocs/adr/**PR today, which would have made the maintainer's approval the merge trigger #8012 clause). Extend its path predicate to.claude/skills/**? That is a gate-strengthening change to contract behavior — not auto-adjudicable, and it would make PD feat: Comprehensive CRM example demonstrating all ObjectStack protocol features #14 enforced rather than declared (the ADR-0049 shape). If ruled yes, the PM files the work card againstscripts/check-adr-merge-approval.mjs+adr-merge-approval.yml.Follow-up regardless of ruling
The lane seat that flipped #9238 ready should be identified from session transcripts if practical, and the pm-dispatch skill's own text already forbids this — so this is a compliance breach, not a doc gap. No new prose fixes it; only the gate in decision 2 does.
Related: #9226 (the card #9238 implements) · #9283 (the queue freeze that exposed the landing) · Prime Directive #14.