Skip to content

Commit fa628d0

Browse files
committed
fix(pm): repair two carriers still spelling the superseded references-tier boundary
Two carriers of the governed-tier rule still stated the 2026-09-13 boundary (Tier S / "fact layer" = only .claude/skills/pm-dispatch/references/**) that #19133 (2026-09-18, maintainer "同意改规则。" plus the amendment folding in .claude/settings.json and .claude/hooks/**) superseded: Tier S is now the whole .claude/** tree, per the GOVERNED_SURFACES register (id: claude-tree) and its self-test case skills-agents-and-the-fact-layer-are-Tier-S in scripts/pm/check-governed-merges.mjs, and per SKILL.md:625-626. Within the last hour this stale text caused two agents to misclassify a compliant PR. - .claude/skills/pm-dispatch/references/landing-operations.md:27-28 spelled the old boundary as current ("受管路径全在本技能 references/ 者事实层 … 其余为规则层"), which would tell a dev touching e.g. SKILL.md itself to leave the PR in draft awaiting a maintainer approval it does not need. Re-keyed to Tier S (.claude/** whole tree) / Tier H (everything else), same two-bullet shape, line count and byte ceiling unchanged (69/69). - scripts/pm/check-governed-queue-guard.mjs's "THIRD leg" header (~268-294) reproduced the same narrow 2026-09-13 boundary and concluded "Every other governed path is the rules layer and keeps the predicate above byte-for-byte" -- false since #19133, and self-contradicting the same file's own later "the landing TIER" section, which already records that REFERENCES_TIER_PREFIX "is gone". The quoted 2026-09-13 ruling is kept, untranslated, as the ruling that started this leg; a new paragraph marks it SUPERSEDED by #19133 and points at governedTierFor / the register / `check-governed-merges.mjs --test <paths>` instead of a prefix to remember. No behavior, constant, or self-test assertion changed. Tier verdict on this PR's final file list (check-governed-merges.mjs --test): GOVERNED -- Tier S (landing-operations.md hits the .claude/** register row; check-governed-queue-guard.mjs is not itself a registered surface). The card relation to the pre-existing tracking issue is stated once, in the pull request body, per this repo's own commit-trailer contract. Co-Authored-By: Claude <noreply@anthropic.com>
1 parent ada7012 commit fa628d0

2 files changed

Lines changed: 22 additions & 10 deletions

File tree

‎.claude/skills/pm-dispatch/references/landing-operations.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
- 契约复核 PASS 落地的 PR 到窗口时已 ready 且 auto-merge 在挂,见 `contract-review.md`。
2525
- 窗口自身权责不变:跟到 MERGED、踢出处置、落地后对账。
2626
- 转 ready/入队前跑 `check-governed-merges.mjs --pr N`:受管面照两层;>5000 行(含生成物)照规则层。
27-
- 受管路径全在本技能 `references/` 者事实层:席内达档复核过落地前检三条即转正式入队。
28-
- 其余为规则层:四件套留 draft 等人批,⛔ 不翻正式不入队;获授权批准后认领席落地。
27+
- Tier S(`.claude/**` 全树)者:席内达档复核过落地前检三条即转正式入队。
28+
- Tier H(其余受管面)者:四件套留 draft 等人批,⛔ 不翻正式不入队;获授权批准后认领席落地。
2929
- ⛔ 两层不由席位批准;清标即落地同受此闸,漏判会被队列守卫在 merge group 里拒收。
3030
- 再读 `mergeable_state`:`dirty` ⇒ 先 merge `origin/main` 再挂;生成物在面上按 A 的固定序。
3131
- ready + 全绿 ≠ 已入队:队列从不主动拉 PR,入队是显式动作。

‎scripts/pm/check-governed-queue-guard.mjs‎

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -279,19 +279,31 @@
279279
* — answered 「我点头」. The other half of that boundary, the 规则层, is every
280280
* remaining governed path and is quoted in full on #17950; ⛔ it is NOT excerpted
281281
* here, because a partial rules-layer list read as the whole one is precisely
282-
* the under-claim `check-governed-prose` exists to stop. The register is the
283-
* enumeration; this leg only asks whether a path is under the ONE prefix above. The charter text landed as PR #18018; this leg is what
284-
* makes it ENFORCED rather than declared, which is the whole of #18020.
282+
* the under-claim `check-governed-prose` exists to stop. The charter text landed
283+
* as PR #18018; this leg is what made it ENFORCED rather than declared, which is
284+
* the whole of #18020 — narrowly, for the one prefix quoted above.
285285
*
286-
* So a governed diff whose governed paths ALL lie under
287-
* `.claude/skills/pm-dispatch/references/` may land on a REVIEW OF RECORD in
288-
* place of the authorized approval: the `## Contract review` comment — on the
286+
* ⭐ SUPERSEDED 2026-09-18 (#19133, ruled 「同意改规则。」 on the skills seat's
287+
* proposal; the amendment moved `.claude/settings.json` and `.claude/hooks/**`
288+
* over too: 「我觉得这些我也没必要确认」): the quote above is reproduced as the
289+
* ruling that STARTED this leg, not as the population it enforces today. #19133
290+
* widened that population from the one prefix quoted above to the WHOLE of
291+
* `.claude/**` — Tier S, in the register's own words — leaving Tier H as exactly
292+
* the register's other rows. The register's `tier` field is the enumeration now;
293+
* this leg asks `governedTierFor` for Tier S, never a prefix repeated here — see
294+
* the "landing TIER" section below for the enforced definition, and read it live
295+
* with `node scripts/pm/check-governed-merges.mjs --test <paths>` rather than
296+
* trusting a prefix copied into prose, which is exactly what went stale once.
297+
*
298+
* So a governed diff whose governed paths are ALL Tier S — today, the whole of
299+
* `.claude/**` — may land on a REVIEW OF RECORD in place of the authorized
300+
* approval: the `## Contract review` comment — on the
289301
* PULL REQUEST'S THREAD **or on its CARD'S** — that names the pull request's
290302
* CURRENT head, carries a `Reviewed-by:` line, and declares a `Served-tier:`
291303
* reading that STANDS -- its token being the NAME `CONTRACT_REVIEW_TIER`,
292304
* ⛔ never a model identifier, which `AGENTS.md` lets land in no comment and a
293-
* record IS one (#18060). Every other governed path is the rules layer and
294-
* keeps the predicate above byte-for-byte.
305+
* record IS one (#18060). Every governed path outside Tier S is Tier H, the
306+
* rules layer, and keeps the predicate above byte-for-byte.
295307
*
296308
* ⭐ THE TWO CARRIERS ARE ONE DELIVERY, and the location is the governed text's
297309
* to decide rather than this file's — quoted, untranslated, because it IS the

0 commit comments

Comments
 (0)