Skip to content

Commit f315144

Browse files
hotlongclaude
andauthored
docs(pm-skill): the seventh readings increment — seven landed lines, one in-place correction, and a NON-reproduction (#16764)
* docs(pm-skill): the seventh readings increment — six deduplicated readings, two in-place corrections Ledger 395 -> 401 under the standing one-file exception; ceiling row and a `ruledRaises` record updated to match. Claude-Session: https://claude.ai/code/session_01P58euzUXCVJNwmhuPC9DXY Co-authored-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(pm-skill): pin the dispatch-gates row to its case count, not a drifting minute figure Re-measured in this container: 1534 cases, exit 0, 705 s wall — past the 600 s foreground cap either way, which is the load-bearing half. Claude-Session: https://claude.ai/code/session_01P58euzUXCVJNwmhuPC9DXY Co-authored-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(pm-skill): restore the read-side row's subject; the title truncation pays for its own line Review finding: replacing the 「读侧并非一律可逆」 row in place cost it the subject of 丢弃 — the original names WHAT is discarded (an angle-bracketed span inside inline backticks, whole, unescaped, undecodable), which is the contrast with the reversible entity-escaping row above it, and no other row carries it. The row is restored byte-identical to origin/main and the title fact lands as its own adjacent row. Ceiling 401 -> 402, ruledRaises delta 6 -> 7. Claude-Session: https://claude.ai/code/session_01P58euzUXCVJNwmhuPC9DXY Co-authored-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(pm-skill): drop the dispatch-gates case count — a merge moved it 1534 to 1552 within the hour The load-bearing half is the 600 s foreground cap, which does not drift. Claude-Session: https://claude.ai/code/session_01P58euzUXCVJNwmhuPC9DXY Co-authored-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(pm-skill): the seventh increment's ruledRaises comment says +7, matching its delta Comment-only. The record's delta is 7 and the CEILINGS comment above it tallies "+7 exactly"; this one sentence still read +6 from before the title row landed. Claude-Session: https://claude.ai/code/session_01P58euzUXCVJNwmhuPC9DXY Co-authored-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 87fad14 commit f315144

2 files changed

Lines changed: 58 additions & 2 deletions

File tree

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@
1212
- 它分得开从未入队与入队后被踢;`pull_request.enqueued` webhook 推送式不可重读,只作旁证。
1313
- `auto_merge` 字段不只是空,是不稳定:同一 PR 一分钟内先 set 后 None,入队后又回落 off。
1414
- ⛔ 永不据它判没挂上而重挂 —— 重挂踢队重排。
15+
- 推送重折已挂 auto-merge 的 PR 可静默掉挂,无字段说明 ⇒ 重折后重发,再按队列 ref 探。
1516
- 成功序列读间隔不读事件名:`removed_from_merge_queue`~1 秒内跟 `merged` 是落地不是被踢。
1617
- 真被踢是其后无 `merged`、几分钟后 PR 仍 open。
1718
- 不在 `origin/main` 上是二义读数:在队列里等 / 没入队,两者处置相反。
1819
- ⇒ 落地检查恒两个读数:队列成员资格 和 `origin/main`,缺一不可。
1920
- `origin/main` 按内容读(grep 本 PR 的产物),⛔ 不按 head sha 祖先性、不按 `merged` 布尔。
2021
- 队列落的是另一个提交:`git merge-base --is-ancestor <pr-head> origin/main` 对已完全合入的 PR 答 NO。
2122
- 同 PR 的 `list_pull_requests` 会回 `merged: false``merged_at` 并存 ⇒ 只读布尔即读成没合。
23+
- `list_pull_requests``fields` 请求 `merged_by` 不返回该字段 ⇒ 字段缺席不是值读数。
2224
- `mergeable_state` 惰性计算,`unknown` 不是读数 —— 挂 unknown 等于挂在可能脏的头上。
2325
- `dirty` 即队列入口否决(冲突对象是当前 main);draft PR 恒回 `draft`
2426
- 判头脏走零配额本地试合并:fetch PR ref 后 `git merge-tree --write-tree origin/main <ref>`
@@ -49,6 +51,7 @@
4951
- 设方法的 GraphQL mutation 不服务 agent 会话 ⇒ 席位既设不了也纠不了。
5052
- 它在本仓无实效:`main` 的合并队列规则带 `merge_method: SQUASH`,合并由队列执行。
5153
- ⇒ 落地方法读分支规则,⛔ 永不读 auto-merge 请求;树上每 PR 一个 squash 提交。
54+
- `enable_pr_auto_merge` 对已 `mergeable_state: clean` 的 PR 照样成功,与工具描述的优雅失败相反。
5255
- 回显两向不可靠,空回显不等于未挂上 ⇒ ⛔ 不拿它当任何方向的证据、不为它空转。
5356
- 配额枯竭时 `enable_pr_auto_merge` 回成功而挂载根本没发生 ⇒ 验效果,不验回应。
5457
- 回读 `auto_merge` 非空本接口给不了:`pull_request_read``fields` 枚举都无该成员。
@@ -201,12 +204,14 @@
201204
- `issue_write` 还清空每个未传字段(assignees 在内)⇒ 单字段更新必须把现值带齐重写。
202205
- 追加端点同样先过探针:403 会话没有真追加通道,只能整组替换。
203206
- 摘标签也没有加法端点:`finding` 定级这类只能整组写,carve-out 保留;写后照纪律回读。
204-
- PR 标签的三条读腿全盲、两条静默。
207+
- PR 标签走 issue 形通道的三条读腿全盲、两条静默,PR 原生端点见腿 ④
205208
- 腿 ①:`issue_read get_labels` 传 PR 号回 Could not resolve to an Issue。
206209
- REST 的 PR 也是 issue 惯例在此方法不成立;响亮失败即路由信号,改走腿 ③。
207210
- 腿 ②:`pull_request_read get``labels` 时缺时滞,可整字段缺席;连盲都不稳定,更险。
208211
- 腿 ③:payload 档 —— issue 页的 `href` 锚点 grep(`/labels/NAME`)在 PR 页命中零。
209212
- PR 侧拼写是 `data-name="NAME"`,片链到 `issues?q=…label%3A…`
213+
- 腿 ④:`list_pull_requests``search_pull_requests` 传 PR 号回完整 `labels`,是可用读腿。
214+
- 反向不对称:`issue_write update` 传 PR 号写 `labels``assignees` 生效,而读腿 ① 拒 PR 号。
210215
- ⇒ ⛔ 读成功而标签空或缺席不读作没有标签:按 `data-name=` 确认,否则整集作 UNKNOWN。
211216
- 可达时优先加法端点;⛔ 单读与单次即时读回都不决断。
212217
- ⇒ union-write 欠一次延迟确认;必需标签(如 `skip-changeset`)其后每次触碰重核。
@@ -216,6 +221,7 @@
216221
- MCP `issue_read` 的 body 实体转义是纯读侧伪影,撇号与引号与尖括号成数字实体,comments 原样。
217222
- 存储体是明文,先解码实体再写回往返安全;腐蚀 body 的恰是把转义读数原样回写。
218223
- 读侧并非一律可逆:行内反引号里的尖括号片段被 MCP 读路径整个丢弃,非转义,无从解码。
224+
- 该丢弃亦及标题:自首个 tag 形跨度截到尾,是切不是洞 ⇒ 凭标题的总体计数只是下界。
219225
- 写侧剥除是真实存储损耗,⛔ 两类不并成一条,写后回读必做;实体归属与 `&amp;` 类未实测。
220226
- 评论里独立成行的标记同被读路径吃掉留空行 ⇒ 缺失不证写侧剥除,先读 payload 原体。
221227
- `Blocked-by:` 行归 BODY,是单通道反向索引:追加按解码后写回执行。
@@ -357,6 +363,7 @@
357363
- 落地探针除命名代码形外,还必须在落地前的 tip 上读出不同值,否则它分不开两棵树。
358364
- `check-governed-merges` 浅克隆上拒答而非少报,并报未审计仓数;补救 `git fetch --shallow-since=`
359365
- 前台 `sleep` 被 harness 拒 ⇒ 等待写成带 until 条件的前台阻塞等待,⛔ 不写 sleep 轮询循环。
366+
- `check:pm-dispatch-gates` 逾容器 600 秒前台上限 ⇒ detach 加 `tail --pid` 前台等;超时不是读数。
360367
- 分支删除被拒有第二形态:代理回 403,与既有 send-pack 断连同处置 ⇒ 不可删,⛔ 不重试。
361368

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

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

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -599,7 +599,42 @@ export const CEILINGS = new Map([
599599
// pairs, and re-wrap funding is refused per the 2026-08-17 rule in any case.
600600
// The same-PR correction of the footer-mechanism row is line-neutral and buys
601601
// nothing. Landed count, headroom 0, same convention.
602-
['.claude/skills/pm-dispatch/references/platform-readings.md', 395],
602+
// Raised 395 → 402 by the SEVENTH readings increment, again under the STANDING
603+
// one-file exception quoted above rather than a fresh decision card, and again
604+
// recorded as a `ruledRaises` record citing it. Spent at ONE line per
605+
// deduplicated reading, each written in this file's voice: the dispatch-gates
606+
// self-test runs past the container's 600 s foreground cap, so a timeout is not
607+
// a verdict (+1); a push that re-folds an armed PR can drop the arm with no
608+
// field saying so (+1); `enable_pr_auto_merge` succeeds on a PR already reading
609+
// `mergeable_state: clean`, against its own tool description (+1); a `merged_by`
610+
// named in `list_pull_requests`'s `fields` comes back absent, so an absent field
611+
// is not a value reading (+1); PR labels ARE readable after all — leg ④, the two
612+
// PR-native MCP endpoints (+1); the write side's mirror asymmetry, where
613+
// `issue_write update` takes a PR number that read leg ① refuses (+1); and the
614+
// TITLE truncation — the same read-side discard reaches titles, where it cuts
615+
// from the first tag-shaped span to the END rather than leaving a hole, so a
616+
// title-derived population count is only a lower bound (+1) = +7 exactly.
617+
//
618+
// ⚠️ That last line is a NEW ROW, not a rewrite, and the distinction was a
619+
// review finding rather than the author's first instinct. It was first written
620+
// as an in-place replacement of the read-side row above it, which silently cost
621+
// that row its SUBJECT: the original names WHAT is discarded (an angle-bracketed
622+
// span inside inline backticks, discarded whole, unescaped, undecodable), and
623+
// that is the load-bearing contrast with the entity-escaping row before it,
624+
// which IS reversible. The replacement left 「丢弃」 with no antecedent anywhere
625+
// in the file. The read-side row is therefore restored BYTE-IDENTICAL to
626+
// `origin/main` (blob c242297575d3c04205e47d9628ff0545e5d63da4) and the title
627+
// fact pays for its own line.
628+
//
629+
// ONE correction is paid in place and buys nothing: the PR-label block's
630+
// opening row, which said three blind legs where leg ④ now answers.
631+
// The single-label omission this increment's carrier card was opened for did
632+
// NOT reproduce, so it lands NO line — the negative reading is on the card.
633+
// Nothing else was paid in place: the fourth increment MEASURED zero
634+
// line-neutral folds among this file's adjacent rule pairs, and re-wrap funding
635+
// is refused per the 2026-08-17 rule in any case. Landed count, headroom 0,
636+
// same convention.
637+
['.claude/skills/pm-dispatch/references/platform-readings.md', 402],
603638
// Per-operation REST/GraphQL/git channel mapping — which fleet operation has
604639
// a REST twin (each row executed in a real session, provenance date carried
605640
// per row), the handful that are GraphQL-only, and the queue-routing
@@ -1067,6 +1102,20 @@ export const CROSS_FILE_MOVES = new Map([
10671102
date: '2026-09-07',
10681103
delta: 7,
10691104
},
1105+
{
1106+
// The SEVENTH increment, under the same STANDING exception — the same
1107+
// words, quoted again rather than cross-referenced, because a record
1108+
// that quotes no ruling is RED and each record stands alone. The +7 is
1109+
// accounted for line by line beside this entry's ceiling above.
1110+
ruling:
1111+
'the standing one-file exception for'
1112+
+ ' `.claude/skills/pm-dispatch/references/platform-readings.md` — pm-dispatch'
1113+
+ ' SKILL.md, verbatim and untranslated: 「唯一例外:`platform-readings.md`'
1114+
+ ' 增量抬上限到落地行数,免决策卡,记 `ruledRaises` 引常设裁决。条件:席位验收评论'
1115+
+ '逐条核实、去重计数(候选/落地/已有/拒收)、一事一行、不计重排」',
1116+
date: '2026-09-08',
1117+
delta: 7,
1118+
},
10701119
],
10711120
sources: [
10721121
['.claude/skills/pm-dispatch/references/lanes/cli.md', 35],

0 commit comments

Comments
 (0)