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
{{ message }}
Repository navigation
pm-dispatch(contract-review): a contract-review FAIL on the current head disarms auto-merge at once; #27667 landed 20 minutes after its delta FAIL and turned main red (p0 #27806) #27809
Filing gate ① — a process gap measured on the board. The fault is in the skills, as the maintainer ruled for this family on #27345 (「PR 欠契约复审就合入也还是技能的问题」). ⛔ Not a claim. Grading and lane are triage's; the change is under .claude/** (Tier H), so this seat does not touch it.
What happened (measured)
Event
Comment / run
Time
Seat check after a main merge moved the head to af33de9c; auto-merge stays armed from the earlier ACCEPT
Nothing between the FAIL record and the merge removed the PR from the queue. The FAIL was posted on the PR; auto-merge had been armed by the seat's ACCEPT on an earlier head.
The gap
contract-review.md and the #27345 fix say a PASS must name the current head before landing, and that a seat must not arm a PR before that. They do not say what happens to a PR that is already armed when the review on its current head comes back FAIL, or when a main merge moves the head after arming. Nobody is told to disarm, so the queue lands the FAIL head. (The merge-group run also skipped the dogfood shards for this diff; that filter-parity blind spot is #27806's follow-up and not this card's.)
Wanted (route is triage's)
A FAIL disarms. When a contract-review record on the PR's current head is FAIL, auto-merge is disabled at once (relay automerge_disable or the queue's dequeue), by the reviewer that posts the FAIL, or by the owning seat on its next event if the reviewer cannot write that op. Re-arming needs a PASS naming the new head.
A moved head disarms. When a seat's ACCEPT names a head that is no longer the PR's head (a main merge that changes the reviewed surface), the owning seat disarms until a delta PASS or a Regen-provenance: line names the new head. This is what triage asked of the seat in 6510422663; it should be a written rule, not a one-off note.
The rule text: a contract-review FAIL on the current head disarms auto-merge at once. The owning seat does it on reading the FAIL, and the review seat names it in the record. Nothing lands until a PASS names the head.
It sits under .claude/** (governed), so Tier H. A rule change: the maintainer approves.
Claim: PM loop round 1 · 2026-10-30T01:08Z
Session: session_016WV4cwDXbDuhAz7Zn6Dv8i (card thread; seat session_016WV4d1QkPVVzNz3FJqb2iS)
Account: os-elon-musk
Branch: claude/project-thread-ldqpch (the card thread's platform-assigned branch — the recorded platform exception; amended by the seat when the thread reported it)
Worktree: objectstack-issue-27809
Domain: domain:skills
Seat: domain:skills#2 (lane position 2 of the p1 rung: #27637 is position 1, seat 1's)
File surface: .claude/skills/pm-dispatch/references/contract-review.md (the one rule site, beside the landing pre-check's PASS-on-current-head line), plus in-place pointer edits at .claude/skills/pm-dispatch/references/landing-operations.md:12 and .claude/skills/pm-dispatch/SKILL.md:200 where they restate the arm/land sequence (amended: execution-duties.md does not restate it, measured by the thread on fec60e00b); ⛔ no script, no new CI gate (triage: 「新增门禁默认否」) — stop on breach; explain in the report
Container & model: M, mode:thread, model: opus — dispatch-gates --tier answers MANDATORY claude-fable-5-1 for SKILL.md (clause ①); exit taken: a one-line-class mechanical governed edit drops to opus execution (the SKILL.md change is an in-place pointer append to :200; the rule itself lives in references/**, outside the path mandate), compensated by the skill-face review at claude-fable-5-1, plus the proactive low-headroom downgrade (「fable 不多,后续尽量认领不需要契约复审的卡」); effort: xhigh (p1) (amended)
Clause-②: no
Metadata-protocol: none
Responsibility: governed rules text that decides when a seat may leave a PR armed; the measured gap is #27667, which landed on a FAIL head through an auto-merge armed by an ACCEPT on an earlier head (p0 #27806).
Thread-read: 6512254201
Premise: holds (grep -n -i 'disarm\|automerge_disable\|auto-merge' .claude/skills/pm-dispatch/references/contract-review.md on origin/mainfec60e00b → no hits; the relay op automerge_disable exists in scripts/pm/fleet-write/ops.mjs)
Serial constraints cleared: none — no open PR touches .claude/skills/pm-dispatch/** at claim time. Governed .claude/** rules text: owes a CONTRACT_REVIEW_TIER contract review before the queue; landing per triage 6512254201 is Tier H (maintainer approves), stricter than the register's claude-tree row, so the seat requests the governed approvers.
ACCEPT → PR #27845 comment 6513343937 (Tier H per triage; contract review PASS 6513017524 on b02ba2d, delta PASS 6513333002 on head 5855983; CI green; approvers requested). Review should-fix 3 filed as #27848. Awaiting a GOVERNED_APPROVERS approval, then the seat lands it.
Landed: PR #27845 merged (c91a004f8, 2026-10-30T02:27Z) after os-zhuang's approval; pm:dispatched stripped with this note. The disarm rule is live from this commit: a contract-review FAIL on the current head, or a non-exception head move, disarms an armed PR. Review should-fix 3 is #27848 (it waits on the first measured automerge_disable / pr_draft stroke). Nothing further owed on this card.
Activity
objectstack-fleet commentedon Oct 30, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: p1 ·
domain:skills·area:devpath· 2026-10-30T00:57Z⛔ Not a claim.
.claude/**(governed), so Tier H. A rule change: the maintainer approves.pm:queue.Generated by Claude Code
objectstack-fleet commentedon Oct 30, 2026
domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS
Claim: PM loop round 1 · 2026-10-30T01:08Z
Session:
session_016WV4cwDXbDuhAz7Zn6Dv8i(card thread; seatsession_016WV4d1QkPVVzNz3FJqb2iS)Account:
os-elon-muskBranch:
claude/project-thread-ldqpch(the card thread's platform-assigned branch — the recorded platform exception; amended by the seat when the thread reported it)Worktree:
objectstack-issue-27809Domain:
domain:skillsSeat:
domain:skills#2(lane position 2 of the p1 rung: #27637 is position 1, seat 1's)File surface:
.claude/skills/pm-dispatch/references/contract-review.md(the one rule site, beside the landing pre-check's PASS-on-current-head line), plus in-place pointer edits at.claude/skills/pm-dispatch/references/landing-operations.md:12and.claude/skills/pm-dispatch/SKILL.md:200where they restate the arm/land sequence (amended:execution-duties.mddoes not restate it, measured by the thread onfec60e00b); ⛔ no script, no new CI gate (triage: 「新增门禁默认否」) — stop on breach; explain in the reportContainer & model:
M,mode:thread,model: opus—dispatch-gates --tieranswers MANDATORY claude-fable-5-1 forSKILL.md(clause ①); exit taken: a one-line-class mechanical governed edit drops to opus execution (theSKILL.mdchange is an in-place pointer append to:200; the rule itself lives inreferences/**, outside the path mandate), compensated by the skill-face review at claude-fable-5-1, plus the proactive low-headroom downgrade (「fable 不多,后续尽量认领不需要契约复审的卡」);effort: xhigh(p1) (amended)Clause-②: no
Metadata-protocol: none
Responsibility: governed rules text that decides when a seat may leave a PR armed; the measured gap is #27667, which landed on a FAIL head through an auto-merge armed by an ACCEPT on an earlier head (p0 #27806).
Thread-read: 6512254201
Premise: holds (
grep -n -i 'disarm\|automerge_disable\|auto-merge' .claude/skills/pm-dispatch/references/contract-review.mdonorigin/mainfec60e00b→ no hits; the relay opautomerge_disableexists inscripts/pm/fleet-write/ops.mjs)Serial constraints cleared: none — no open PR touches
.claude/skills/pm-dispatch/**at claim time. Governed.claude/**rules text: owes a CONTRACT_REVIEW_TIER contract review before the queue; landing per triage 6512254201 is Tier H (maintainer approves), stricter than the register'sclaude-treerow, so the seat requests the governed approvers.objectstack-fleet commentedon Oct 30, 2026
domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS
ACCEPT → PR #27845 comment 6513343937 (Tier H per triage; contract review PASS 6513017524 on b02ba2d, delta PASS 6513333002 on head 5855983; CI green; approvers requested). Review should-fix 3 filed as #27848. Awaiting a GOVERNED_APPROVERS approval, then the seat lands it.
objectstack-fleet commentedon Oct 30, 2026
domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS
Landed: PR #27845 merged (
c91a004f8, 2026-10-30T02:27Z) after os-zhuang's approval;pm:dispatchedstripped with this note. The disarm rule is live from this commit: a contract-review FAIL on the current head, or a non-exception head move, disarms an armed PR. Review should-fix 3 is #27848 (it waits on the first measuredautomerge_disable/pr_draftstroke). Nothing further owed on this card.