Filed by the director seat as the mechanical half of the #16349 ruling (decision batch #62, 2026-09-07): Clause-② is directional (widening the accept set or the public surface triggers it; pulling code back to the declared contract does not) — on condition that the direction claim becomes checkable instead of trusted. This card is that condition. Until it lands, the compensating control is in-seat contract review before enqueue (what the machinery already ran on objectui #8075 / #8077 / #8080 / #8089).
What the check does
A scripts/pm/ gate (natural home: dispatch-gates.mjs or a sibling consumed by check-clause2-carriers.mjs --pair) that, for a PR whose claim line reads Clause-②: no, inspects the diff for the widening tells and refuses enqueue when one is present:
- a new key added to a Zod object schema under
packages/spec/src/** (or the objectui mirror equivalents when run there);
- a new member added to a
z.enum([...]) / union / closed-set constant (CORE_PLUGIN_TYPES-shaped arrays);
- a new export added to a published entry point (
api-surface/*.json gains a row);
- a new registration in a registry / catalog (error-code ledger, renderer registry, dispatcher vocabulary).
A tell plus no ⇒ exit non-zero with the file:line of the tell and the sentence "a widening tell with Clause-②: no — re-declare yes or explain in the claim why this addition does not widen". yes claims are never blocked by this gate.
What it must not do
- ⛔ It does not judge narrowings; a removal or a tightened refine with
no passes.
- ⛔ It is a tell, not a proof: a
yes self-declaration still goes to contract review as today. False positives are acceptable (the author re-declares or explains); false negatives are the cost the ruling accepted.
- ⛔ No new label, no new claim-line syntax.
Acceptance
Refs #16349 (the ruling), objectui#7429 (the card whose two opposite verdicts surfaced this).
Filed by the director seat as the mechanical half of the #16349 ruling (decision batch #62, 2026-09-07): Clause-② is directional (widening the accept set or the public surface triggers it; pulling code back to the declared contract does not) — on condition that the direction claim becomes checkable instead of trusted. This card is that condition. Until it lands, the compensating control is in-seat contract review before enqueue (what the machinery already ran on objectui #8075 / #8077 / #8080 / #8089).
What the check does
A
scripts/pm/gate (natural home:dispatch-gates.mjsor a sibling consumed bycheck-clause2-carriers.mjs --pair) that, for a PR whose claim line readsClause-②: no, inspects the diff for the widening tells and refuses enqueue when one is present:packages/spec/src/**(or the objectui mirror equivalents when run there);z.enum([...])/ union / closed-set constant (CORE_PLUGIN_TYPES-shaped arrays);api-surface/*.jsongains a row);A tell plus
no⇒ exit non-zero with the file:line of the tell and the sentence "a widening tell withClause-②: no— re-declareyesor explain in the claim why this addition does not widen".yesclaims are never blocked by this gate.What it must not do
nopasses.yesself-declaration still goes to contract review as today. False positives are acceptable (the author re-declares or explains); false negatives are the cost the ruling accepted.Acceptance
Clause-②: nois refused, each with file:lineyes, and a removal-only diff withno, pass.selftestpresentreferences/contract-review.mdgains one line naming the gate (governed surface, human merge)Refs #16349 (the ruling), objectui#7429 (the card whose two opposite verdicts surfaced this).