Skip to content

Commit 1ce6ad4

Browse files
claude[bot]claude
andauthored
docs(pm): eleven platform readings into the fact table — 23 rows, 3 in-place corrections, ceiling 425 to 448 (#17746)
Fixes #17680 Fixes #17239 Fixes #17563 Fixes #17677 Fixes #17710 Fixes #17754 One folded family plus one review-round rider, one file. Twenty-four new rows and four in-place corrections in `.claude/skills/pm-dispatch/references/platform-readings.md`, plus the one `CEILINGS` entry the standing one-file exception prescribes. Nothing else moves — not `rest-channel.md`, not SKILL.md, not `check-clause2-carriers.mjs`, not `check-half-states.mjs`. ## Dedupe counts (the standing exception's own condition) **Candidates 33 / landed 26 readings / already present 7 (no edit) / refused 0.** Landed 26 readings = 24 new lines + 4 in-place corrections. Two readings needed two lines each under the 120-byte per-line cap, which is why 26 readings are 28 line-level changes. | card | candidate | dedupe verdict | |:--|:--|:--| | 17680 | PR-body `Check Changeset` gate reads the clause-2 declaration tolerantly | landed, 1 new row | | 17680 | claim-comment limb's axis is line-initial PLACEMENT | landed, 2 new rows (tolerance · breakers + the import authority) | | 17680 | the claim marker's own spelling, absent from the table | landed, 2 new rows (spelling · the invisibility it causes) | | 17239 | `PATCH /pulls` appends a bare footer, +58 B, keeping the sent one | already present | | 17239 | a footerless body on that same cell stores exactly one | landed, 1 new row | | 17239 | `POST /pulls` create leg, +90 B when the tail is not the block | already present, in a stronger form (both directions, both channels) | | 17239 | comment `PATCH` and issue-body `PATCH` carry a full block through | already present (comment); issue half corrected in place below | | 17563 | every REST write through the egress proxy needs `Content-Type: application/json` | landed, 1 new row | | 17563 | the tell: the refusal's `documentation_url` is Claude Code's, not GitHub's | landed, 1 new row | | 17677 | MCP `issue_write` UPDATE eats a trailing rule+footer block and reports success | landed, 1 new row | | 17677 | bare REST `PATCH /issues` recognition is BLOCK-shaped | landed, 1 in-place correction | | 17677 | a bare footer with no rule line is not a footer, so a block is appended (two) | landed, 1 new row | | 17677 | the two unmeasured cells named as unmeasured | landed, 1 new row | | 17710 A1 | `needs:contract-review` is a merge gate in its own right | landed, 1 new row | | 17710 A2 | the two `mergeable_state` sequences across a ready flip | landed, 1 new row | | 17710 A3 | the echoed `merge_method` is inert | already present | | 17710 A4 | a `failure` superseded by a later failure with a different diagnosis | landed, 1 new row | | 17710 A5 | an exit code is a field literal; the reading is the printed verdict line | landed, 1 new row | | 17710 A5 | the measured instance inside `check-governed-merges` | landed, 1 new row | | 17710 A6 | `check-half-states.mjs` does full-repo I/O even for `--help` | landed, 1 new row | | 17710 A6 | `nohup` inside a backgrounded tool call reports a false exit 0 | landed, 1 new row | | 17710 A7 | an unquoted heredoc delimiter expands every backtick in the body | landed, 1 new row | | 17710 A7 | a piped command's exit code is the pipe's last stage | landed, 1 new row | | 17710 A8 | exactly one footer, idempotent on its own form, a different spelling yields more | already present (the three-block reading covers the different-spelling half) | | 17710 A8 | comment creation appends +58 B | already present | | 17710 A9 | queue progress is read from the `event=merge_group` runs; a quiet tip lags | already present | | 17710 A9 | the queue branch name embeds the SPECULATIVE base | landed, 1 new row | | 17710 A9 | the removal and the merge event arrive in no fixed order | landed, 1 in-place correction | | 17710 c2 | HTML entities do not decode inside an inline code span | landed, 1 in-place correction | | 17710 c2 | a bracketed placeholder inside a code span survives | landed, 1 new row | | 17710 c6 | the wake relay escapes its own rendering; judge the stored body from a GET | landed, 1 new row | | 17754 | `labels` and `type` in ONE bare-REST issue `PATCH` answers 500 and writes nothing; the same two fields as two writes both answer 200 | landed, 1 new row (rider, admitted in this PR's own review) | | review | a draft PR's `mergeable_state` is not the literal `draft` | landed, 1 in-place correction (reviewer-authorised) | The four in-place corrections, each because a new cell contradicts the row rather than extending it: the success-sequence row that keyed on the removal event being followed by the merge event within about a second; the issue-body `PATCH` row whose "always exactly one" is true of a full block and of no footer but false for a bare footer with no rule line; the write-entities prescription, true of body prose and false inside an inline code span; and the row asserting a draft PR always answers `draft` for `mergeable_state`, which seven draft PRs across two repos falsify — they answer `clean`, `blocked` or `unknown` like any other PR. ## Line budget | quantity | before | after | |:--|--:|--:| | `platform-readings.md` lines | 425 | 449 | | `CEILINGS` entry for that file | 425 | 449 | | net | | +24 | Every new or changed line measures at or under the 120-byte per-line cap (measured with `awk` over the file: zero lines exceed 120 bytes). The raise is recorded as ONE `ruledRaises` record on the cross-file-move declaration, quoting the standing one-file exception verbatim, dated 2026-09-12, delta 24 — the rider raised that record's delta rather than adding a second, since this is one increment. The declaration's ordinary-ruled-raise total moves 100 to 124 while its own `was` stays at 314. No other ceiling moves; no re-wrap was used as payment. ## Gates 39 commands derived on the final diff with `node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack` (the derivation's own stderr names the repo and the commit, and derives the change set three-dot from the merge base). Every one captured its exit code before any pipe. All green, and the reconciliation confirms it: - `dispatch-gates --ran` — **39 derived, 39 run, 0 NOT-MEASURED, 0 UNRUN**, and the zero is a DERIVED one: all 39 recorded an exit code and none of them is 3. - `pnpm --filter @objectstack/lint run check:doc-formula-expressions` first exited **3 — PREREQUISITE NOT MET** (two workspace packages unbuilt). That is NOT a finding and not a measurement; after `turbo run build --filter=@objectstack/formula --filter=@objectstack/lint` under the shared verify lock it exits **0**. It is also a live instance of the A5 reading this PR lands. - `pnpm check:pm-dispatch-gates` exceeds the container's 600 s foreground cap and was run detached with a recorded PID, waited on in the foreground; verdict `dispatch-gates self-test: 1678 cases pass`, exit 0. - `pnpm check:pm-skill-ratchet` — `platform-readings.md is 449 lines (ceiling 449; headroom 0)`. Path face: `node scripts/pm/check-governed-merges.mjs --pr 17746` prints `GOVERNED — a human merge is the review record for this PR` and exits **3** — the expected verdict, and itself the measured instance behind one of the landed rows. ## 维护者速读(草稿) **改了什么。** 只动两个文件。`platform-readings.md` 加 24 行读数、就地更正 4 行;棘轮脚本里 只改这一个文件的 `CEILINGS` 数(425 → 449)并按脚本头部规定的形状补一条 `ruledRaises` 记录。 没有别的天花板移动,没有别的 skills 文件被碰。 **为什么改。** 六张卡都是同一类:平台行为被实测到了,而事实表里没有、或写得比代码窄。 写得比代码窄比缺席更险 —— 上一轮就有席位据一条过窄的规则去修一个本来没坏的东西。 其中三条跨席位后果最重:认领标记的拼写决定后继席位能不能看见本车道已被占; REST 写侧少一个 header 就整个静默不写;标签与类型挤进同一次写会 500 且零落库。 **风险与代价(含回滚)。** 只是参考事实表,没有运行时代码、没有发布物,故挂 `skip-changeset`。 风险面是「写进去的读数是不是真的」,这由每行自带的实测标注与本 PR 的去重表承担。 回滚成本一个 revert:天花板与表的行数是同一笔提交里的一对,revert 后仍自洽。 **席位意见。** (待席位定稿) **你要做的。** 这是治理面(`.claude/**`),⛔ 没有任何 agent 席位可以合它。 请人工确认后手合;若不同意某一行的措辞,指出行号即可,不必整体退回。 Authored in Claude Code session `session_01MCLBsUgfykL74aU716rzVK` — durable attribution kept in prose here, because this body is re-sent footerless on purpose (see the landed row on that cell) and the block below is the platform's own. --- _Generated by [Claude Code](https://claude.ai/code)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 7baf04a commit 1ce6ad4

2 files changed

Lines changed: 126 additions & 5 deletions

File tree

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

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
- `auto_merge` 字段不只是空,是不稳定:同一 PR 一分钟内先 set 后 None,入队后又回落 off。
1414
- ⛔ 永不据它判没挂上而重挂 —— 重挂踢队重排。
1515
- 推送重折已挂 auto-merge 的 PR 可静默掉挂,无字段说明 ⇒ 重折后重发,再按队列 ref 探。
16-
- 成功序列读间隔不读事件名:`removed_from_merge_queue` 后 ~1 秒内跟 `merged` 是落地不是被踢。
16+
- 成功序列读伴随不读次序:`removed_from_merge_queue` 与 `merged` 同秒或数秒内到,次序实测不定。
1717
- 真被踢是其后无 `merged`、几分钟后 PR 仍 open。
1818
- 不在 `origin/main` 上是二义读数:在队列里等 / 没入队,两者处置相反。
1919
- ⇒ 落地检查恒两个读数:队列成员资格 和 `origin/main`,缺一不可。
@@ -22,7 +22,9 @@
2222
- 同 PR 的 `list_pull_requests` 会回 `merged: false` 与 `merged_at` 并存 ⇒ 只读布尔即读成没合。
2323
- `list_pull_requests` 的 `fields` 请求 `merged_by` 不返回该字段 ⇒ 字段缺席不是值读数。
2424
- `mergeable_state` 惰性计算,`unknown` 不是读数 —— 挂 unknown 等于挂在可能脏的头上。
25-
- `dirty` 即队列入口否决(冲突对象是当前 main);draft PR 恒回 `draft`。
25+
- `dirty` 即入队否决(冲突对象是当前 main);draft PR 照答 `clean`/`blocked`/`unknown`,不答 `draft`。
26+
- `needs:contract-review` 是合并闸:实测 `blocked` 而 `mergeable: true`,无标签同形兄弟回 `clean`。
27+
- ready 翻转实测两序列 `clean→blocked→clean` 与 `blocked→unstable→clean`;`unstable` 瞬态非失败。
2628
- 判头脏走零配额本地试合并:fetch PR ref 后 `git merge-tree --write-tree origin/main <ref>`。
2729
- 它直接列出冲突文件;读数随 fetch 老化,重跑先 fetch。
2830
- 它跑 `git merge` 的 merge-ort ⇒ 注册 `merge=os-regen` 的克隆照用驱动,未注册的退回文本合并。
@@ -70,6 +72,7 @@
7072
- 踢出成因两则:兄弟抢先落地 ⇒ `MERGE_CONFLICT`;缺批准 ⇒ 治理守卫 merge_group 腿 `CI_FAILURE`。
7173
- 队列 ref 在场时还答位置:名形 `…/pr-<PR>-<PARENT>` 的 `<PARENT>` 是前一条目的 tip。
7274
- 从根在当前 `origin/main` 的那条起走父-tip 链即真实排队序;`ls-remote` 的字典序无意义。
75+
- 名形里的 `<PARENT>` 是推测基:实测晚十余分钟才落 `main` ⇒ ⛔ 不读作该基已落地。
7376
- 该读法零配额,答 timeline 答不了的排第几;⛔ 只读现在、不重建历史。
7477
- 队列踢出先认签名再决定重投:核对失败签名与已知 flaky 一致 ⇒ 原样重投。
7578
- 止血修复合入后同一签名再现就不再是那条 flaky,是新问题须重新诊断,⛔ 禁反射式重投。
@@ -114,6 +117,8 @@
114117
- 调用方自带的 `Authorization` 头被代理覆盖;`HTTPS_PROXY` 端口打死也不切断网络。
115118
- ⇒ 容器内得出的 token 作用域结论 ⛔ 不迁移到出口未经代理的会话。
116119
- 同因:`check-clause2-carriers.mjs --pair` 带与不带 token 都不再 403 退 3;真缺声明照常退 4。
120+
- REST 写侧经出口代理必带 `Content-Type: application/json`,否则代理回 415 且一个字节都没写。
121+
- 判别式:该 415 的 `documentation_url` 指 Claude Code 不指 GitHub ⇒ 代理拒,不是 GitHub;四端点实测。
117122
- 两通道的信封在配额、权限、传输三样上都不同 ⇒ 任一侧的拒绝只是那一侧的读数。
118123
- 限流、403、传输失败都要试过另一侧才说得出我没手段。
119124
- 读数:`POST /actions/runs/{id}/rerun-failed-jobs` REST 回 403 而 MCP 回 201。
@@ -276,6 +281,7 @@
276281
- `rerun_failed_jobs` 复用原 run 的提交与合并 ref,不拿新 main 重算。
277282
- ⇒ 基上缺已合修复时重跑无效,只能 `git merge origin/main` 推提交;判别看修复合并时间。
278283
- 同一 head 上轻量兄弟 workflow `success` 加重量级载体 `cancelled` 是普通取代的预期签名。
284+
- 同名 `failure` 也会被带另一诊断的后一次 `failure` 取代 ⇒ 任何判定前先按名取最新一次。
279285
- cancel-in-progress 窗口只罩得住慢载体 ⇒ 先比对 run `head_sha` 与 PR 当前 head,不开调查。
280286
- CI 红了先取完整日志归档再下结论:断言文本只在归档里,直读工具拿不到。
281287
- `get_check_run` 对本仓 CI job 回空 `output.text`。
@@ -297,11 +303,13 @@
297303
- GitHub 存储字节完好,raw REST 取回一字不差。
298304
- ⇒ ⛔ 永不单凭 MCP 读判截断,先取 raw REST 或 WebFetch 渲染页核对再判。
299305
- 否则 repair-first 被正确地应用到完好的卡上,重写毁掉的是正确内容。
306+
- 唤醒中继渲染会把 `{` `}` `<` 转义 ⇒ 判已发布产物按 `GET` 取存储体,⛔ 永不按中继正文。
300307
- 判据 = 数空的行内代码跨度:一个空跨度恰是短尖括号片段被吃掉的签名。
301308
- 判据是尖括号不是反引号:有的正文本来就把标识符不带尖括号写。
302309
- 数字实体(如撇号成 `&#39;`)是普通实体编码,不是截断证据。
303310
- 写侧 sanitizer 作者规则住 AGENTS.md 的 GitHub mutates body BYTES 段,⛔ 不在本表复述。
304-
- 本表只补两条:要字面尖括号写实体 `&lt;` / `&gt;`。
311+
- 本表只补两条:要字面尖括号写实体 `&lt;` / `&gt;`,但实体在行内代码跨度里不解码。
312+
- 方括号占位符在行内代码跨度里存活 ⇒ 逐字引文与占位符走跨度,⛔ 不在跨度里写实体。
305313
- 裸标识符(无尖括号)存活 ⇒ SKILL 提取契约(字面文本 grep 加裸标识符回退)仍有效。
306314
- 写侧 · issue body:落库删字节,网页同显;sanitizer 按 tag 形状删,不按尖括号。
307315
- 行内反引号里的 tag 形状 token 整个被删,含注释标记、占位符、泛型这些未知标签形。
@@ -321,6 +329,7 @@
321329
- 署名页脚的写侧变异按通道与输入双重定域,⛔ 不是一条定律。
322330
- MCP `update_pull_request` 包装器删掉 PR 正文的页脚块。
323331
- 裸 REST `PATCH /pulls` 追加一个裸页脚并保留既有 session-URL 页脚,差恰 58 字节。
332+
- 同路送无页脚正文存回恰一条(平台裸形)⇒ 该格处方是不送页脚,⛔ 不是不重送正文。
324333
- 同一 MCP 包装器上有反例:把已带页脚的正文整体重送,两条页脚均逐字节存活。
325334
- 送无页脚正文经 MCP 编辑回读仍无页脚(两次实测)⇒ 它不为无页脚正文合成页脚。
326335
- 第四形:建 PR 两通道同判 —— 送出体尾部不是 `---` 加页脚块时,追加一条同形页脚。
@@ -334,6 +343,11 @@
334343
- 平台在尾部 `---` 前后正反两向归一空行:比对正文只按首个差异偏移,⛔ 不按长度。
335344
- 评论创建两通道都追加 58 字节 ⇒ 严格解析 `os-dev-report` 必须停在最后一个右花括号。
336345
- 评论 `PATCH` 重送含尾部页脚块的存储体是幂等的:逐字节一条页脚,与创建的追加相反。
346+
- PR 正文的 `Check Changeset` 门读 clause-② 声明宽容:其失败文案自述 `- `、`> `、`**` 前缀照读。
347+
- 认领腿 `CLAUSE2_KEY_LINE` 的轴是行首位置:引用块、项目符、粗体、反引号全容,冒号可在外。
348+
- 只有 `#` 标题与行中键破它;判据是导入 `readClause2Line`,⛔ 不数连续串。
349+
- `CLAIM_COMMENT_MARKER`(`check-half-states.mjs`)只认行首 `Claim:`/`Claimed:`,容前导空白或一个 `>`。
350+
- 词前 `**` 或反引号即让该评论对互斥读数三四与入队腿不可见 ⇒ 后继读作车道无人。
337351
- 并行 spec PR 同动 pin 计数断言:被踢不是事故,按 os-regen 序再解一轮。
338352
- 解冲突两侧收据都保留、按合并顺序堆叠;新计数从合并后源码重数,⛔ 不从收据做算术。
339353
- 操作数是文件本身不是历史;双方占同一编号是常态,重编号后进侧。
@@ -368,14 +382,22 @@
368382
- `in_progress` 不是过;advisory 门禁红进 main 是共享损伤,照样止血立单。
369383
- ⛔ 聚合命令同样不作判定:`check:type-check-debt` 可在包级 typecheck 绿时红。
370384
- `check:i18n` 以 PREREQUISITE NOT MET(workspace CLI 未 build)退 3,不是漂移。
385+
- 退出码是字段字面值:判据取门禁印的判定行,⛔ 不取码 —— 同一脚本里一个码可两义。
386+
- `check-governed-merges` 退 3 在 `--test` 上是 GOVERNED 判定,别处是 PREREQUISITE NOT MET。
371387
- 计数非机理读数:由 `GET .../actions/runs?event=merge_group` 计数 0 推 required 集为空,当天被推翻。
372388
- 计数答至今发生过没有,不答机制在不在:零计数只作弱先验。
373389
- 判 required 集为空要读 ruleset 的 required 集本身,或看队列合并是否真在等检查。
374390
- ⛔ 别处写下的计数值一律先复测再用。
375391
- MCP `issue_write create` 落库丢掉正文尾部的署名页脚块,正文其余部分完好。
392+
- MCP `issue_write` update 送尾部横线加页脚块则两者同被吃掉,而调用照常回 id 与 url。
376393
- 建卡改走 REST `POST /issues` 页脚存活;回读后 `PATCH /issues/{n}` 重送正文逐字节存下。
377-
- issue 正文 `PATCH` 存回可多一条裸页脚,已有页脚被归一到末尾而非复制,总数恒一条。
394+
- issue 正文 `PATCH` 识别按整块:送全块或不送页脚都存回恰一条,已有页脚归一末尾不复制。
395+
- 无横线的裸页脚不算页脚:它被保留而整块另追加,总数二 ⇒ 恒一条只对上行两输入成立。
396+
- 该格两空:MCP 送裸页脚、`title`/`labels` 单字段 `issue_write` 是否动页脚,均未实测。
397+
- issue `PATCH` 同体带 `labels` 与 `type` 回 500 且零写入;拆两次写各 200,已带 type 的卡未实测。
378398
- 内联双引号 JSON 建卡:标题反引号标识符被 shell 以 root 展开,正文完好 —— 内容被执行。
399+
- heredoc 定界符不加引号会展开正文里每个反引号 ⇒ 请求体永不过会展开的 shell 上下文。
400+
- `cmd | tail; echo $?` 读到的是 `tail` 的状态 ⇒ 退出码在任何管道之前捕获。
379401
- CI job 的失败 step 不必与 job 名一致 ⇒ ⛔ 不由 job 名推原因,先读 step 名再下结论。
380402
- Actions 日志保留把老 job 截到 post-job cleanup ⇒ 归档只剩清理输出时原因不可断言。
381403
- 无 `packageManager` 的目录里 corepack 运行时解析 registry `latest` ⇒ 同 SHA 前绿后红是 tag 移了。
@@ -387,6 +409,8 @@
387409
- ⛔ 不越过该拒答自行枚举:短清单读作合规;加深日期取窗口起点之前,不猜深度。
388410
- 前台 `sleep` 被 harness 拒 ⇒ 等待写成带 until 条件的前台阻塞等待,⛔ 不写 sleep 轮询循环。
389411
- `check:pm-dispatch-gates` 逾容器 600 秒前台上限 ⇒ detach 加 `tail --pid` 前台等;超时不是读数。
412+
- `check-half-states.mjs` 连 `--help` 都跑整仓 I/O ⇒ 早读到的输出文件是空的,不是干净的。
413+
- 后台工具调用里再 `nohup … &` 会让包装器报假 `exit 0`,而真活还在跑。
390414
- 分支删除被拒有第二形态:代理回 403,与既有 send-pack 断连同处置 ⇒ 不可删,⛔ 不重试。
391415

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

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

Lines changed: 98 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -766,7 +766,87 @@ export const CEILINGS = new Map([
766766
// folds among this file's adjacent rule pairs, and re-wrap funding is refused
767767
// per the 2026-08-17 rule in any case. Landed count, headroom 0, same
768768
// convention.
769-
['.claude/skills/pm-dispatch/references/platform-readings.md', 425],
769+
// Raised 425 → 449 by the ELEVENTH readings increment, again under the STANDING
770+
// one-file exception quoted above rather than a fresh decision card, and again
771+
// recorded as a `ruledRaises` record citing it. Its carrier was a FOLDED family
772+
// of five cards, so the candidate set spans all five bodies and their grading
773+
// comments; deduplicated against the file they land as 23 lines, one per
774+
// reading, each written in this file's voice and each ≤ 120 bytes: the
775+
// `needs:contract-review` label is a merge gate in its own right, `blocked`
776+
// beside `mergeable: true` against a label-less sibling's `clean` (+1) and the
777+
// two `mergeable_state` sequences a ready flip produces, with `unstable` named
778+
// TRANSIENT rather than a failed check (+1); the queue ref's embedded parent is
779+
// a SPECULATIVE base that need not be on `main` yet (+1); every REST write
780+
// through the egress proxy needs an explicit `Content-Type: application/json`
781+
// or the proxy answers 415 with nothing written (+1), with the discriminator
782+
// that makes it the PROXY's refusal rather than GitHub's — the refusal's
783+
// `documentation_url` (+1); a footerless body on the `PATCH /pulls` cell stores
784+
// exactly one, which is that cell's prescription (+1); the MCP `issue_write`
785+
// UPDATE path eats a trailing rule+footer block while the call returns an id
786+
// and a url (+1); the bare-REST issue-body cell recognises a BLOCK, so a bare
787+
// footer with no rule line above it is not one and a whole block is appended
788+
// (+1), and the two cells left unmeasured are named as unmeasured (+1); a
789+
// bracketed placeholder survives inside an inline code span, where an entity
790+
// does not decode (+1); the wake relay's own escaping is not the artefact's, so
791+
// a published body is judged from a `GET` (+1); a `failure` can be superseded
792+
// by a LATER failure carrying a different diagnosis, so the latest-per-name
793+
// collapse runs before any verdict (+1); an exit code is a field literal and
794+
// the reading is the printed verdict line (+1), with the measured instance —
795+
// `check-governed-merges` exit 3 is GOVERNED on `--test` and PREREQUISITE NOT
796+
// MET elsewhere (+1); `check-half-states.mjs` does full-repo I/O even for
797+
// `--help`, so an output file read early is EMPTY rather than clean (+1), and
798+
// `nohup … &` inside a backgrounded tool call reports a false `exit 0` (+1); an
799+
// unquoted heredoc delimiter expands every backtick in the body (+1) and
800+
// `cmd | tail; echo $?` reads tail's status (+1); the PR-body `Check Changeset`
801+
// gate reads the clause-② declaration tolerantly, per its own failure text
802+
// (+1), while the claim-comment limb's axis is line-initial PLACEMENT (+1) with
803+
// only a `#` heading and a mid-line key breaking it, verified by IMPORTING
804+
// `readClause2Line` rather than counting contiguous strings (+1); and the claim
805+
// marker itself, absent from this file until now — `CLAIM_COMMENT_MARKER` reads
806+
// a line-beginning `Claim:`/`Claimed:` with optional whitespace or one `>` (+1)
807+
// and a `**` or backtick before the word makes the comment invisible to the
808+
// round-opening mutex readings and to the enqueue limb (+1); and the rider
809+
// admitted in the family's own review — a bare-REST issue `PATCH` carrying
810+
// `labels` and `type` in ONE body answers 500 and writes nothing, while the
811+
// same two fields as two consecutive writes both answer 200 (+1) = +24 exactly.
812+
//
813+
// FOUR corrections are paid in place and buy nothing, each because a new cell
814+
// contradicts the row rather than extending it: the success-sequence row, which
815+
// keyed on `removed_from_merge_queue` being followed by `merged` within ~1 s
816+
// when the two are measured arriving in the SAME second and in no fixed order;
817+
// the issue-body `PATCH` row, whose 「总数恒一条」 holds for a full block and for
818+
// no footer but NOT for a bare footer without its rule line; and the
819+
// write-entities prescription, which is true of body prose and false inside an
820+
// inline code span, where the entity does not decode and corrupts a verbatim
821+
// quotation. The fourth is the reviewer's own, authorised in the family's
822+
// review against seven draft PRs read across two repos: a draft's
823+
// `mergeable_state` answers `clean`, `blocked` or `unknown` like any other
824+
// PR's, and NOT the literal `draft` the row asserted it always returns.
825+
//
826+
// ⚠️ The candidate set was larger than what landed, and the cut is the
827+
// exception's own dedup condition doing its work rather than an author
828+
// trimming. Already present, no edit: the `POST /pulls` create leg, whose
829+
// discriminator is the SENT body's tail and whose +90 append is already here in
830+
// a stronger form (measured both directions on both channels) — the family's
831+
// create-leg readings CORROBORATE that row rather than adding to it; the
832+
// comment `PATCH` idempotence row; the comment-creation +58 append; the general
833+
// 「exactly one footer, idempotent on its own form, a different spelling yields
834+
// more」 rule, which this file already carries as the THREE-block reading for a
835+
// body stacking the harness's two-line block over the footer; queue progress
836+
// being read from the `event=merge_group` runs, and the queue's serial 15–30
837+
// minutes per PR, which together are the whole of the 「a quiet `main` tip is
838+
// not a stall」 reading; and the inert echoed `merge_method`, re-measured a
839+
// fourth time this round and unchanged. Candidates 33 / landed 26 readings
840+
// (24 new lines + 4 in-place corrections; two readings needed two lines each
841+
// under the 120-byte cap) / already present 7 / refused 0. The last two of the
842+
// 33 arrived in the family's review round — the rider card's 500 reading and
843+
// the draft `mergeable_state` correction — and are counted here, not deferred.
844+
//
845+
// Nothing else was paid in place: the fourth increment MEASURED zero
846+
// line-neutral folds among this file's adjacent rule pairs, and re-wrap funding
847+
// is refused per the 2026-08-17 rule in any case. Landed count, headroom 0,
848+
// same convention.
849+
['.claude/skills/pm-dispatch/references/platform-readings.md', 449],
770850
// Per-operation REST/GraphQL/git channel mapping — which fleet operation has
771851
// a REST twin (each row executed in a real session, provenance date carried
772852
// per row), the handful that are GraphQL-only, and the queue-routing
@@ -1353,6 +1433,23 @@ export const CROSS_FILE_MOVES = new Map([
13531433
date: '2026-09-10',
13541434
delta: 3,
13551435
},
1436+
{
1437+
// The ELEVENTH increment, under the same STANDING exception — the same
1438+
// words again, for the same reason: a record that quotes no ruling is
1439+
// RED and each record stands alone. The +24 is accounted for line by
1440+
// line beside this entry's ceiling above, and the exception's own
1441+
// conditions (per-item verification and the candidate / landed /
1442+
// already-present / refused counts) are carried by the raising PR's
1443+
// dedup table and the seat's ACCEPT.
1444+
ruling:
1445+
'the standing one-file exception for'
1446+
+ ' `.claude/skills/pm-dispatch/references/platform-readings.md` — pm-dispatch'
1447+
+ ' SKILL.md, verbatim and untranslated: 「唯一例外:`platform-readings.md`'
1448+
+ ' 增量抬上限到落地行数,免决策卡,记 `ruledRaises` 引常设裁决。条件:席位验收评论'
1449+
+ '逐条核实、去重计数(候选/落地/已有/拒收)、一事一行、不计重排」',
1450+
date: '2026-09-12',
1451+
delta: 24,
1452+
},
13561453
],
13571454
sources: [
13581455
['.claude/skills/pm-dispatch/references/lanes/cli.md', 35],

0 commit comments

Comments
 (0)