Filed by the domain:spec @ objectui seat (session_01Jmxdo7bmeqCQHLSfmLVX9w, os-warren) on the maintainer's direct instruction. ⛔ Filed unassigned, not claiming — .claude/skills/pm-dispatch/SKILL.md is the domain:skills lane's governed surface and this seat ⛔ neither owns it nor edits it.
⛔ Routing input only, ⛔ not a lane assignment: this plainly lands in .claude/skills/pm-dispatch/SKILL.md, which the domain table puts in domain:skills. Grading and domain:* are the triage seat's.
The maintainer instruction
Asked whether a fable review makes a fable build unnecessary, then, verbatim: 「开skill卡,在裁决落地之前,你直接按新规则试行。」
⇒ Two things, and they are separable: (1) this card, to change the text properly through a governed PR; (2) a trial already in force in the domain:spec @ objectui lane, recorded on that seat post. ⚠️ The trial is the maintainer's authorisation, ⛔ not this card being pre-approved, and ⛔ not a licence for any other seat to deviate from the text as written.
What the text says today
SKILL.md, 〈派发〉:
强制条款②:凡放宽接受集或扩大公开面的卡一律契约复审档;拉回已声明契约按常规档。
⇒ A clause-② card is built and reviewed at CONTRACT_REVIEW_TIER. The proposal is to keep the review there and drop the build to TIER_DEFAULT.
⭐ Why this is a narrowing of an inconsistency, not a new idea
① The architecture already declares review to be the compensation for low-tier dispatch. references/contract-review.md, 降档保险丝:
契约复核 ⛔ 不适用额度耗尽豁免降档:豁免对象是派发,复核正为补偿低档派发而存在。
That sentence only makes sense if low-tier dispatch + high-tier review is an anticipated, sanctioned shape. 强制条款② is the one place that shape is forbidden.
② The same trade is already ruled, by the maintainer, for another surface class. scripts/pm/dispatch-gates.mjs, recording the 2026-08-20 ruling verbatim 「接受你的建议 — fable 当审计师用,不当施工队用」:
references-only surfaces carry NO path mandate any more (opus execution, compensated by the skill-face review at CONTRACT_REVIEW_TIER)
And SKILL.md already carries the mechanism with a name — 「降档施工的补偿控制 = 复核席跑契约复审档」 — scoped to references-only and one-line mechanical governed edits. ⇒ This card asks whether that scope should include clause ②.
③ The cost asymmetry is measured, not assumed. From this seat's round R1, two devs on comparable-sized cards:
| dev |
tier |
subagent tokens |
tool uses |
| objectui#8583 |
claude-fable-5-1 |
335,280 |
89 |
| objectui#8327 |
opus |
329,951 |
121 |
⇒ Tier barely moves token COUNT (1.6% apart). It moves unit price. The contract review that gated the first of those cost 211,330 tokens — so build is the large line item and review is the small one, and 强制条款② puts the expensive tier on the large one.
⚠️ The counter-evidence, stated first rather than buried
The fable-built PR in that very round FAILED its contract review (objectui#8583 / PR #8601, verdict at objectui#8583 comment 5587871554). The build graded a public-surface widening as a patch changeset; it should be minor. The reviewer found it by checking the build's cited precedent against four counter-precedents.
That cuts both ways and an honest card has to say so:
- For the change: building at the ceiling did not prevent the error. The review caught it. That is precisely the claim this card rests on — the gate is the review.
- Against the change: it is one observation of a fable build erring, ⛔ not a measurement that an opus build errs no more often. ⚠️ Nobody has measured the thing that actually matters: does the review FAIL rate rise when the build tier drops? ⛔ Do not let this card be adopted as though that were known.
⚠️ And the round's own evidence is not a clean comparison and ⛔ must not be quoted as one: the opus card (objectui#8327) was Clause-②: no, a census/classification task of a different shape from the fable card's declaration widening. Two cards, two task shapes, ⇒ proves nothing about tier and quality. ⛔ Do not carry "the opus dev did the better work" forward as evidence; it is true of that round and does not generalise.
Proposed change
In SKILL.md, 强制条款② — the accept-set/public-surface half moves from build-tier mandate to review-tier mandate:
- clause-② cards are built at
TIER_DEFAULT;
- clause-② cards are reviewed at
CONTRACT_REVIEW_TIER, unchanged, and the carrier discipline (needs:contract-review on card and PR, cleared only by a posted verdict whose own Scope-covered: line covers the whole change) is unchanged;
- 强制条款① (protocol-semantic surfaces: this
SKILL.md, the decision-frame copy, .claude/agents/os-dev.md) is untouched — that is a different mandate with a different rationale, and ⛔ this card does not widen into it;
- the tier-fuse rule is untouched: a seat below
CONTRACT_REVIEW_TIER ⛔ still never clears a carrier itself.
⚠️ check-skill-line-ratchet.mjs: this file's line count only ever goes down. ⇒ the edit must pay for itself by deletion, and ⛔ re-wrapping does not count as paying. Plausibly this is net-negative anyway — it collapses a special case into the general 降档施工/补偿控制 rule that already exists.
The tripwire this needs, and why it is the load-bearing half
⛔ Do not land this as a permanent rule with no instrument. Adopt it with a measurement:
Record the contract-review FAIL rate on clause-② cards built at TIER_DEFAULT. Low ⇒ the trade holds. Materially higher than the fable-built baseline ⇒ the review does not in fact catch what a lower-tier build gets wrong, and the rule reverts.
⚠️ The baseline is currently 1 FAIL out of 1 fable-built clause-② card (this round) — ⛔ a sample of one, useless as a baseline, and named here so nobody treats it as one. The instrument matters more than the initial reading; whoever takes this card should say where the counter lives (round reports already carry a 复审清单专节, which is the obvious home).
Executable acceptance criterion
SKILL.md states that a clause-② card is built at TIER_DEFAULT and reviewed at CONTRACT_REVIEW_TIER; pnpm check:pm-skill-ratchet passes (line count not increased); check:skill-frame-sync / -freshness pass; and the round-report section that carries contract-review outcomes names the FAIL-rate counter.
Governed-surface note
.claude/skills/** is a governed surface ⇒ terminal four-piece treatment: ⛔ no seat approves or merges it, the PR gets needs-user-decision plus a 「维护者速读」 comment, and review is requested from both authorised accounts. ⚠️ And SKILL.md is itself a 强制条款① surface, so the PR that changes it is built at CONTRACT_REVIEW_TIER regardless of what it says about clause ② — the change ⛔ cannot exempt its own landing.
Refs: the 2026-08-20 ruling recorded in scripts/pm/dispatch-gates.mjs (MANDATORY_TIER_GLOBS docblock) · references/contract-review.md 降档保险丝 · objectstack-ai/objectui#8583 and its verdict 5587871554 (the measured FAIL) · objectstack-ai/objectui#8327 (the opus-built card) · objectstack-ai/objectui#5734 (the seat post carrying the trial)
Filed by the
domain:spec@ objectui seat (session_01Jmxdo7bmeqCQHLSfmLVX9w,os-warren) on the maintainer's direct instruction. ⛔ Filed unassigned, not claiming —.claude/skills/pm-dispatch/SKILL.mdis thedomain:skillslane's governed surface and this seat ⛔ neither owns it nor edits it.⛔ Routing input only, ⛔ not a lane assignment: this plainly lands in
.claude/skills/pm-dispatch/SKILL.md, which the domain table puts indomain:skills. Grading anddomain:*are the triage seat's.The maintainer instruction
Asked whether a fable review makes a fable build unnecessary, then, verbatim: 「开skill卡,在裁决落地之前,你直接按新规则试行。」
⇒ Two things, and they are separable: (1) this card, to change the text properly through a governed PR; (2) a trial already in force in the⚠️ The trial is the maintainer's authorisation, ⛔ not this card being pre-approved, and ⛔ not a licence for any other seat to deviate from the text as written.
domain:spec@ objectui lane, recorded on that seat post.What the text says today
SKILL.md, 〈派发〉:⇒ A clause-② card is built and reviewed at
CONTRACT_REVIEW_TIER. The proposal is to keep the review there and drop the build toTIER_DEFAULT.⭐ Why this is a narrowing of an inconsistency, not a new idea
① The architecture already declares review to be the compensation for low-tier dispatch.
references/contract-review.md, 降档保险丝:That sentence only makes sense if low-tier dispatch + high-tier review is an anticipated, sanctioned shape. 强制条款② is the one place that shape is forbidden.
② The same trade is already ruled, by the maintainer, for another surface class.
scripts/pm/dispatch-gates.mjs, recording the 2026-08-20 ruling verbatim 「接受你的建议 — fable 当审计师用,不当施工队用」:And
SKILL.mdalready carries the mechanism with a name — 「降档施工的补偿控制 = 复核席跑契约复审档」 — scoped to references-only and one-line mechanical governed edits. ⇒ This card asks whether that scope should include clause ②.③ The cost asymmetry is measured, not assumed. From this seat's round R1, two devs on comparable-sized cards:
claude-fable-5-1opus⇒ Tier barely moves token COUNT (1.6% apart). It moves unit price. The contract review that gated the first of those cost 211,330 tokens — so build is the large line item and review is the small one, and 强制条款② puts the expensive tier on the large one.
The fable-built PR in that very round FAILED its contract review (objectui#8583 / PR #8601, verdict at objectui#8583 comment
5587871554). The build graded a public-surface widening as apatchchangeset; it should beminor. The reviewer found it by checking the build's cited precedent against four counter-precedents.That cuts both ways and an honest card has to say so:
Clause-②: no, a census/classification task of a different shape from the fable card's declaration widening. Two cards, two task shapes, ⇒ proves nothing about tier and quality. ⛔ Do not carry "the opus dev did the better work" forward as evidence; it is true of that round and does not generalise.Proposed change
In
SKILL.md, 强制条款② — the accept-set/public-surface half moves from build-tier mandate to review-tier mandate:TIER_DEFAULT;CONTRACT_REVIEW_TIER, unchanged, and the carrier discipline (needs:contract-reviewon card and PR, cleared only by a posted verdict whose ownScope-covered:line covers the whole change) is unchanged;SKILL.md, the decision-frame copy,.claude/agents/os-dev.md) is untouched — that is a different mandate with a different rationale, and ⛔ this card does not widen into it;CONTRACT_REVIEW_TIER⛔ still never clears a carrier itself.check-skill-line-ratchet.mjs: this file's line count only ever goes down. ⇒ the edit must pay for itself by deletion, and ⛔ re-wrapping does not count as paying. Plausibly this is net-negative anyway — it collapses a special case into the general 降档施工/补偿控制 rule that already exists.The tripwire this needs, and why it is the load-bearing half
⛔ Do not land this as a permanent rule with no instrument. Adopt it with a measurement:
Executable acceptance criterion
SKILL.mdstates that a clause-② card is built atTIER_DEFAULTand reviewed atCONTRACT_REVIEW_TIER;pnpm check:pm-skill-ratchetpasses (line count not increased);check:skill-frame-sync/-freshnesspass; and the round-report section that carries contract-review outcomes names the FAIL-rate counter.Governed-surface note
.claude/skills/**is a governed surface ⇒ terminal four-piece treatment: ⛔ no seat approves or merges it, the PR getsneeds-user-decisionplus a 「维护者速读」 comment, and review is requested from both authorised accounts.SKILL.mdis itself a 强制条款① surface, so the PR that changes it is built atCONTRACT_REVIEW_TIERregardless of what it says about clause ② — the change ⛔ cannot exempt its own landing.Refs: the 2026-08-20 ruling recorded in
scripts/pm/dispatch-gates.mjs(MANDATORY_TIER_GLOBSdocblock) ·references/contract-review.md降档保险丝 · objectstack-ai/objectui#8583 and its verdict5587871554(the measured FAIL) · objectstack-ai/objectui#8327 (the opus-built card) · objectstack-ai/objectui#5734 (the seat post carrying the trial)