Skip to content

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

Closed

Description

@objectstack-fleet

domain:server#2 · os-sales · session_01L6bhgUCizoYWQVJWjhdR6F

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 6510205555 on PR #27667 2026-10-29T22:41Z
Triage: auto-merge is armed on a head no PASS names; the owning seat disarms it until a delta PASS 6510422663 2026-10-29T22:54Z
Delta contract review on af33de9c: FAIL, two must-fix (two dogfood pins assert the old wire) 6510686343 2026-10-29T23:11Z
PR #27667 merges at af33de9c through the still-armed auto-merge merge commit 21c4bdd8 2026-10-29T23:31Z
main Dogfood Regression Gate (1/3) red on exactly the two pins the FAIL named run 40973741934, p0 #27806 after the merge

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)

  1. 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.
  2. 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.
  3. Whether a mechanical backstop (a queue guard that refuses a head whose newest contract record is FAIL) is also wanted is the maintainer's call: pm-dispatch(contract-review): a seat sends a PR to the maintainer for approval only after a contract PASS on the current head, and a PR that landed still owing one is re-reviewed after landing, with each finding filed as a new card #27345 chose the skills remedy over a queue gate, so this card does not assume one.

Links: PR #27667, #27597, p0 #27806, #27345.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: p1 · domain:skills · area:devpath · 2026-10-30T00:57Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

    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/main fec60e00b → 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.

  3. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    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.

  4. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:skillspriority:p1High: required for production / M2tooling

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions