Repository navigation
pm-dispatch: revoke every autonomous-adjudication channel — a seat analyses and recommends, every needs_decision goes to the maintainer's director ruling batch (maintainer's word 2026-10-23) #25344
Description
Ruled: 6356061991 · batch #3 letters 1.1 A · 1.2 A · 2 A · 2026-10-23T02:37:14Z
Filing gate ③: a maintainer-direct task, the maintainer's words quoted verbatim. Filed from the Claude Code project "Objectstack" (account os-elon-musk) by the card thread 技能撤销自主裁决 on the maintainer's word there. ⛔ Not a claim. Lane self-applied under exception 二 (.claude/**, the lane table's domain:skills row); grade suggested p1 because the text being revoked is an authorization that is in force today; triage may regrade.
Reader (who acts): the domain:skills seat 2 (seat post #19287), in one PR on .claude/skills/pm-dispatch/** (Tier S) plus the ratchet ceiling rows in scripts/pm/check-skill-line-ratchet.mjs.
The maintainer's words (2026-10-23, the project's chat, verbatim)
我记得有一个skills 允许自主决裁,撤销这个决定。必须人工决裁。
What is revoked
The standing order recorded in references/lanes/director.md (first used in ruling record 6336640643, 2026-10-22: 「对于这种类似的问题,能否你自己开一个单独的 fable thread 做评审,对于自己有把握决定的问题,自己决定,不能决定的开决策卡?」) and every channel built on it or beside it that lets a seat, a ruling thread or the director seat rule in the maintainer's place:
references/lanes/director.mdL16, L21–L24 (项目内代裁通道, the standing order, the confidence gate, theneeds_decision forkrecord form), L50, L52, L59–L60 (一类自裁 in the adjudication duty).references/triage-duties.mdL5, L93–L106 (代裁车道 for refactors and bug fixes, the four-condition confidence gate, theauto-adjudicatedmarker), L107–L115 (一类自裁门 for a summoned director seat).references/dispatch-runbook.mdL146 (needs_decision⇒ aCONTRACT_REVIEW_TIERruling thread), L60, L77.SKILL.mdL30 (the red line's only exception), L106, L215, L219 (the PM answers a dev'sneeds_decisionitself when it falls in the non-escalation class), L220 (the premise-bound ruling tier is the PM's), L234, L264, L267, L276.- Pointers that cite the channel:
references/seat-lifecycle.mdL69,references/contract-review.mdL35,references/execution-duties.mdL103.
Line numbers read on origin/main 54df640.
Wanted
The rule after the change, in one sentence: a seat analyses and recommends; it never rules. Every needs_decision — from a dev's final report, a card thread, or a card in the decision inbox — is presented to the maintainer in the director ruling-batch form (背景 / 现状 / 选项与代价 / 四维分析 / 推荐 / 所需动作) and waits for the maintainer's own word. No ruling thread, no confidence gate, no auto-adjudicated marker, no first-class self-ruling, no PM answer in the maintainer's place. The non-escalation classes that are not decisions (restoring an invariant, task order, verification strategy, dedupe and ledger housekeeping, pure wording, gate-parameter fixes — SKILL.md L216–L218) and a dev's own implementation-detail choices recorded in open_questions (references/dispatch-runbook.md L115) are NOT in this card's scope unless the maintainer says so; the PR lists them for the maintainer's word.
Already correct and untouched: references/lanes/skills.md L21, references/lanes/hotcrm.md L53, references/lanes/services.md L12.
Acceptance
git grep -n -E '代裁|自裁|auto-adjudicated|裁决线程|有把握' -- .claude/skillsreturns only negations (⛔ 无代裁 …) or the lane charters that already forbid it.pnpm check:pm-skill-ratchet,pnpm check:pm-skill-id-lint,pnpm check:skill-frame-sync,pnpm check:skill-frame-freshnessgreen; ceilings lowered where a file shrank.- The open PR for the coordinator reference (docs(pm-dispatch): a project-coordinator reference — the cross-lane scheduling rules a Claude Code project runs by, so its instructions name only its lanes #25255, item 5 「裁决线程」) is re-pointed by its own author after this lands; this card does not edit that branch.
- Tier S landing: a
CONTRACT_REVIEW_TIERPASS on the head, then the owning seat lands it on the maintainer's word.
Dedupe
MCP search_issues, objectstack, "pm-dispatch revoke autonomous adjudication delegated ruling needs_decision human director ruling batch" → 35 hits; the top ten are #25216 (closed — the card that INTRODUCED the ruling thread this card revokes), #23379, #17951, #23201, #22597, #9761, #21929, #20957 and two approvals cards. None revokes the channel. New.
Dedupe words: revoke autonomous adjudication pm-dispatch · needs_decision human ruling only · director ruling batch no ruling thread.
Activity
objectstack-fleet commentedon Oct 23, 2026
Claim: PM loop round 1 (card thread) · 2026-10-23T01:42Z · p1,
tooling,domain:skills. Writes the maintainer's 2026-10-23 word into the pm-dispatch skill: every autonomous or delegated adjudication channel is revoked; a seat analyses and recommends, and everyneeds_decisiongoes to the maintainer through the director ruling batch.Session:
session_01MJceC3xyxUtL12bEdf7QBC(card thread ofdomain:skillsseat 2, seat sessionsession_01REMuzhz6MWRjg8uohedMnM)Account:
os-elon-musk(the seat's linked user; always the card's assignee)Branch:
claude/project-thread-g3n0k3(the card thread's designated push branch; theclaude/issue-<n>-<slug>convention cannot be used by a project thread, a measured platform exception)Worktree: the card thread's own checkout
Domain:
domain:skillsSeat:
domain:skills#2(seat post #19287)File surface:
.claude/skills/pm-dispatch/SKILL.md(the 红线 delegated-channel exception, the state-tableneeds-user-decisionrow, 〈升级与决策〉 and the director ruler lines; ⛔ not the 〈域车道〉 lane table, PR #25247's region, nor the 入口与角色 table, PR #25255's region);references/lanes/director.md;references/triage-duties.md;references/dispatch-runbook.md(⛔ not the 卡线程 cap line PR #25255 edits);references/seat-lifecycle.md,references/contract-review.md,references/execution-duties.mdwhere they name the revoked channels;scripts/pm/check-skill-line-ratchet.mjs(ceiling rows lowered only). (stop on breach; explain in the report)⛔ Not in scope: any Tier H file (
AGENTS.md,CLAUDE.md,docs/NORTH-STAR.md,skills/**,.github/workflows/**, CODEOWNERS);.claude/agents/os-dev.mdunless a line there names a revoked channel (report it first); the branch of PR #25255; relabelling issues or editing seat posts.Container & model:
M,mode:thread(the maintainer's word: one project thread per M-or-larger or p1 card),model: CONTRACT_REVIEW_TIER(dispatch-gates.mjs --tier --repo objectstack-ai/objectstack .claude/skills/pm-dispatch/SKILL.mdate58bd0e: "MANDATORY: … clause ① of the model-tiering ruling (narrowed to protocol semantics, 2026-08-20)"),effort: xhigh(p1). Governed surface.claude/**is Tier S: aCONTRACT_REVIEW_TIERPASS record on the PR's head plus all-green checks; landing waits for the maintainer.Clause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card (a maintainer word not yet written into the skill)
Thread-read: none
Serial constraints cleared: open seat-2 PRs on the same tree are disjoint by region — #25247 (SKILL.md 〈域车道〉 lane table, lanes/{engine,services,cli,server,spec}.md, scripts/pm), #25254 (platform-readings.md line 403), #25255 (new coordinator.md, SKILL.md 入口与角色 row, dispatch-runbook.md cap line; its item 5 points at the ruling thread this card revokes and is held until this card's text settles). Whichever lands second merges
mainand re-measurescheck:pm-skill-ratchet. Re-check the open-PR list for.claude/skills/pm-dispatch/**before your first push and name what you found.Generated by Claude Code
os-elon-musk commentedon Oct 23, 2026
Ruling: batch #3 items 1.1 / 1.2 / 2 · letters A / A / A · maintainer 「同意」 2026-10-23T02:37:14Z
Recorded by the director ruling thread 「待决策汇总」 (Claude Code project "Objectstack", account
os-elon-musk). Batch doc: https://claude.ai/artifact/RfQPT58DF4ZjmErk8PZmJi. The maintainer's one word covers all three recommendations named in the batch's 回批 line (「1.1 A 1.2 A 2A」或「同意」). The ruling thread only records; the card thread and the owning seat execute.Item 1.1 — A (keep).
references/dispatch-runbook.mdL115 (a dev resolves its own implementation choices and records them inopen_questions) andSKILL.mdL216–L218 (the named non-escalation classes) stay, plus one guard sentence: an implementation choice may not change product-visible behaviour or a contract; if it would, the dev stops and reports aneeds_decisionfork (the existing triage-duties clause 「实施中发现契约终究要动 ⇒ dev 停手」 remains the backstop). Workload: 1 line, in the F1 fix push of PR #25348.Item 1.2 — A (keep as an emergency valve). triage-duties 例外二 (two reds within an hour on a gate the PR did not touch → any seat may flip it to report-only, ruling follows) stays, with three hard conditions: (a) report-only only — never delete the gate or skip a test; (b) at the moment of the flip, the item goes to 「待决策汇总」 for the next ruling batch with both red run links; (c) if the maintainer disagrees, the flip is reverted. Workload: 2 lines, same push.
Item 2 — A (restore and extend the human-ruling floor). The F1 fix restores the
origin/main54df640 L95–L97 list (功能新增;ADR;协议/公开契约变化;破坏性或难回滚动作;安全/权限边界;门禁削弱;新增运行时第三方依赖;花费/配额/舰队形态/默认模型档位;新增必须门禁/hook/棘轮) and extends it, andSKILL.md〈升级与决策〉 gains the maintainer's two tests (02:22 「有风险的事情让我决裁;可能大幅增加开发量的事情要我决裁」) as written in the batch doc, card 2 ②–④:ruledRaises).Workload: ≈ 15 lines across
references/triage-duties.md(人工地板 section) andSKILL.md〈升级与决策〉, ratchet rows counted on landing; same PR, same F1 fix push. From now on every card presented to the maintainer names which test it hits.Execution: the card thread 技能撤销自主裁决 folds all three items into PR #25348's F1 fix push;
domain:skillsseat 2 re-reviews the new head at CONTRACT_REVIEW_TIER; landing still waits on the maintainer's own 「可以落地」 (Tier S). The Skills seat's 01:43 decision card on item 1.1 is superseded by this ruling.Generated by Claude Code
objectstack-fleet commentedon Oct 23, 2026
Landing of PR #25348 stopped at 2026-10-23T03:36Z: the seat's ACCEPT is on the PR, but the relay call
node scripts/pm/fleet-write/dispatch.mjs --repo objectstack-ai/objectstack --actions-file FwithF = [{"op":"pr_ready","pull":25348},{"op":"automerge_enable","pull":25348}]was refused in the seat's session by the auto-mode classifier as[Self-Approval](seat, card thread and PR all run under one account). Not retried, not respelled. The PR stays draft, auto-merge not armed; it lands when the maintainer flips it ready and merges, or when the seat's own session can make the call.Generated by Claude Code