diff --git a/.claude/skills/pm-dispatch/references/platform-readings.md b/.claude/skills/pm-dispatch/references/platform-readings.md index 404ed68944..02342792b7 100644 --- a/.claude/skills/pm-dispatch/references/platform-readings.md +++ b/.claude/skills/pm-dispatch/references/platform-readings.md @@ -144,6 +144,7 @@ - `assignees` 实测为陈旧空值而权威读非空;`labels`/`state` 由此存疑、未实测,⛔ 不写成已测。 - ⇒ ⛔ 认领承载字段(`assignees`、`pm:*` 标签、`state`)永不从本档读。 - ⛔ 本档的缺席不是读数:要么 `hasNextPage: false`,要么第二通道。 +- 两数组各比 `edges` 长度与 `totalCount`:短即最新几项缺席,认领检查走分页 `get_comments`。 - 自己刚写的按原写入通道回读;失效方向是空转与重发。 - 成因:本档经 CDN 缓存,专对最新内容失效且绕不掉,cache-busting 查询串与 no-cache 头都无效。 - 内容可滞后数分钟到数十分钟;它没有位置性对照 —— 更早内容全在,只有最新几条缺席。 @@ -250,6 +251,7 @@ - 分步文件在 `{Job name}/{step number}_{step name}.txt`。 - completeness check 绿只断言没有 worker 静默死,不等于测试通过。 - 并发输出的相邻不等于因果:先查 `turbo.json` 依赖边,⛔ 不只看 tail。 +- turbo 一败多包同印 `ELIFECYCLE Command failed`:权威读数是 `Failed:` 行与该包自己的 `##[error]`。 - 公开发出的诊断被推翻时,更正发在同样公开的位置,据它开的 PR 撤回 draft、解绑 `Fixes`。 - 判正文被截断必须双读取:`.body` 原文,加 `Accept: application/vnd.github.full+json` 的 `.body_html`。 - 两者同一处断掉才算 issue 端截断。 @@ -288,6 +290,7 @@ - 第四形:裸 REST `POST /pulls` 建 PR 时,在已带 session-URL 页脚的正文后再追加一条同形页脚。 - 该追加带前置横线、恰 90 字节,送出体是存储体的严格前缀。 - ⇒ 追加形态随通道与动作(建 / 改)变,⛔ 不由任一条推其余;写后必回读。 +- 平台在尾部 `---` 前后正反两向归一空行:比对正文只按首个差异偏移,⛔ 不按长度。 - 评论创建两通道都追加 58 字节 ⇒ 严格解析 `os-dev-report` 必须停在最后一个右花括号。 - 并行 spec PR 同动 pin 计数断言:被踢不是事故,按 os-regen 序再解一轮。 - 解冲突两侧收据都保留、按合并顺序堆叠;新计数从合并后源码重数,⛔ 不从收据做算术。 diff --git a/scripts/pm/check-skill-line-ratchet.mjs b/scripts/pm/check-skill-line-ratchet.mjs index 180e469559..60bf2be74f 100644 --- a/scripts/pm/check-skill-line-ratchet.mjs +++ b/scripts/pm/check-skill-line-ratchet.mjs @@ -553,7 +553,29 @@ export const CEILINGS = new Map([ // 「各条规则的出处叙事、事故复盘 根本不重要啊,不需要写入skills啊」) — provenance dates, // ruling citations and incident narrative left; every rule stayed. Landed count, // headroom 0, same convention (lowering is always legitimate). - ['.claude/skills/pm-dispatch/references/platform-readings.md', 359], + // Raised 359 → 362 by the fourth-increment ruling — again an ORDINARY raise + // under this map's own maintainer exit, ⛔ not a cross-file move. Maintainer, + // decision batch #56, 2026-09-06, verbatim and untranslated: 「其他同意」 on the + // presented recommendation, option A; the director record's own sentences for + // it (comment 5559776878): + // The ceiling in `scripts/pm/check-skill-line-ratchet.mjs` for + // `.claude/skills/pm-dispatch/references/platform-readings.md` moves 359 → + // 362 … All three lines land as authored … No existing line is deleted to pay + // for them (option C rejected); no line is dropped (option B not needed). + // Spent in full at one line per reading, each written in this file's voice and + // wrapped by this module's own `wrapLine` rather than estimated: the zero-quota + // payload channel's timeline discriminant +1 (compare each array's `edges` + // length against `totalCount`; short means the NEWEST items are absent, so a + // claim check goes to the paged `get_comments` read), the authoritative reading + // of a multi-package `ELIFECYCLE` spray +1 (the `Failed:` line plus that + // package's own `##[error]`), and the first-differing-offset comparison that the + // platform's two-way blank-line normalisation around a trailing rule forces +1 + // = +3 exactly. Nothing was paid in place: line-neutral folding was MEASURED, + // not assumed — of the file's 333 adjacent rule pairs, ZERO fit the 120-byte + // line cap when merged, so there is no re-wrap slack at all, and re-wrap funding + // is refused per the 2026-08-17 rule in any case. Landed count, headroom 0, same + // convention. + ['.claude/skills/pm-dispatch/references/platform-readings.md', 362], // Per-operation REST/GraphQL/git channel mapping — which fleet operation has // a REST twin (each row executed in a real session, provenance date carried // per row), the handful that are GraphQL-only, and the queue-routing @@ -963,6 +985,21 @@ export const CROSS_FILE_MOVES = new Map([ // failure the header warns about. Neither ruling is reopened by this: both // are still quoted beside the ceiling, which is where a reader gets back to // them, and the lines they bought are the lines this rewrite handed back. + { + // Quoted beside this entry's ceiling above, where the +3 is accounted + // for line by line. Copied from there, not paraphrased. + ruling: + 'the fourth-increment raise on' + + ' `.claude/skills/pm-dispatch/references/platform-readings.md` — maintainer,' + + ' decision batch #56, 2026-09-06, verbatim and untranslated: 「其他同意」 on option' + + ' A, and the sentences that ruling adopts, in the director record\'s own words' + + ' (comment 5559776878): "The ceiling in `scripts/pm/check-skill-line-ratchet.mjs`' + + ' for `.claude/skills/pm-dispatch/references/platform-readings.md` moves 359 → 362' + + ' … All three lines land as authored … No existing line is deleted to pay for them' + + ' (option C rejected); no line is dropped (option B not needed)."', + date: '2026-09-06', + delta: 3, + }, ], sources: [ ['.claude/skills/pm-dispatch/references/lanes/cli.md', 35],