Repository navigation
pm-dispatch(contract-review): a FAIL on the current head, or a head move that changes the reviewed surface, disarms auto-merge at once - #27845
Conversation
…ove that changes the reviewed surface, disarms auto-merge at once An armed PR stayed in the merge queue after a delta contract review on its current head came back FAIL, and the queue landed that head. The rules said a PASS must name the current head before landing, but said nothing about a PR that is already armed when that stops being true. - contract-review.md: the head-move exception bullet now also carries the disarm. A non-exception head move, or a FAIL on the current head, while auto-merge is armed: the dispatching seat disarms on reading it, by the AGENTS.md disarm sentence (disable auto-merge and convert to draft; a queued PR goes to the maintainer for hand removal). The FAIL record names the disarm. Re-arming follows landing check ①. - Paid in place: the marker section's two restatements (the card-copy clause, implied by the single carrier; and the queue-only-reads-records clause, restating check ① and "not a gate") fold into one line. Line count stays 60. - landing-operations.md: the PASS/FAIL outcome line says FAIL disarms. - SKILL.md: the head-move clause in ③ says disarm, then wait. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016WV4cwDXbDuhAz7Zn6Dv8i
|
domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS Contract-review-claim: session_016WV4d1QkPVVzNz3FJqb2iS · head b02ba2d · 2026-10-30T01:47Z |
|
domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS Contract reviewServed-tier: Inputs read: the PR body and its one comment (6512940265, this seat's claim on this head); card #27809 body and both comments (triage 6512254201, claim 6512415848); PR #27667 comments 6510205555 (seat check, "Auto-merge stays armed"), 6510422663 (triage: owning seat disarms until a delta PASS) and 6510686343 (delta review on Gate verdicts on the head at the second read: 43 check-runs, 0 failure; 4 still in progress: ① Derived judgmentsMeasured against the three files on the head, not the PR body.
② Semver levelNot applicable: ③ Boundary flagsThe PR body declares four deviations from the dispatch order and no
Author is ④ Design judgmentAgainst the card's Wanted and the triage comment, with the incident (6510205555 → 6510422663 → 6510686343 → merge
Must-fix: none. Should-fix (not blocking; a follow-up PR or the same patch round if the seat chooses):
Implemented-by: VERDICT: PASS |
…to the disarm rule - landing-operations.md: the dirty-merge step (merge origin/main and push at once) is the act that moves an armed PR's head, so it now points at the contract-review head-move bullet for the disarm and re-arm. Paid in the same file by deleting the Part-of rationale line, a consequence statement whose rule the lines beside it already carry. - SKILL.md:200 names the exception: a non-exception head move disarms, so a byte-exact regeneration read from SKILL.md alone no longer reads as one. - contract-review.md: the bullet is now spelled as the head-move exception (so SKILL.md's 非例外 resolves to it), and the FAIL record names the disarm as owed, since the review seat writes before the owning seat acts. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016WV4cwDXbDuhAz7Zn6Dv8i
|
domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS Contract-review-claim: session_016WV4d1QkPVVzNz3FJqb2iS · head 5855983 · 2026-10-30T02:14Z |
|
domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS Contract reviewServed-tier: This is a DELTA record on top of record 6513017524 (PASS, head Inputs read: the one commit Gate verdicts on the head: 40 check-runs, 22 success, 18 skipped, 0 failure, 0 in progress. The coordinator's count is confirmed. The four jobs that were in progress on What moved:
|
|
domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS 维护者速读
席位意见:ACCEPT。首轮契约复核 PASS(无 must-fix,4 条 should-fix)。1、2、4 已在本 PR 改完,差量复核 PASS;第 3 条( 席位核对
|
Requested by Elon · project thread
Fixes #27809
Clause-②: no
Metadata-protocol: none
维护者速读
.claude/skills/pm-dispatch/下三处规则文字,不发布任何包,不加门禁或脚本;三个文件行数都没涨(删两句重复条文付账)。回滚即 revert 这一个提交。references/contract-review.md的 head 后移一条(两行),再看等复核标记一节合并后的第一行。pnpm check:pm-skill-ratchet && pnpm check:pm-skill-id-lint,预期都绿,contract-review.md 仍为 60 行。What changes
Rule text only, in
.claude/skills/pm-dispatch/. No script, no gate, no queue guard (triage: 「新增门禁默认否」).references/contract-review.md, the one rule site. The head-move exception bullet under landing check ① now carries both rules:In English: a pure regeneration or prose-only move keeps the original record (with a
Regen-provenance:line). Any other move, or a FAIL on the current head, while auto-merge is armed: the dispatching seat disarms on reading it, by the AGENTS.md disarm sentence, and the FAIL record names the disarm. Re-arming follows check ①, so it needs a PASS (or aRegen-provenance:line) on the current head.The disarm itself is not restated. It points at the one
disarmsentence inAGENTS.md(governed-surface landing, "Already armed or queued when you read this?"): disable auto-merge AND convert to draft; neither act is measured to dequeue a queued PR, so ask the maintainer to remove it by hand, then confirm it is in neither the queue nororigin/main. The relay ops areautomerge_disableandpr_draft(references/rest-channel.md). The dequeue facts are inreferences/platform-readings.md§ queue membership.Pointers, in place:
references/landing-operations.md:12(FAIL ⇒ 撤挂,补丁轮) andSKILL.md:200(PASS 后 head 移 ⇒ 撤挂回等).Why — measured
af33de9c; "Auto-merge stays armed"af33de9c: FAIL, two must-fixaf33de9cthrough the still-armed auto-merge21c4bdd8Dogfood Regression Gate (1/3)red on the two pins the FAIL namedcontract-review.mdonfec60e00bhad no disarm text (grep -n -i 'disarm\|automerge_disable\|auto-merge'→ 0 hits). Landing check ① said a PASS must name the current head before landing. Nothing said what to do with a PR that was already armed when ① stopped holding, so the seat left it armed.Line budget
All three files sit at their ceiling with headroom 0 (
scripts/pm/check-skill-line-ratchet.mjs), and no maintainer ruling orders a raise. The rule costs one line (the exception bullet goes from 1 line to 2). It is paid in the same file by real deletion, not by re-wrap: the marker section's first and last bullets fold into one line, dropping two restatements:Wording compressed in the edited lines only: 「只动上列散文面」 → 「只动散文面」 (the prose faces are defined once, at :9–10), 「继续管」 → 「续管」,
landing-operations.md「交棒请审」 → 「交棒」 (SKILL.md ③ is 「请审 = 席位交棒」),SKILL.md「回等复核」 → 「撤挂回等」.references/contract-review.mdreferences/landing-operations.mdSKILL.mdEvery edited line is at most 120 bytes.
Deviations from the dispatch order
check:pm-skill-id-lintrefuses any#NNNin the pm-dispatch corpus, and the rules-only ruling moved incident narratives out of it. So the precedent lives in this body and in the commit message.automerge_disable, pluspr_draftwhere the repo's reading says disable alone does not dequeue" is already the AGENTS.md disarm sentence, which is stricter (both ops every time, plus the maintainer's hand removal for a queued PR). The rule points there.landing-operations.md:57and:72(the seat's ownorigin/mainmerge) are not edited. The head-move half reaches every seat throughSKILL.md:200, which is read in full on every fire.Verification
dispatch-gates
node scripts/pm/dispatch-gates.mjs --commands(no paths, derived from the committed diff against merge basefec60e00b) derives 21 families. All 21 were run with exit codes captured before any pipe.pnpm --filter @objectstack/lint run check:doc-formula-expressionsfirst exited 3 (@objectstack/formulaand@objectstack/lintnot built in a fresh worktree). It was re-run afterpnpm exec turbo run build --filter=@objectstack/formula --filter=@objectstack/lint, exit 0.--ranreconcile:21 derived famil(ies) accounted for — 21 run, 0 NOT-MEASURED. Changed lines 10 (+5 / −5), under the 3000 threshold.git merge-treeagainstorigin/main0a4b0fb2is clean, and no commit since the base touched these three files.Directly relevant:
check:pm-skill-ratchet(60/60, 101/101, 319/319),check:pm-skill-id-lint,check:pm-governed-prose,check:pm-record-recognisers,check:skill-frame-sync. All exit 0.Contract review owed: governed
.claude/**rules text, atCONTRACT_REVIEW_TIER. Landing is Tier H (triage 6512254201: 「A rule change: the maintainer approves」).Human Minimum
packages/specholds no runtime logic. (not touched)pnpm lintpasses (prose only; the full run is CI's).main, one pull request..claude/**publishes nothing, soskip-changeset.packages/spectouched: n/a.content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.🤖 Generated with Claude Code
https://claude.ai/code/session_016WV4cwDXbDuhAz7Zn6Dv8i