Skip to content

Commit ba86fae

Browse files
committed
docs(pm-dispatch): consolidate three misplaced per-repo readings
A per-repo gate reading written into one lane charter is read by that lane and missed by the other six. Their single source is references/platform-readings.md, so the three the Phase-1 tables measured move there, under the cross-file-move rule this branch adds: lanes/cli.md -4 the objectstack required-check set, `in_progress` is not a pass, advisory red into main is shared damage lanes/services.md -2 the two aggregate-reading gate boundaries rest-channel.md -5 the merge_group count-is-not-a-mechanism tombstone, moved byte-identically platform-readings.md +10 against a net source decrease of 11, so the corpus falls by one line: the per-job-conclusion rule cli.md carried is already stated in the destination's queue section, so the moved bullet points at it rather than paying for a second copy. Ceilings move with the text (314→324, 35→31, 30→28, 93→88) and the move is declared, so the gate re-derives the arithmetic on every run instead of trusting the comment beside it. No pointer is left at any source: nothing at the three sites becomes unreadable without the moved sentence, and a pointer per move is how a corpus grows while its ledger says it shrank. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LraLgQVGq8egUwfYZpbYt1
1 parent ebacad8 commit ba86fae

5 files changed

Lines changed: 57 additions & 17 deletions

File tree

‎.claude/skills/pm-dispatch/references/lanes/cli.md‎

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@
1414

1515
## 常设承诺
1616

17-
- **Required checks 六个**:`TypeScript Type Check` · `Lint & Repo Gates` ·
18-
`Test Core` · `Dogfood Regression Gate` · `Build Core` ·
19-
`Temporal Conformance (live PG + MySQL)` —— 逐 job 读各自 `conclusion`,⛔ 不认
20-
聚合,`in_progress` 不是过;advisory 门禁红进 main 是共享损伤,照样止血立单。
2117
- **PR 侧绿 ≠ 队列侧绿**;队列分支读法与边界在 platform-readings(条目名
2218
`main/pr-{number}-{parent sha}`,parent sha 可重建队序;⚠️ ref 在出队后滞留)。
2319
- `dispatch-gates.mjs` 只报**路径推导**的地板 —— 条款②从卡**内容**判且优先于它;已知盲

‎.claude/skills/pm-dispatch/references/lanes/services.md‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
—— 单独的绿不是证据。
1919
- **安全族卡的披露纪律**:复现配方不落任何公开面(卡、PR、评论);证据以抽象描述
2020
或私有通道承载。
21-
- 门禁读数不轻信聚合:`check:type-check-debt` 可以在包级 typecheck 绿时红;
22-
`check:i18n` 以「PREREQUISITE NOT MET — workspace CLI 未 build」退 1 不是漂移。
2321

2422
## 席内判断
2523

‎.claude/skills/pm-dispatch/references/platform-readings.md‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,16 @@
294294
降档(那正是降档保险丝要拒的替换),但「本车道 fable 强制」多是过宽的回忆 ——
295295
`dispatch-gates.mjs --tier PATH` 逐路径现推(实测:`SKILL.md` 与 `.claude/agents/**` 强制,`scripts/pm/**`
296296
与 `references/**` 无 ⇒ 全阻塞的三卡 fold 拆成 1 阻 3 可跑);路径线是**下限不是放行**。
297+
- **required checks 的名单是每仓事实**(逐 job 读判定的规则住上面队列段):objectstack 六个 ——
298+
`TypeScript Type Check` · `Lint & Repo Gates` · `Test Core` · `Dogfood Regression Gate` ·
299+
`Build Core` · `Temporal Conformance (live PG + MySQL)`;`in_progress` 不是过;advisory 门禁
300+
红进 main 是共享损伤,照样止血立单。⛔ 聚合命令同样不作判定:`check:type-check-debt` 可在
301+
包级 typecheck 绿时红;`check:i18n` 以「PREREQUISITE NOT MET — workspace CLI 未 build」退 1 不是漂移。
302+
- ⚠️ **计数不是机理读数(被当天推翻的推断的墓碑)**:「`GET .../actions/runs?event=merge_group`
303+
计数 0 ⇒ required 集为空」提出当天即被自身推翻 —— 同一姊妹仓 2026-08-24 首现 merge_group
304+
run(0 → 8),同日再测 224(阳性对照 `event=pull_request` 全程非零)。计数答「至今发生过没有」,
305+
不答「机制在不在」:零计数只作**弱先验**,判 required 集为空要读 ruleset
306+
的 required 集本身、或看队列合并是否真在等检查;⛔ 别处写下的计数值一律先复测再用。
297307

298308
## 闭合关键词解析(PR 正文写侧)
299309

‎.claude/skills/pm-dispatch/references/rest-channel.md‎

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,6 @@ payload → REST → MCP/GraphQL** 的策略住那里,本表是逐操作的通
7676
`PUT .../pulls/{n}/merge`,强制队列 ruleset 下回 **405 `Changes must be made through the merge queue`**;② PR
7777
上的 `added_to_merge_queue` timeline 事件;③ 对已入队 PR 调 update-branch 回「已入队分支不能更新,
7878
要改先出队」。①② 拼写与边界是 `platform-readings.md` 队列段既有行,本条只归拢判据。
79-
- ⚠️ **计数不是机理读数(被当天推翻的推断的墓碑)**:「`GET .../actions/runs?event=merge_group`
80-
计数 0 ⇒ required 集为空」提出当天即被自身推翻 —— 同一姊妹仓 2026-08-24 首现 merge_group
81-
run(0 → 8),同日再测 224(阳性对照 `event=pull_request` 全程非零)。计数答「至今发生过没有」,
82-
不答「机制在不在」:零计数只作**弱先验**,判 required 集为空要读 ruleset
83-
的 required 集本身、或看队列合并是否真在等检查;⛔ 别处写下的计数值一律先复测再用。
8479
- **required job 名与分片矩阵的改名耦合(现行,自 2026-08-24)**:
8580
队列 required 集按 **job / check-run 名**匹配,**workflow 名从不作为 check context 出现**(所以拿
8681
workflow 名在选择器里搜什么也搜不到);改其中任一 job 名**或 test 分片矩阵的形状**,

‎scripts/pm/check-skill-line-ratchet.mjs‎

Lines changed: 47 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,20 @@ export const CEILINGS = new Map([
403403
// operation channel mapping moved out to references/rest-channel.md below.
404404
// The two right-sized-reads rows the same ruling ordered were paid from that
405405
// saving in place, and three lines came back. Headroom 0 again.
406-
['.claude/skills/pm-dispatch/references/platform-readings.md', 314],
406+
// 314 → 324 by the CROSS-FILE MOVE the 2026-09-03 ruling authorises —
407+
// #14685 item 5 (comment 5520452691), declared in CROSS_FILE_MOVES below and
408+
// re-derived there on every run. Three misplaced per-repo facts consolidate
409+
// into the file that is their single source: the objectstack required-check
410+
// set with its `in_progress` and advisory boundaries (lanes/cli.md, −4), the
411+
// two aggregate-reading gate boundaries (lanes/services.md, −2), and the
412+
// merge_group count-is-not-a-mechanism tombstone (rest-channel.md, −5, moved
413+
// byte-identically). The per-job-conclusion rule the first of those carried
414+
// was NOT copied: this file already states it in 队列成员资格 above, so the
415+
// moved bullet points at it instead — a move that restated it would be paying
416+
// for a second copy. +10 against a net source decrease of 11, so the map's
417+
// total falls by one; that is the ruling's own condition and the reason this
418+
// is a move rather than a raise. Landed count, headroom 0, same convention.
419+
['.claude/skills/pm-dispatch/references/platform-readings.md', 324],
407420
// Per-operation REST/GraphQL/git channel mapping — which fleet operation has
408421
// a REST twin (each row executed in a real session, provenance date carried
409422
// per row), the handful that are GraphQL-only, and the queue-routing
@@ -433,7 +446,13 @@ export const CEILINGS = new Map([
433446
// by re-wrap: the file measures zero reclaimable lines under this gate's own
434447
// wrapLine, and re-wrap funding is refused per the 2026-08-17 rule in any
435448
// case. Landed count, headroom 0, same convention.
436-
['.claude/skills/pm-dispatch/references/rest-channel.md', 93],
449+
// Lowered 93 → 88 as a SOURCE of the cross-file move recorded on
450+
// platform-readings.md above: the merge_group count-is-not-a-mechanism
451+
// tombstone left this table for the readings file, byte-identically. This
452+
// file's own header already routes the queue-section readings there and
453+
// refuses to keep a second copy, so nothing is left behind but the rows that
454+
// are channel mappings. Landed count, headroom 0, same convention.
455+
['.claude/skills/pm-dispatch/references/rest-channel.md', 88],
437456
['.claude/skills/pm-dispatch/references/review-checklist.md', 84],
438457
['.claude/skills/pm-dispatch/references/landing-operations.md', 80],
439458
// Release-aftercare duties — what a lane PM still owes AFTER a tagged release
@@ -479,8 +498,14 @@ export const CEILINGS = new Map([
479498
// lanes and now lives once in SKILL.md 执行座位职责, so every lane drops it.
480499
// cli.md pays −2 because it was carrying the map's last line of headroom.
481500
['.claude/skills/pm-dispatch/references/lanes/engine.md', 40],
482-
['.claude/skills/pm-dispatch/references/lanes/services.md', 30],
483-
['.claude/skills/pm-dispatch/references/lanes/cli.md', 35],
501+
// Lowered 30 → 28 and 35 → 31 as the other two SOURCES of the cross-file
502+
// move recorded on platform-readings.md above. A per-repo gate reading in a
503+
// lane charter is read by one lane and missed by the other six, which is the
504+
// whole defect the move repairs: services.md gave up the two aggregate-
505+
// reading boundaries, cli.md the required-check set with its `in_progress`
506+
// and advisory clauses. Landed counts, headroom 0, same convention.
507+
['.claude/skills/pm-dispatch/references/lanes/services.md', 28],
508+
['.claude/skills/pm-dispatch/references/lanes/cli.md', 31],
484509
['.claude/skills/pm-dispatch/references/lanes/devx.md', 39],
485510
['.claude/skills/pm-dispatch/references/lanes/skills.md', 35],
486511
['.claude/skills/pm-dispatch/references/lanes/spec.md', 46],
@@ -635,7 +660,23 @@ export const RULING_CITATION = '#14685 item 5 (comment 5520452691)';
635660
* the later raise, not to this one, and its author is holding the ruling that
636661
* has to account for it.
637662
*/
638-
export const CROSS_FILE_MOVES = new Map([]);
663+
export const CROSS_FILE_MOVES = new Map([
664+
// The readings consolidation — the first move taken under the ruling, and the
665+
// one it was ruled for. Sources' `was` values are their ceilings on
666+
// `origin/main` at f3ae441fa2; the reviewer holds them against that diff.
667+
[
668+
'.claude/skills/pm-dispatch/references/platform-readings.md',
669+
{
670+
ruling: 'per-repo readings consolidation, authorised by #14685 item 5 (comment 5520452691)',
671+
was: 314,
672+
sources: [
673+
['.claude/skills/pm-dispatch/references/lanes/cli.md', 35],
674+
['.claude/skills/pm-dispatch/references/lanes/services.md', 30],
675+
['.claude/skills/pm-dispatch/references/rest-channel.md', 93],
676+
],
677+
},
678+
],
679+
]);
639680

640681
/**
641682
* Per-file MAX TABLE ROW BYTES — the second ratchet, and the only metered thing
@@ -857,7 +898,7 @@ export function crossFileMoveTotalVerdict(moves, ceilings) {
857898
if (net > 0) {
858899
return { ok: false, msg: `the declared cross-file moves raise the map's total by ${net} lines. The ruling admits a move only while total lines do not increase: pay the difference by deleting more at a source, or take the raise the ordinary way — a maintainer ruling quoted in the raising PR.` };
859900
}
860-
return { ok: true, msg: `declared cross-file moves: ${moves.size}, total ceilings ${net === 0 ? 'unchanged' : `down ${-net} lines`}.` };
901+
return { ok: true, msg: `declared cross-file moves: ${moves.size}, total ceilings ${net === 0 ? 'unchanged' : `down ${-net} line${net === -1 ? '' : 's'}`}.` };
861902
}
862903

863904
// ─────────────────────────────────────────────────────────────────────────────

0 commit comments

Comments
 (0)