Skip to content

skills(pm-dispatch): 强制条款② mandates CONTRACT_REVIEW_TIER for IMPLEMENTATION of clause-② cards — drop it to TIER_DEFAULT and let the existing contract review be the gate (maintainer-authorised trial already running) #16905

Description

@os-warren

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)

Activity

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

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions