Skip to content

Commit 15725f3

Browse files
claude[bot]claude
andauthored
docs(pm-skill): correct three refuted readings in platform-readings; the family's additions do not fit the ratchet (#15012)
* docs(pm-skill): drop the overturned enable_pr_auto_merge echo reading `platform-readings.md` carried, fourteen lines below the entry that declares it dead, the reading that an empty `(method: , enabled at )` echo means the arming call did nothing. The file already says the opposite at the 回显两向不可靠 bullet (「空字段=静默空转签名」旧读法已推翻), and three independent seats have since confirmed that side: a `405 Pull Request is in the merge queue` on a PR whose echo was empty, an `added_to_merge_queue` timeline event timed to that same call, and two PRs with `merge_group` runs in flight that had been recorded as failed arms. A reference that contradicts itself sends the reader whichever way they happen to grep, and this line demonstrably sent one toward filing a platform defect that did not exist. Removing it, rather than adding a fourth spelling of the rule that is already there. Ratchet: 0 lines. The deleted clause frees ~24 CJK characters inside its own bullet, which re-wraps to the same three lines; no untouched paragraph is re-wrapped anywhere in this PR. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox * docs(pm-skill): the zero-quota payload channel is precise on body only The entry described the public-repo page payload channel as carrying 原始 body + 全评论, 精确. Measured, it carries neither: the SSR timeline window renders only the first 15 items with `hasNextPage: true` (12 comments served as 3, items 4-12 still absent on re-fetch), and an issue's own `assignees` scalar has read back stale-empty against an authoritative non-empty read. Re-measured on this flight's own chain head: the page channel served 3 comments where REST returns 4. Those two words are the load-bearing part. The neighbouring entry already forbids claiming a card off a listing because the listing never returns `assignees` — and then this entry offered a second channel described as precise and comment- complete, so a reader satisfying that rule through this channel gets the stale `[]` and concludes a claimed card is free. The safeguard and the trap sat in one document with the trap labelled accurate. The entry stays: it is still the right zero-quota read for a body. The claim- bearing-field rule and the absence-claim rule that belong beside it do NOT fit the ratchet and are reported as unpaid. Ratchet: 0 lines. The MCP-call cost anecdote is deleted with the false words and the bullet re-wraps to the same six lines. No untouched paragraph is re-wrapped anywhere in this PR. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox * docs(pm-skill): retire the refuted 「qualifiers only narrow」 tombstone The dedupe section closed with a ⛔ telling the reader not to re-investigate: 「限定符打零」两次实测反证,限定符只收窄不破坏. A later, controlled measurement refutes it. Six `search_issues` calls in ninety seconds: every query carrying a free-text term alongside GitHub qualifiers returned `total_count: 0` with `incomplete_results: false`, for terms that begin the titles of open issues; the same intent expressed as the tool documents — natural language in `query`, scope in the `owner` / `repo` parameters — returned 18 results with the target first. A tombstone that points away from a live defect is worse than no tombstone: it tells the next seat the zero it just got is not worth investigating. The rule that replaces it (never put qualifiers in `query`; write the query as a sentence; the positive control stays mandatory) does NOT fit the ratchet and is reported as unpaid. Ratchet: 0 lines. The deleted clause frees ~28 CJK characters inside its own bullet, which re-wraps to the same two lines. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox * docs(pm-skill): date the two further confirmations on the auto_merge bullet Two independent measurements, 2026-09-01 and 2026-09-02, each read `auto_merge: null` on a PR that was demonstrably in the merge queue and that landed through it. The rule they confirm is already stated, and stated more strongly than the measurements do — 「`auto_merge` 字段不只是空,是不稳定 …… 永不据它判「没挂上」 而重挂」 — so this is a date on the existing bullet, not a second entry. A governance file with two entries for one rule loses whichever copy the next editor did not find. The queue-progress instrument that belongs beside it (`GET /actions/runs?event= merge_group`, and the batch branch named after the LAST PR in the batch) does NOT fit the ratchet: measured, it takes that bullet from 8 lines to 9 and the file to 325 against a ceiling of 324. Reported as unpaid. Ratchet: 0 lines. File stays 324 / 324. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent c454640 commit 15725f3

1 file changed

Lines changed: 11 additions & 11 deletions

File tree

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
订阅了的会话确实收得到(与 timeline 差 ~1 秒),但推送式**不可重读** —— 新上下文或当时
1616
没订阅就取不回,故只作旁证,⛔ 不作决策依据。⛔ `auto_merge` 字段不只是空,是**不稳
1717
**:同一 PR 一分钟内先 `set``None`(2026-08-26 实测),入队后又回落为 off(维护者
18-
2026-08-11 裁定)—— 永不据它判「没挂上」而重挂(重挂踢队重排)。
18+
2026-08-11 裁定;2026-09-01/09-02 又两次)—— 永不据它判「没挂上」而重挂(重挂踢队重排)。
1919
- **成功序列读间隔不读事件名**:`removed_from_merge_queue`~1 秒内跟 `merged` 是落地不是被踢;
2020
真被踢是其后无 `merged`、几分钟后 PR 仍 open。
2121
- 「不在 `origin/main` 上」是二义读数(在队列里等 / 没入队,处置相反)—— 落地检查永远两个
@@ -61,9 +61,9 @@
6161
`update_pull_request_branch` 回「Branches that are queued for merging cannot be updated」= 在队,正常返回顺
6262
带逼出暗冲突(它不踢已挂 PR、只是永不入队);② `merge_pull_request` 回 405「Pull Request is in the
6363
merge queue」= 在队(2026-08-28 两席各一次,均零 ref),405「Merge commits are not allowed」= 不在队,改
64-
挂 auto-merge。`enable_pr_auto_merge` 回应只答本次调用:时戳形有动作、空字段形无动作;⛔
65-
enable 与其验证间永不插 `disable`(入队 webhook 乱序迟到,会撤掉真实入队)。**踢出成因两
66-
**:兄弟抢先落地 ⇒ `MERGE_CONFLICT`;缺必需批准 ⇒ 治理守卫 merge_group `CI_FAILURE`
64+
挂 auto-merge。⛔ enable 与其验证间永不插 `disable`(入队 webhook 乱序迟到,会撤掉真实入
65+
队)。**踢出成因两则**:兄弟抢先落地 ⇒ `MERGE_CONFLICT`;缺必需批准 ⇒ 治理守卫 merge_group
66+
`CI_FAILURE`
6767
- **队列踢出先认签名再决定重投**:已知 flaky 核对失败签名一致 ⇒ 原样重投;
6868
止血修复合入后**同一签名再现就不再是那条 flaky**,是新问题必须重新诊断,
6969
⛔ 禁止条件反射式重投;第三种签名:本 PR 名下**没有任何** `merge_group` run 且批次同伴的 run
@@ -129,12 +129,12 @@
129129
撞限流的 dev **完不成强制查重**,只能把发现交回 PM 代为归档,⛔ 不盲目开卡。打满时:待
130130
执行写**排成有序清单挂进巡逻词**(不靠记忆),恢复窗口按序连清;重试对齐整点(REST core 整
131131
点重置)优于指数退避,⛔ 绝不忙轮询;文档载明未实测:条件请求答 `304` 不计 core 池。
132-
- **公开仓零配额读法两档,payload 档优先**:单卡页 `/issues/N` 内嵌 JSON 载**原始 body + 全评
133-
**,精确、零配额 —— 取含 `bodyHTML``script[type="application/json"]` 块,读
134-
`payload.preloadedQueries[0].result.data.repository.issue.body``frontTimelineItems`/`backTimelineItems`;
135-
实测一整个 M 档 dev 运行只花 3 次 MCP 调用(同席前轮 MCP-first 烧 10416/5000,~25×)。边界:⛔
136-
只因仓库公开成立;⛔ 覆盖单卡读、**不覆盖 issue search**(搜索页无 SSR 结果);⛔ 永不拿渲染
137-
列表定规模(静默只显一页,实测 12 vs 权威 147)。渲染层 WebFetch 仍在(~15 分缓存、有损)。
132+
- **公开仓零配额读法两档,payload 档优先 —— 只有 body 精确**:单卡页 `/issues/N` 内嵌 JSON 载
133+
**原始 body**,零配额 —— 取含 `bodyHTML``script[type="application/json"]` 块,读
134+
`payload.preloadedQueries[0].result.data.repository.issue.body``frontTimelineItems`/`backTimelineItems`
135+
边界:⛔ 只因仓库公开成立;⛔ 覆盖单卡读、**不覆盖 issue search**(搜索页无 SSR 结果);⛔ 永
136+
不拿渲染列表定规模(静默只显一页,实测 12 vs 权威 147)。渲染层 WebFetch 仍在(~15 分缓存、
137+
有损)。
138138
- **查重先 `search_issues`**(2026-08-18 实测:单次调用按 issue body 内文本命中且 `total_count` 精确;
139139
「search 对本会话不可用」的继承说法实测为**** —— 继承说法不是读数,
140140
复述必带实测日期):body 文本匹配是 repo-scoped `list` 做不到的,`list` + 对照组降为回退。
@@ -147,7 +147,7 @@
147147
表端点** `GET /repos/{o}/{r}/issues?state=open&labels=a,b&per_page=N`(core 桶、 `labels` 真 AND;⛔ 完整性
148148
自证:`&page=N` + 总数核对;`GET /search/issues` **不是**退路,见下条),403 走降级梯 MCP 档(单标签一
149149
次读全 + 本地求交 —— ⛔ **不是翻页手扫**:实测 226 张 open 只扫了 100 张,**不完整枚举比
150-
零结果更危险**)。⛔ 已推翻别再追:「限定符打零」两次实测反证,限定符只收窄不破坏。
150+
零结果更危险**)。
151151
- **会话代理只服务 repo-scoped 路径,`/search/*` 的 403 体解析成净零**:代理回 403 + 体
152152
`sessions are bound to their configured repositories`,而那是**合法 JSON** —— 读 `total_count` 得 None、
153153
打印成 `total: None`,与真空集只差一个字符,三连查重于是回三个干净的零,而请求根本没跑

0 commit comments

Comments
 (0)