Repository navigation
docs(pm-dispatch): revoke every autonomous-adjudication channel — a seat analyses and recommends, every needs_decision goes to the maintainer's ruling batch - #25348
Conversation
…eat analyses and recommends, every needs_decision goes to the maintainer's ruling batch The maintainer's word (2026-10-23): 「我记得有一个skills 允许自主决裁,撤销这个决定。必须人工决裁。」 - lanes/director.md: the in-project delegated-ruling channel, the 「有把握自己决定」 standing order, the confidence gate and the needs_decision-fork record form leave; a card thread's needs_decision joins the ruling batch the maintainer rules by hand. The first-class self-ruling in the adjudication duty (一类自裁, protocol-alignment and protocol-error self-rulings) becomes recommend-and-present. - triage-duties.md: the delegated-adjudication lane, its human floor, the four-condition confidence gate, the `auto-adjudicated` marker and the summoned director's self-ruling gate leave; the clause-② boundary test, the round report's presented-rulings list and the fork-back clause stay. - dispatch-runbook.md: a final report's needs_decision no longer opens a ruling thread; ruling-grade reading and the ruling-record rule name only the maintainer's rulings. - SKILL.md: the red line loses its only exception; the state-table row, the escalation section and the director lines say the PM never answers a dev's needs_decision in the maintainer's place, the premise-bound ruling is the human's too, and the director seat presents rather than rules. - seat-lifecycle / contract-review / execution-duties: pointers re-aimed. - check-skill-line-ratchet: ceilings lowered to the landed counts (director.md 72 → 70, triage-duties.md 120 → 107). Left unchanged for the maintainer's word: a dev's own implementation choices recorded in open_questions, and the named non-escalation classes. Claude-Session: https://claude.ai/code/session_01MJceC3xyxUtL12bEdf7QBC Co-authored-by: Claude <noreply@anthropic.com>
Verification record — head 337ba76Gates derived for the actual changed paths ( All 44 exited 0. Skill gates, read directly:
Residual vocabulary ( PR CI on this head: every required context green ( Landing: Tier S ( Generated by Claude Code |
Contract reviewServed-tier: Inputs: card #25344 body and its one comment (the maintainer's word 2026-10-23, 「我记得有一个skills 允许自主决裁,撤销这个决定。必须人工决裁。」); PR #25348 body, file list (8 files, +38/−45), net diff ① Derived judgmentsEvery channel the card names, checked line by line on the head tree:
② Semver level
③ Boundary flags
FAIL items
Implemented-by: VERDICT: FAIL |
…ways presented to the maintainer The contract review found the 人工地板 list (feature additions, ADR, protocol/public-contract change, destructive or hard-to-roll-back actions, security/permission boundary, gate weakening, new runtime third-party dependency, spend/quota/fleet shape/default model tier, new required gate/hook/ratchet) had left with the delegated-ruling lane while six lines still cite it as a defined term. It returns under a heading that names no delegation: these items are always presented to the maintainer, never a PM's call. triage-duties.md ceiling 107 → 110. Claude-Session: https://claude.ai/code/session_01MJceC3xyxUtL12bEdf7QBC Co-authored-by: Claude <noreply@anthropic.com>
Contract reviewServed-tier: Inputs: card #25344 body and its one comment (the maintainer's word 2026-10-23, 「我记得有一个skills 允许自主决裁,撤销这个决定。必须人工决裁。」); PR #25348 body, file list (8 files, +38/−45), net diff ① Derived judgmentsEvery channel the card names, checked line by line on the head tree:
② Semver level
③ Boundary flags
FAIL itemsNone. F1 of the record on Implemented-by: VERDICT: PASS |
Verification record — head 6a305ac (after contract-review F1)Change since 337ba76: the 人工地板 list returns to
Still untouched, as the PR body says: the two implementation-level self-choice lines (the maintainer's 撤 / 留) and the 例外二 report-only flip (a seat decision the review flagged for the maintainer). Generated by Claude Code |
… dev's implementation choices, condition the report-only valve, widen the human floor and write the risk / workload criteria Maintainer 「同意」 on director ruling batch #3 (2026-10-23): 1.1 A, 1.2 A, 2 A. - 1.1 A: the dev's own implementation choices stay (recorded in open_questions) under one guard — touching product-visible behaviour or a contract is a fork, not a choice; the PM's non-escalation classes carry the same guard. - 1.2 A: the "two reds in an hour" valve stays, with three hard conditions — flip to report-only only (never delete a gate or skip a test), send the item to the decision digest for the next batch in the same stroke with the two red runs, and flip back if the maintainer disagrees; it is after-the-fact ratification, never an exemption. - 2 A: the human floor widens (releases and anything public, external commitments, a card's fate, rules and process, defaults and factory shape, identity and tenancy model, cross-lane conflicts) and the two criteria the maintainer named become judgeable lines — seven risk tests and four workload tests, any one of which presents the item — plus the explicit never-presented list with its four-gate boundary. SKILL.md 〈升级与决策〉 gains the one pointer line that makes them binding on every seat. triage-duties.md lands at 120 (its ceiling on main; the −13 of the revocation and the +13 of this ruling net to zero); SKILL.md lands at its 319 ceiling. Claude-Session: https://claude.ai/code/session_01MJceC3xyxUtL12bEdf7QBC Co-authored-by: Claude <noreply@anthropic.com>
Contract reviewServed-tier: Inputs: card #25344 body (now carrying ① Derived judgmentsCarried from the two earlier records and re-checked unchanged at this head (items 1–7, 10–13 of comment 6355883270): every channel the card names is removed in New at
② Semver level
③ Boundary flags
FAIL itemsNone. Implemented-by: VERDICT: PASS |
Verification record — head 2bf0113 (director batch #3 ruled 「同意」)Change since 6a305ac: the maintainer's batch #3 ruling (1.1 A · 1.2 A · 2 A, recorded on the card) is written in — the dev's implementation choices stay with the guard 「碰产品行为/契约报 fork」 (
Nothing is left open on this card from the seat's side: the review's F1 is closed (PASS on 6a305ac) and the three batch #3 items are landed. Landing is the maintainer's word; the PR stays draft. Generated by Claude Code |
席位核对ACCEPT · Landing authority: the maintainer's own words in the Claude Code project "Objectstack" of the
Generated by Claude Code |
Merging `main` brought #25348 (every autonomous-adjudication channel revoked), which spent the last line of SKILL.md's 319 ceiling on the pointer line binding every seat to the human floor. This branch's net is still -1 on that file, so the merged tree lands at 318 and the ceiling takes the landed count: 317 -> 318, which is a lowering from the 319 `main` carries, not a raise. The widest-row pin stays at 341, the measured widest row. Nothing else changes. Claude-Session: https://claude.ai/code/session_01VCLHrrmPbwQHZcc2yqdFHD Co-authored-by: Claude <noreply@anthropic.com>
Requested by Elon · project thread
Fixes #25344
Clause-②: no
Metadata-protocol: none
维护者速读(草稿)
auto-adjudicated标记、总监席「一类自裁」免呈、PM 对 devneeds_decision的直接答复。改后一句话:席位只分析与推荐,每个needs_decision都并入决裁批次,由您人工裁。What changed
Every channel in
.claude/skills/pm-dispatch/**that let a seat, a ruling thread or the director seat rule in the maintainer's place is removed, and the text that cited it is re-pointed. A seat analyses, recommends and files; the maintainer rules.references/lanes/director.mdneeds_decision⇒ the coordinator opens a ruling thread that rules for the director seat; the standing order 「对于自己有把握决定的问题,自己决定」; 「有把握」= the four-condition confidence gate; theneeds_decision forkrecord form and the coordinator's 追认表needs_decision⇒ the seat writes the four-axis analysis and a recommendation and the card joins the ruling batch the maintainer rules by hand; the standing order is recorded as revoked; no ruling thread, no delegated ruling, no confidence gatereferences/lanes/director.md职责二references/lanes/director.mdL16references/triage-duties.mdauto-adjudicated, 一类自裁门 (three criteria, summary table for 追认)needs-user-decision; the 人工地板 list itself stays, re-homed as 「人工地板(恒呈维护者)」 so its six pointers and 例外一/例外二 keep their anchor (contract-review F1 at head 337ba76); the 机械边界测试 is kept only as the clause-② criterion (execution-duties.mdpoints at it); the round report carries a 呈裁清单 instead of a 代裁清单; the 回翻条款 is keptreferences/dispatch-runbook.mdL146needs_decision⇒ 席位交 coordinator 开CONTRACT_REVIEW_TIER裁决线程needs_decision⇒ 四维分析与推荐并入决裁批次呈维护者裁;⛔ 无裁决线程SKILL.md红线 L30 / state table L106SKILL.md升级与决策 L215, L219, L220, L234, L264, L267, L276needs_decisionin the non-escalation class answered by the PM; the premise-bound ruling tier is the PM's; 代裁 inputs/faces; 总监席是唯一裁决者needs_decisiongoes to the human with the PM's analysis and recommendation (including "looks like a non-escalation class"); the premise-bound ruling is also the human's; the four facets are the input to the human ruling; the director seat is the only presenting seatreferences/seat-lifecycle.mdL69,references/contract-review.mdL35,references/execution-duties.mdL103scripts/pm/check-skill-line-ratchet.mjsdirector.md72,triage-duties.md120director.mdlowered to 70;triage-duties.mdback at 120 after the batch-#3 text (landed counts, headroom 0); no other row movesAlready forbidding self-ruling and untouched:
lanes/skills.mdL21,lanes/hotcrm.mdL51/L53,lanes/services.mdL12. No script readsauto-adjudicatedor the revoked vocabulary (git grepoverscripts/,.github/), so the change is text-only.批 #3 已裁 (maintainer 「同意」 = 1.1 A · 1.2 A · 2 A, 2026-10-23)
The two implementation-level self-choice lines first left for the maintainer's word, plus the report-only valve and the human floor, are now written as ruled (third commit):
open_questions; touching product-visible behaviour or a contract is a fork, never a choice (dispatch-runbook.mdL115). The PM's non-escalation classes carry the same guard (SKILL.md〈升级与决策〉).triage-duties.md例外二).SKILL.mdgains the one pointer line that binds every seat to it.Line budget:
triage-duties.mdlands at 120, its ceiling onmain(−13 revocation, +13 ruling);SKILL.mdlands at its 319 ceiling (the pointer line spends the last line of headroom); no ceiling is raised.Serial constraints
Open PRs on the same tree, checked before the first push: #25247 (
SKILL.md〈域车道〉 lane table + lane files), #25254 (platform-readings.mdL403), #25255 (newcoordinator.md,SKILL.md入口与角色 row and the deletion of the 项目总监席 line at L274,dispatch-runbook.mdcap line, ratchet rows besideseat-lifecycle.md). This PR touches none of those regions, but two hunks sit within three lines of #25255's (SKILL.mdL276 and the ratchet'striage-duties.mdrow), so whichever lands second takes a trivial re-merge and re-measurescheck:pm-skill-ratchet. #25255's item 5 still points at the ruling thread this PR removes; its author re-points it after this lands.Verification
pnpm check:pm-skill-ratchet✓ (SKILL.md 319/319; director.md 70/70; triage-duties.md 120/120; every changed line ≤120 bytes)pnpm check:pm-skill-id-lint✓ ·pnpm check:skill-frame-sync✓ ·pnpm check:skill-frame-freshness✓node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackon the actual changed paths: 44 commands, run with exit codes recorded and reconciled with--ran— see the verification comment on this PR.git grep -n -E '代裁|自裁|auto-adjudicated|裁决线程|有把握' -- .claude/skills→ only negations (⛔ 无代裁 …) and the three lane charters that already forbade it.Governed surface
.claude/**(Tier S): draft, awaiting the seat'sCONTRACT_REVIEW_TIERreview and the maintainer's word; ⛔ not to be flipped ready, queued or armed by this thread.skip-changeset: no published package is touched.🤖 Generated with Claude Code
https://claude.ai/code/session_01MJceC3xyxUtL12bEdf7QBC