Skip to content

Model-tier policy: the contract-review tier is reserved for the skills seat (three protocol files + the published skills/** catalogs), the spec seat's clause-② review, and the maintainer-summoned director; triage and every other seat run the default tier #17285

Description

@os-justin

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)

  1. 「现在所有车道都会派 fable 任务,没有fable就等契约复审,你综合评估一下,我们哪些车道实际需要fable级别的开发的。哪些只用opus就够了」
  2. 「必须 fable的还包括对外发布的skills」
  3. 「按照你的新建议,只有 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.
  4. 「分诊席现在也是opus,裁决统一由我以总监的身份召唤。比如我在 hotcrm 或其他元数据项目中可以召唤总监裁决。」
  5. 「现有的卡片如果写了要求fable的,也要让相关的项目经理知道,opus就够了。」
  6. 「裁决(决策箱、代裁、一类自裁)是人工召唤,不需要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

  1. 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.
  2. 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.
  3. The core-rules.md twins move in the same PR; contract-review.md and director.md stay within their ceilings.
  4. Every deleted or moved line is quoted before/after in the PR body, next to the ruling sentence it implements.
  5. 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

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions