Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .claude/skills/pm-dispatch/references/landing-operations.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
- 契约复核 PASS 落地的 PR 到窗口时已 ready 且 auto-merge 在挂,见 `contract-review.md`。
- 窗口自身权责不变:跟到 MERGED、踢出处置、落地后对账。
- 转 ready/入队前跑 `check-governed-merges.mjs --pr N`:受管面照两层;>5000 行(含生成物)照规则层。
- 受管路径全在本技能 `references/` 者事实层:席内达档复核过落地前检三条即转正式入队。
- 其余为规则层:四件套留 draft 等人批,⛔ 不翻正式不入队;获授权批准后认领席落地。
- 受管路径全在 `.claude/**` 者 Tier S:席内达档复核过落地前检三条即转正式入队。
- Tier H(其余受管面)者:四件套留 draft 等人批,⛔ 不翻正式不入队;获授权批准后认领席落地。
- ⛔ 两层不由席位批准;清标即落地同受此闸,漏判会被队列守卫在 merge group 里拒收。
- 再读 `mergeable_state`:`dirty` ⇒ 先 merge `origin/main` 再挂;生成物在面上按 A 的固定序。
- ready + 全绿 ≠ 已入队:队列从不主动拉 PR,入队是显式动作。
Expand Down
33 changes: 23 additions & 10 deletions scripts/pm/check-governed-queue-guard.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -279,19 +279,31 @@
* — answered 「我点头」. The other half of that boundary, the 规则层, is every
* remaining governed path and is quoted in full on #17950; ⛔ it is NOT excerpted
* here, because a partial rules-layer list read as the whole one is precisely
* the under-claim `check-governed-prose` exists to stop. The register is the
* 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
* makes it ENFORCED rather than declared, which is the whole of #18020.
* the under-claim `check-governed-prose` exists to stop. The charter text landed
* as PR #18018; this leg is what made it ENFORCED rather than declared, which is
* the whole of #18020 — narrowly, for the one prefix quoted above.
*
* So a governed diff whose governed paths ALL lie under
* `.claude/skills/pm-dispatch/references/` may land on a REVIEW OF RECORD in
* place of the authorized approval: the `## Contract review` comment — on the
* ⭐ SUPERSEDED 2026-09-18 (#19133, ruled 「同意改规则。」 on the skills seat's
* proposal; the amendment moved `.claude/settings.json` and `.claude/hooks/**`
* over too: 「我觉得这些我也没必要确认」): the quote above is reproduced as the
* ruling that STARTED this leg, not as the population it enforces today. #19133
* widened that population from the one prefix quoted above to the WHOLE of
* `.claude/**` — Tier S, in the register's own words — leaving Tier H as exactly
* the register's other rows. The register's `tier` field is the enumeration now;
* this leg asks `governedTierFor` for Tier S, never a prefix repeated here — see
* the "landing TIER" section below for the enforced definition, and read it live
* with `node scripts/pm/check-governed-merges.mjs --test <paths>` rather than
* trusting a prefix copied into prose, which is exactly what went stale once.
*
* So a governed diff whose governed paths are ALL Tier S — today, the whole of
* `.claude/**` — may land on a REVIEW OF RECORD in place of the authorized
* approval: the `## Contract review` comment — on the
* PULL REQUEST'S THREAD **or on its CARD'S** — that names the pull request's
* CURRENT head, carries a `Reviewed-by:` line, and declares a `Served-tier:`
* reading that STANDS -- its token being the NAME `CONTRACT_REVIEW_TIER`,
* ⛔ never a model identifier, which `AGENTS.md` lets land in no comment and a
* record IS one (#18060). Every other governed path is the rules layer and
* keeps the predicate above byte-for-byte.
* record IS one (#18060). Every governed path outside Tier S is Tier H, the
* rules layer, and keeps the predicate above byte-for-byte.
*
* ⭐ THE TWO CARRIERS ARE ONE DELIVERY, and the location is the governed text's
* to decide rather than this file's — quoted, untranslated, because it IS the
Expand Down Expand Up @@ -4427,8 +4439,9 @@ export async function selfTest() {
'fail-closed on an unreadable label set and on a group naming no pull request, enumerated per commit so a ' +
'bare PR cannot carry a gated sibling through, silent and read-free on the pull_request leg, and replayed ' +
'against the eleven measured enqueues of 2026-09-09 — five refused, six passed, that second number being ' +
'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 owning seat\'s review of record instead of an ' +
'authorized approval, with the record recognisers IMPORTED through a lazy load whose precondition (no ' +
'top-level await in this file\'s dispatch) is pinned against this file\'s own source, refused on an older ' +
'head, on a missing or below-tier or partially-stamped `Served-tier:`, on an unsigned record, on no record ' +
Expand Down
Loading