Repository navigation
Commit 1f53b0b
fix(pm): repair two carriers still spelling the superseded references-tier boundary (#19379)
Part of #19146
Clause-②: no
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)
superseded. #19133's ruling, verbatim and untranslated: maintainer
「同意改规则。」 on the skills seat's proposal, plus the amendment that folded
`.claude/settings.json` and `.claude/hooks/**` in too: 「我觉得这些我也没必要确认」.
Tier S is now the whole `.claude/**` tree.
Current, correct source of truth (unchanged by this PR):
- `scripts/pm/check-governed-merges.mjs` register row `{ id:
'claude-tree', prefix: '.claude/', glob: '.claude/**', tier:
GOVERNED_TIER_S, … }`, pinned by self-test case
`skills-agents-and-the-fact-layer-are-Tier-S`.
- `.claude/skills/pm-dispatch/SKILL.md:625-626`: 「受管面两层:Tier H(规则层)=
`AGENTS.md`+`CLAUDE.md`+`docs/adr/**`+`docs/NORTH-STAR.md`+发布
`skills/**`。」「Tier S = `.claude/**` 全树;Tier H 四件套等人批;Tier S 经席内达档复核 PASS
在案后 ready → 入队。」
## What was stale
**`.claude/skills/pm-dispatch/references/landing-operations.md:27-28`**
Before:
```
- 受管路径全在本技能 `references/` 者事实层:席内达档复核过落地前检三条即转正式入队。
- 其余为规则层:四件套留 draft 等人批,⛔ 不翻正式不入队;获授权批准后认领席落地。
```
After:
```
- Tier S(`.claude/**` 全树)者:席内达档复核过落地前检三条即转正式入队。
- Tier H(其余受管面)者:四件套留 draft 等人批,⛔ 不翻正式不入队;获授权批准后认领席落地。
```
Line count and byte ceiling unchanged (69/69, both lines within the
120-byte cap — `check:pm-skill-ratchet` verified).
**`scripts/pm/check-governed-queue-guard.mjs`, the "THIRD leg" header
(~268-294)**
It reproduced the 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".
Fix: the quoted 2026-09-13 ruling is kept, untranslated, as the ruling
that STARTED this leg (history is load-bearing — a reader who finds that
text must see why it no longer governs). A new paragraph marks it
SUPERSEDED by #19133 (cited with date, reusing this same file's own
existing verbatim quote of the amendment for consistency) and points at
`governedTierFor` / the register / `node
scripts/pm/check-governed-merges.mjs --test <paths>` instead of a prefix
to remember. The concluding sentence now reads "Every governed path
outside Tier S is Tier H, the rules layer, and keeps the predicate above
byte-for-byte."
No behavior changed: `GOVERNED_SURFACES`, `governedTierFor`,
`landingTierOf`, every tier constant and every self-test assertion's
expected value are untouched — only the two stale prose passages.
## Verification before editing
- Read #19133 on GitHub directly (the tracking card/comments):
maintainer ruling 「同意改规则。」 plus the amendment 「我觉得这些我也没必要确认」, landed by
PR #19144 (merged `1047fe101`), matches this PR's premise exactly.
- Read the register row, its self-test case, and `SKILL.md:625-626` —
all current and correct, confirmed unedited.
- Read both stale passages in full context before editing.
## Tier verdict on this PR's final file list
```
node scripts/pm/check-governed-merges.mjs --test .claude/skills/pm-dispatch/references/landing-operations.md scripts/pm/check-governed-queue-guard.mjs
```
→ `GOVERNED — Tier S`, exit 3. `landing-operations.md` hits the
`.claude/**` register row; `check-governed-queue-guard.mjs` is not
itself a registered surface (1 of 2 paths governed). Per Prime Directive
#14, this PR lands on the owning seat's Tier S contract-tier review of
record — no seat approves it, and no maintainer click is waited for.
## Gates run (exit code captured before any pipe)
- `node scripts/pm/check-governed-queue-guard.mjs --self-test` — exit 0
(296 cases pass)
- `node scripts/pm/check-governed-merges.mjs --self-test` — exit 0 (435
assertions)
- `pnpm check:pm-skill-ratchet` — exit 0 (landing-operations.md 69/69,
headroom 0, unchanged)
- `pnpm check:pm-skill-id-lint` — exit 0 (27 files clean)
- `pnpm check:pm-governed-prose` — exit 0 (names all 6 registered
surfaces)
- `pnpm check:nul-bytes` — exit 0
- `npx eslint scripts/pm/check-governed-queue-guard.mjs` — exit 0
- `node --check scripts/pm/check-governed-queue-guard.mjs` — exit 0
## Changeset
`skip-changeset` — no `packages/*` touched; neither `.claude/skills/**`
nor `scripts/pm/**` ships in any package's `files[]` (same as precedent
PRs #19144 and #19021).
## On the card
This PR is filed as **Part of #19146**, not a new card: #19146 ("skills:
re-key the three 事实层 = references/ spellings the Tier S ruling leaves
false") was already open, filed by the seat that landed PR #19144, and
its item 2 is exactly `landing-operations.md:27-28`. Creating a new
duplicate card would have contradicted this repo's own
duplicate-avoidance practice, so none was created. #19146's other items
— `.claude/agents/os-dev.md:286-287`, `check-half-states.mjs` H48 and
`check-half-states.mjs` H43 — are **not** touched by this PR and remain
open on that card; neither is `SKILL.md:608`'s own `事实层` wording (added
to #19146 by its own addendum comment). H43 is the newest of them: it
had lived only in card comment 5750573385 and is enumerated on the card
body as item 4 by this rework. It is left here deliberately — H43 is
missing LOGIC in a non-governed instrument (a LAZY `governedTierFor`
load, because that row travels to sibling repos, plus one `pnpm
check:pm-half-states` self-test case), which is the same change class as
H48 and rides with it in ONE half-states PR rather than under a
docs-only Tier S record. The at-tier review of record (`5751616940`)
ruled this PR NOT incomplete for leaving it there. This PR additionally
fixes `scripts/pm/check-governed-queue-guard.mjs`'s self-contradiction,
which is not named in #19146 at all.
## Note on the dispatching brief
The brief that generated this PR stated "this repair has no card yet."
That is not accurate: #19146 already existed (filed 2026-09-18, still
open) covering part of this exact repair. Everything else in the brief —
the ruling text, the register row, the self-test name,
`SKILL.md:625-626`, and both stale passages — verified exactly as stated
on direct reading.
## Rework after the at-tier contract review (record `5751616940` — FAIL)
Head `fa628d0b36` → `71216fcff6`, one commit on the same branch (⛔ no
rebase, no amend, no force-push — the review record is anchored to this
branch's history). Both defects are TEXT: ⛔ no tier constant, no
`GOVERNED_SURFACES` row, no `governedTierFor`, no `landingTierOf` and no
self-test expected value moved. Self-test case counts are unchanged at
296 / 435.
**1. `landing-operations.md:27` — the PR-level ALL quantifier is
restored.**
The line shipped as 「- Tier S(`.claude/**` 全树)者:…」, which names the
SURFACE. Its own predecessor (「受管路径全在本技能 `references/` 者事实层」), this
repair's prescribed wording on the card, and the sibling
`contract-review.md:46` (「受管路径全在 Tier S 面(`.claude/**`)者」) all carry the
quantifier. Without it, lines 27 and 28 partition governed SURFACES
rather than pull requests — so a mixed diff (a `.claude/**` path plus
`AGENTS.md`, Tier H by the register's ALL-not-ANY rule) matched both
lines with no tiebreak on the page.
```diff
-- Tier S(`.claude/**` 全树)者:席内达档复核过落地前检三条即转正式入队。
+- 受管路径全在 `.claude/**` 者 Tier S:席内达档复核过落地前检三条即转正式入队。
```
Re-measured here, not taken on trust: 93 B → 105 B against the 120 B
cap, file 69/69 lines with headroom 0 (`check:pm-skill-ratchet` exit 0
names the file at 69/ceiling 69).
**2. `check-governed-queue-guard.mjs:4442-4443` — the `--self-test`
SUCCESS line is re-keyed.**
The docblock repair in the first commit left the one instance seats
actually read: the SUCCESS line printed on EVERY run (it is in the
review's own capture) still stated the superseded #18020 population,
while the battery at `:3949-3950` asserts `⛔
the-old-references-boundary-is-GONE`. Landed 2026-09-13 in #18036 and
untouched by #19144 — present at merge-base and at the reviewed head,
reproduced here before the edit.
```diff
- 'the boundary a label reader cannot cross — and the #18020 references TIER: a governed diff whose governed ' +
- 'paths all lie under the one ruled prefix lands on the skills seat\'s review of record instead of an ' +
+ 'the boundary a label reader cannot cross — and the #18020 references TIER, re-keyed to Tier S by #19133: a ' +
+ 'governed diff whose governed paths are ALL Tier S — the register\'s `.claude/**` row, asked through ' +
+ '`governedTierFor`, never a prefix repeated here — lands on the skills seat\'s review of record instead of an ' +
```
History stays (the `#18020` naming), exactly as the docblock keeps its
quoted ruling; only the POPULATION is re-keyed. Proof it is gone from
the PRINTED output, not merely from the source: `--self-test` at the new
head prints `the one ruled prefix` 0 times and the re-keyed sentence
once.
### Still stating the superseded boundary — reported, ⛔ deliberately not
pulled in
The review lists these as live and OUT of this PR's scope, and this
rework leaves them exactly as it found them:
`.claude/agents/os-dev.md:286-287` (this card's item 1) and
`SKILL.md:608`'s 「⛔ 无事实层例外」 (a card addendum, vocabulary only — the rule
itself stays true). Naming-only uses of "the references tier" as this
leg's NAME (queue-guard `:268`, `:358`, `:442`, `:452`, `:646`, `:736`,
code comments `:1420` / `:1546` / `:2261` / `:2470` / `:2560`, and
`check-clause2-carriers.mjs:8635`) are an optional tidy and were left
alone: widening the diff of a docs-only record to sweep names is not
what the FAIL asked for.
### Tier verdict on the FINAL file list
```
node scripts/pm/check-governed-merges.mjs --test .claude/skills/pm-dispatch/references/landing-operations.md scripts/pm/check-governed-queue-guard.mjs
```
→ `⛔ GOVERNED — Tier S(席内达档复核落地)`, exit 3; 1 of 2 paths on the register
(`.claude/**` ×1 — `landing-operations.md`;
`scripts/pm/check-governed-queue-guard.mjs` is not a registered
surface). File list unchanged from the reviewed head, so the tier is
unchanged. Per Prime Directive #14 this lands on the at-tier review of
record — ⛔ no seat approves it and no maintainer click is owed.
### Gates at the new head (exit code captured BEFORE any pipe)
The brief's minimum, plus every family `node
scripts/pm/dispatch-gates.mjs --commands` derives for this change set —
38 commands, 37 at exit 0:
- `check-governed-queue-guard.mjs --self-test` — exit 0, 296 cases
(unchanged)
- `check-governed-merges.mjs --self-test` — exit 0, 435 assertions
(unchanged)
- `check:pm-skill-ratchet` exit 0 (69/69, headroom 0) ·
`check:pm-skill-id-lint` exit 0 (27 clean) · `check:pm-governed-prose`
exit 0 (6/6 surfaces, 28 self-test cases) · `check:skill-frame-sync`
exit 0 · `check:nul-bytes` exit 0 (9053 files, no raw control bytes)
- `node --check` exit 0 · `npx eslint
scripts/pm/check-governed-queue-guard.mjs` exit 0 (1 file linted, 0
errors, 0 warnings, read from `--format json`)
- `check:pm-dispatch-gates`, `check:pm-governed-merges`,
`check:ratchet-remedy-authority`, `check:doc-authoring`,
`check:cross-package-test-inputs`, `check-declaration-mirrors`,
`check-scripts-symbol-anchors`, `check-self-test-wired`,
`check-self-test-workflow-commands`, `check-comment-mask-corpus` and the
rest of the derived list — all exit 0
- ⊘ NOT MEASURED — `pnpm --filter @objectstack/lint run
check:doc-formula-expressions` exit 3, PREREQUISITE NOT MET
(`@objectstack/formula` and `@objectstack/lint` unbuilt in this
worktree). Exit 3 is this repo's NOT-MEASURED code, ⛔ not a finding; the
family's population is docs formula expressions, disjoint from this
diff's two paths, and CI runs it against a built tree.
1 parent 48f5200 commit 1f53b0b
2 files changed
Lines changed: 25 additions & 12 deletions
File tree
- .claude/skills/pm-dispatch/references
- scripts/pm
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
28 | | - | |
| 27 | + | |
| 28 | + | |
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
279 | 279 | | |
280 | 280 | | |
281 | 281 | | |
282 | | - | |
283 | | - | |
284 | | - | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
285 | 285 | | |
286 | | - | |
287 | | - | |
288 | | - | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
289 | 301 | | |
290 | 302 | | |
291 | 303 | | |
292 | 304 | | |
293 | | - | |
294 | | - | |
| 305 | + | |
| 306 | + | |
295 | 307 | | |
296 | 308 | | |
297 | 309 | | |
| |||
4553 | 4565 | | |
4554 | 4566 | | |
4555 | 4567 | | |
4556 | | - | |
4557 | | - | |
| 4568 | + | |
| 4569 | + | |
| 4570 | + | |
4558 | 4571 | | |
4559 | 4572 | | |
4560 | 4573 | | |
| |||
0 commit comments