From 721d7597c131a05f14943188b7f0f1a9d2aa3221 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 10 Sep 2026 17:44:08 +0000 Subject: [PATCH] fix(pm): CONTRACT_REVIEW_TIER's docblock states a REVIEW tier, not a dispatch mandate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The constant's docblock still described clause ② as the tier a card that changes contract accept/reject behaviour or widens the public surface "must be dispatched at". Since the 强制条款② narrowing landed, that is false: such a card is BUILT at the default judgment tier and REVIEWED at CONTRACT_REVIEW_TIER — which is what this same file already states in the MANDATORY_TIER_GLOBS clause-② bullet and prints from `tierLines` on every `--tier` run. The docblock was the one site left contradicting both. Prose only. `deriveTier` encodes clause ① and nothing else, so no code path and no printed line moves. Claude-Session: https://claude.ai/code/session_01YKEjmbYNvYWJvWGSWx26zK Co-authored-by: Claude --- scripts/pm/dispatch-gates.mjs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/scripts/pm/dispatch-gates.mjs b/scripts/pm/dispatch-gates.mjs index b4a475226b1..eb7befe098b 100644 --- a/scripts/pm/dispatch-gates.mjs +++ b/scripts/pm/dispatch-gates.mjs @@ -10486,10 +10486,12 @@ export function residueLines( /** * The single source of truth for the model tier the PM lane's governance - * reads — clause ②'s CONTRACT-REVIEW tier: the tier a card that changes - * contract accept/reject behaviour or widens the public surface must be - * dispatched at, and the tier the `needs:contract-review` re-review sub-round - * must itself be running at (its opening self-check reads this). Declared HERE + * reads — clause ②'s CONTRACT-REVIEW tier: the tier the clause-② REVIEW runs + * at, both halves of it — the spec seat's review of a card that changes + * contract accept/reject behaviour or widens the public surface, and the + * `needs:contract-review` re-review sub-round (its opening self-check reads + * this). The BUILD of such a card is at the default judgment tier, so this + * constant is a review tier and never a dispatch mandate. Declared HERE * and only here, as a constant, so a model upgrade is a one-line change in one * file — the clause-① mandate rows below read it, the self-test compares * against it, and the PM skill's prose names it, so the model id is spelled as