Filed by the domain:skills execution seat (session session_01MoTv7pn338AZ71owsp19gQ, GitHub os-justin) at 2026-09-10T03:1xZ under the maintainer's direct instruction in this seat's chat session — 直派通道: routed and claimed by the instructed PM session, labels set by that seat under the direct-dispatch rule, ⛔ not a triage grading.
裁决 — the maintainer's words, verbatim and untranslated (chat, 2026-09-10, 02:0xZ–03:0xZ)
- 「现在所有车道都会派 fable 任务,没有fable就等契约复审,你综合评估一下,我们哪些车道实际需要fable级别的开发的。哪些只用opus就够了」
- 「必须 fable的还包括对外发布的skills」
- 「按照你的新建议,只有 spec 和 skills 车道需要fable 对吧。」— the seat answered 对 with the split in the table below (spec: default-tier build, contract-review-tier review of clause ②; skills: contract-review-tier build and review), and the maintainer built the next two rulings on that answer.
- 「分诊席现在也是opus,裁决统一由我以总监的身份召唤。比如我在 hotcrm 或其他元数据项目中可以召唤总监裁决。」
- 「现有的卡片如果写了要求fable的,也要让相关的项目经理知道,opus就够了。」
- 「裁决(决策箱、代裁、一类自裁)是人工召唤,不需要fable,简单的元数据项目opus就可以,这个我人工判断。」— added 2026-09-10T03:16Z, while the dev was already in flight; the dev was messaged the same minute and this body amended (table row, adjudication paragraph, file surface).
The default model tier is on the manual floor (人工地板: 花费/配额/舰队形态/默认模型档位). These sentences are the maintainer's explicit words for it. ⛔ This card re-adjudicates none of them; the seat's own prose below uses the tier names the skill text already uses (契约复审档 = CONTRACT_REVIEW_TIER, 默认判断档 = TIER_DEFAULT), and ⛔ no model name enters any skill file (the director charter already forbids it).
What the rule text says after this card
| seat / channel |
build |
review |
contract-review tier used |
| triage seat, incl. its emergency-triage subagent |
— |
— |
never |
| engine / services / cli / devx / ui / hotcrm execution seats |
default tier |
the lane seat's own default-tier review + the gates |
never |
| spec seat |
default tier |
clause-② PRs: contract-review-tier review (in-seat subagent; fuse unchanged) |
review only |
| skills seat |
contract-review tier for the clause-① files AND the published skills/** catalogs; default tier for references/** and other governed one-liners as today |
skills-seat self-review at the contract-review tier |
build + review |
| adjudication: decision inbox, 代裁, 一类自裁 |
— |
— |
the maintainer-summoned director seat, and only it — at whatever tier the maintainer summons it (人工判断; the default tier is fine for a simple metadata project). ⛔ No tier hard gate on the director (ruling 6) |
Clause ① (path mandate) = .claude/skills/pm-dispatch/SKILL.md, .claude/agents/os-dev.md, skills/objectstack-pm-dispatch/SKILL.md (unchanged) plus the published skills/** catalogs: objectstack skills/ (11 skill trees, 46 files, ~13.6k lines; shipped by npm create objectstack and npx skills add objectstack-ai/objectstack/skills --skill '*', per skills/README.md:5–:9) and objectui skills/objectui/ (27 files, 5,189 lines; npx skills add objectstack-ai/objectui, per objectui README.md:521). ⛔ No one-line exemption for skills/**: a closed enumeration beats a per-line "is this mechanical" call, and the maintainer's word is 必须.
Clause ② (content rule) is unchanged in substance — the Clause-② declaration, the widening-tells gate, pin tests, and the manual floor for widenings under 代裁 all stay. What changes is WHO reviews: only the spec seat's clause-② review runs at the contract-review tier. Anything touching packages/spec already routes to the spec seat (〈多仓协调〉 rule 5), so no other lane keeps a contract-review-tier dependency.
Adjudication: the only adjudicator is the director seat summoned by the maintainer, and its tier is the maintainer's per-summon choice (ruling 6) — the director records the tier it ran at (harness reading) in its session audit line, and ⛔ never refuses or parks its duties for being below the contract-review tier. So: 置信门 drops gate ⑤ (档位硬门) and becomes four gates; the 「档位未达 ⇒ 整体跳过」 consequence and the director's 「不达档只做免档整理并停放四职」 state are deleted, not moved; the 降档保险丝 no longer applies to the director (its population is the spec seat's clause-② review and the skills seat). The triage seat spawns no contract-review-tier subagent — for 代裁 or anything else — and the per-fire 代裁 pass leaves the triage duties; the director's remaining gates (一类自裁门's three criteria, the four-gate 置信门, the manual floor) are where 代裁 lives.
File surface and the exact lines (origin/main d64bcb63, 2026-09-10T03:01Z)
.claude/skills/pm-dispatch/SKILL.md — 812 lines, ratchet ceiling 812, headroom 0 ⇒ net-zero or fewer lines; every line added is paid for by a line merged or deleted.
- :75 「分诊席跑普通直连会话、默认判断档;达档职责改派显式传
model 的契约复审档子代理。」 → the second clause goes; the triage seat has no 达档职责.
- :310–:311 「代裁只由达档者产出,⛔ 永不凭自述。」/「达档者 = 显式传
model 的契约复审档子代理(逐份过转录核验),或达档总监席。」 → 达档者 = the maintainer-summoned director seat, only.
- :332 「紧急卡直接分诊:维护者点名或 p0 嫌疑 ⇒ 立即起契约复审档分诊子代理,不等定时轮。」 → default tier. The seat reads 「分诊席现在也是opus」 as covering the whole seat including its subagents; the reading is recorded here so the maintainer can veto it on the PR.
- :398–:399 置信门⑤「档位硬门达标」 and 「档位未达 ⇒ 本 fire 代裁整体跳过,卡原样留在决策箱走维护者路径。」 → deleted outright (ruling 6: no tier gate on adjudication); 置信门 is four gates wherever the text counts them; the triage seat's per-fire 代裁 pass is deleted.
- :507–:526 model-tier rows: :509 (clause-① surface) adds the published
skills/**; :510 (the exemption) says skills/** is not exempt; :513 scopes the clause-② contract-review-tier review to the spec seat; :523 「契约复审档留给裁决/复审子代理、skills 席与条款②复核。」 → 「契约复审档留给总监席、skills 席与 spec 席的条款②复核」; :522 stays true as written.
- :767–:770 director entry: :769 「总监席档位硬门 =
CONTRACT_REVIEW_TIER,不达档只做免档整理并停放四职。」 → 「总监席档位由维护者按项目人工定,每场记入摘要台账;⛔ 无档位硬门、无免档整理态。」; plus the statement that the director is the only adjudicator.
.claude/skills/pm-dispatch/references/core-rules.md (151/151): the twins at :18, :94 (代裁 producer = the summoned director, no tier gate, no 「不达档则通道整体跳过」), :98 (four gates, 达档 dropped), :112 and :147 change in the same PR (「一条规则在本文与核心条款一处改动,另一处同 PR 同改」).
.claude/skills/pm-dispatch/references/contract-review.md (60/60): :10–:18 keep their shape but name the spec seat as the reviewing seat; :29/:34 the review-subagent language is the spec seat's; :48–:60 the fuse stays for the two seats that still produce at-tier verdicts (the spec seat's clause-② review and the skills seat) and says that other seats' reviews — and the director's adjudications — are not at-tier verdicts and are not gated by it.
.claude/skills/pm-dispatch/references/lanes/director.md (72 lines): :12–:14 (「档位 = CONTRACT_REVIEW_TIER」, the per-summon fuse reading, 「不达档只做免档整理…⛔ 不裁不清标」) → the tier is the maintainer's per-summon choice, recorded from the harness reading in the session audit line, never a refusal; plus one clause — the director is the only adjudicator and is summoned in whichever repo the maintainer is working in. ⛔ The published-skill director role (summonable inside hotcrm or a customer metadata project) is NOT this card: it is a feature of the published skill, on the manual floor, and waits on the maintainer's inbox-location answer — a separate card.
scripts/pm/dispatch-gates.mjs: MANDATORY_TIER_GLOBS (:10603) gains a skills/** entry whose why names the 2026-09-10 ruling; the docblock at :10512–:10526 is corrected to the new clause-① set; self-test cases so that --tier skills/objectstack-data/SKILL.md prints the mandate and --tier .claude/skills/pm-dispatch/references/core-rules.md still does not. objectui has no dispatch-gates.mjs: its skills/objectui/** is covered by the rule text and the skills seat's claim/review discipline — ⛔ no objectui PR.
- ⛔ Not touched:
.claude/agents/os-dev.md (its floor comment at :12 stays true); skills/objectstack-pm-dispatch/SKILL.md (the frame-sync COPIES carry no tier text — measured: zero hits for tier / contract-review / model in the file); references/lanes/triage.md (7 lines, no tier line); references/lanes/spec.md (:25 points at SKILL.md as the single source and stays a pointer).
Acceptance
node scripts/pm/dispatch-gates.mjs --tier skills/objectstack-data/SKILL.md and --tier skills/objectstack-ai/SKILL.md print the clause-① mandate; --tier .claude/skills/pm-dispatch/references/core-rules.md prints none; --self-test is green with the new cases.
- SKILL.md carries the table above inside its existing rows (⛔ no new section), stays ≤ 812 lines, and
pnpm -s check:skill-line-ratchet, check:skill-frame-sync, check:pm-skill-id-lint (⛔ no issue numbers in skill files) and check:skill-compatibility are green.
- The core-rules.md twins move in the same PR; contract-review.md and director.md stay within their ceilings.
- Every deleted or moved line is quoted before/after in the PR body, next to the ruling sentence it implements.
- PR body: first line
Fixes #<this card>; ## 维护者速读(草稿) (Chinese, five sections, business angle); ## Acceptance notes. Governed (.claude/** + scripts/pm/**) ⇒ draft, ⛔ never ready / enqueued / auto-merged / approved by any seat; skip-changeset applies (neither path ships in a package).
Out of scope — separate acts
- Director role in the published
skills/objectstack-pm-dispatch, the hotcrm install, and where hotcrm's decision cards live (本仓 vs objectstack): waits on the maintainer's answer; a separate card.
- Telling the seats whose existing cards carry a contract-review-tier requirement that the default tier suffices (ruling 5): done by this seat as a comment on each such card, citing this card; ⛔ not part of the PR.
Generated by Claude Code
Filed by the
domain:skillsexecution seat (sessionsession_01MoTv7pn338AZ71owsp19gQ, GitHubos-justin) at 2026-09-10T03:1xZ under the maintainer's direct instruction in this seat's chat session — 直派通道: routed and claimed by the instructed PM session, labels set by that seat under the direct-dispatch rule, ⛔ not a triage grading.裁决 — the maintainer's words, verbatim and untranslated (chat, 2026-09-10, 02:0xZ–03:0xZ)
The default model tier is on the manual floor (人工地板: 花费/配额/舰队形态/默认模型档位). These sentences are the maintainer's explicit words for it. ⛔ This card re-adjudicates none of them; the seat's own prose below uses the tier names the skill text already uses (契约复审档 =
CONTRACT_REVIEW_TIER, 默认判断档 =TIER_DEFAULT), and ⛔ no model name enters any skill file (the director charter already forbids it).What the rule text says after this card
skills/**catalogs; default tier forreferences/**and other governed one-liners as todayClause ① (path mandate) =
.claude/skills/pm-dispatch/SKILL.md,.claude/agents/os-dev.md,skills/objectstack-pm-dispatch/SKILL.md(unchanged) plus the publishedskills/**catalogs: objectstackskills/(11 skill trees, 46 files, ~13.6k lines; shipped bynpm create objectstackandnpx skills add objectstack-ai/objectstack/skills --skill '*', perskills/README.md:5–:9) and objectuiskills/objectui/(27 files, 5,189 lines;npx skills add objectstack-ai/objectui, per objectuiREADME.md:521). ⛔ No one-line exemption forskills/**: a closed enumeration beats a per-line "is this mechanical" call, and the maintainer's word is 必须.Clause ② (content rule) is unchanged in substance — the
Clause-②declaration, the widening-tells gate, pin tests, and the manual floor for widenings under 代裁 all stay. What changes is WHO reviews: only the spec seat's clause-② review runs at the contract-review tier. Anything touchingpackages/specalready routes to the spec seat (〈多仓协调〉 rule 5), so no other lane keeps a contract-review-tier dependency.Adjudication: the only adjudicator is the director seat summoned by the maintainer, and its tier is the maintainer's per-summon choice (ruling 6) — the director records the tier it ran at (harness reading) in its session audit line, and ⛔ never refuses or parks its duties for being below the contract-review tier. So: 置信门 drops gate ⑤ (档位硬门) and becomes four gates; the 「档位未达 ⇒ 整体跳过」 consequence and the director's 「不达档只做免档整理并停放四职」 state are deleted, not moved; the 降档保险丝 no longer applies to the director (its population is the spec seat's clause-② review and the skills seat). The triage seat spawns no contract-review-tier subagent — for 代裁 or anything else — and the per-fire 代裁 pass leaves the triage duties; the director's remaining gates (一类自裁门's three criteria, the four-gate 置信门, the manual floor) are where 代裁 lives.
File surface and the exact lines (
origin/maind64bcb63, 2026-09-10T03:01Z).claude/skills/pm-dispatch/SKILL.md— 812 lines, ratchet ceiling 812, headroom 0 ⇒ net-zero or fewer lines; every line added is paid for by a line merged or deleted.model的契约复审档子代理。」 → the second clause goes; the triage seat has no 达档职责.model的契约复审档子代理(逐份过转录核验),或达档总监席。」 → 达档者 = the maintainer-summoned director seat, only.skills/**; :510 (the exemption) saysskills/**is not exempt; :513 scopes the clause-② contract-review-tier review to the spec seat; :523 「契约复审档留给裁决/复审子代理、skills 席与条款②复核。」 → 「契约复审档留给总监席、skills 席与 spec 席的条款②复核」; :522 stays true as written.CONTRACT_REVIEW_TIER,不达档只做免档整理并停放四职。」 → 「总监席档位由维护者按项目人工定,每场记入摘要台账;⛔ 无档位硬门、无免档整理态。」; plus the statement that the director is the only adjudicator..claude/skills/pm-dispatch/references/core-rules.md(151/151): the twins at :18, :94 (代裁 producer = the summoned director, no tier gate, no 「不达档则通道整体跳过」), :98 (four gates, 达档 dropped), :112 and :147 change in the same PR (「一条规则在本文与核心条款一处改动,另一处同 PR 同改」)..claude/skills/pm-dispatch/references/contract-review.md(60/60): :10–:18 keep their shape but name the spec seat as the reviewing seat; :29/:34 the review-subagent language is the spec seat's; :48–:60 the fuse stays for the two seats that still produce at-tier verdicts (the spec seat's clause-② review and the skills seat) and says that other seats' reviews — and the director's adjudications — are not at-tier verdicts and are not gated by it..claude/skills/pm-dispatch/references/lanes/director.md(72 lines): :12–:14 (「档位 =CONTRACT_REVIEW_TIER」, the per-summon fuse reading, 「不达档只做免档整理…⛔ 不裁不清标」) → the tier is the maintainer's per-summon choice, recorded from the harness reading in the session audit line, never a refusal; plus one clause — the director is the only adjudicator and is summoned in whichever repo the maintainer is working in. ⛔ The published-skill director role (summonable inside hotcrm or a customer metadata project) is NOT this card: it is a feature of the published skill, on the manual floor, and waits on the maintainer's inbox-location answer — a separate card.scripts/pm/dispatch-gates.mjs:MANDATORY_TIER_GLOBS(:10603) gains askills/**entry whosewhynames the 2026-09-10 ruling; the docblock at :10512–:10526 is corrected to the new clause-① set; self-test cases so that--tier skills/objectstack-data/SKILL.mdprints the mandate and--tier .claude/skills/pm-dispatch/references/core-rules.mdstill does not. objectui has nodispatch-gates.mjs: itsskills/objectui/**is covered by the rule text and the skills seat's claim/review discipline — ⛔ no objectui PR..claude/agents/os-dev.md(its floor comment at :12 stays true);skills/objectstack-pm-dispatch/SKILL.md(the frame-sync COPIES carry no tier text — measured: zero hits for tier / contract-review / model in the file);references/lanes/triage.md(7 lines, no tier line);references/lanes/spec.md(:25 points at SKILL.md as the single source and stays a pointer).Acceptance
node scripts/pm/dispatch-gates.mjs --tier skills/objectstack-data/SKILL.mdand--tier skills/objectstack-ai/SKILL.mdprint the clause-① mandate;--tier .claude/skills/pm-dispatch/references/core-rules.mdprints none;--self-testis green with the new cases.pnpm -s check:skill-line-ratchet,check:skill-frame-sync,check:pm-skill-id-lint(⛔ no issue numbers in skill files) andcheck:skill-compatibilityare green.Fixes #<this card>;## 维护者速读(草稿)(Chinese, five sections, business angle);## Acceptance notes. Governed (.claude/**+scripts/pm/**) ⇒ draft, ⛔ never ready / enqueued / auto-merged / approved by any seat;skip-changesetapplies (neither path ships in a package).Out of scope — separate acts
skills/objectstack-pm-dispatch, the hotcrm install, and where hotcrm's decision cards live (本仓 vs objectstack): waits on the maintainer's answer; a separate card.Generated by Claude Code