Skip to content

Commit b9fdc65

Browse files
claude[bot]claude
andcommitted
docs(pm-skill): the sixth readings increment — seven measured platform facts, ceiling 388 -> 395 (ruled)
Seven deduplicated readings land as one rule line each in the readings ledger, and the ceiling row moves to the landed count under the STANDING one-file exception (pm-dispatch SKILL.md), recorded as a `ruledRaises` record rather than a decision card, exactly as that exception directs. The lines, each written in the file's voice and placed in the section that owns its subject: - MCP's read limiter and write limiter are independent of each other, measured in both polarities, so one side's refusal does not predict the other's. - A control word's hit does not license a different term's zero: the same document is reachable by one term and empty by another in the same batch, so the defect is term-shaped, not document-shaped. - A listing that returns a bare array and no total cannot announce its own truncation, so its zero is not a reading — the neighbouring row already covers the full-first-page case, this one states the response-shape property. - An existence question goes to a single-point 200/404 read (`GET /repos/{o}/{r}/branches/BRANCH`) or `git ls-remote --heads`, never to a listing page. - `issue_write` clears every field it is not passed, assignees included — the labels half was already on the ledger, this is the other half. - Assignability is a repo+account property that moves mid-session, with its 204/404 probe and the read-back rule. - A standalone marker line is dropped by the COMMENT read path with the bytes still in storage, so its absence is not evidence of a write-side strip. Ceiling 388 -> 395 at the landed count, headroom 0, same convention; `was` is untouched and no other ceiling moves. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018dxq7YqsLDMeZDZ5AzsgJX
1 parent eda6a60 commit b9fdc65

2 files changed

Lines changed: 47 additions & 1 deletion

File tree

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@
109109
- 读数:`POST /actions/runs/{id}/rerun-failed-jobs` REST 回 403 而 MCP 回 201。
110110
- job 日志只有 MCP 取得回,REST 侧转 blob 存储 `http=000`;同分钟 MCP 限流而 REST core 满 15000。
111111
- ⇒ MCP 限流先探 REST 再定退避,⛔ 不据一侧限流把整个平台的写都停掉。
112+
- MCP 的读限流与写限流彼此独立,两向各有实测 ⇒ 一侧被拒 ⛔ 不推另一侧也不可用。
112113
- REST 档以本班 repo-scoped 探针绿为前提;403 会话改按降级梯读。
113114
- 容器 curl 的 REST 通道 = App installation token,core 15,000/时,与 GraphQL 池独立计。
114115
- GraphQL 池 5000/时,只留给没有 REST 对应物的几件。
@@ -167,6 +168,7 @@
167168
- ⛔ 空查重结果不是读数,除非本会话内一个已知必中的控制词答了命中。
168169
- ⛔ 不是可疑时才验:归零下空结果与真无重复逐字节同形,读作搜过了没有。
169170
- 后果是重复卡照开、空车道照停;控制词回 0 ⇒ 本会话 search 已坏,立刻换通道,⛔ 不重试。
171+
- 控制词命中只证通道活着:同一文档换个词即回零,故障按词形不按文档,零仍不是读数。
170172
- 换道:探针绿走 REST 列表端点 `GET /repos/{o}/{r}/issues?state=open&labels=a,b&per_page=N`
171173
- 它走 core 桶且 `labels` 是真 AND;⛔ 完整性自证靠 `&page=N` 加总数核对。
172174
- 翻页在偏移 ~9,900 硬拒:422 Pagination with the page parameter is not supported for large datasets。
@@ -192,8 +194,11 @@
192194
- 组织侧授权变更后仓库访问逐步传播,同一端点数分钟内 403 转 200。
193195
- 该 403 体解析成净零 ⇒ 空车道先对 `open_issues_count` 反查再信,零命中纪律覆盖 list 读。
194196
- 满页首页零命中是截断不是缺席:`GET /branches?per_page=100` 回满 100 行无目标 ⇒ 翻完再判。
197+
- 裸数组无总数的 listing 自报不了截断,它的零不是读数;MCP 侧有 `totalCount` 可自报。
198+
- 存在性问题改单点读:`GET /repos/{o}/{r}/branches/BRANCH` 200/404,或 `git ls-remote --heads`
195199
- `issue_write``labels` 是整组替换不是追加:同一动作内重读现值合并再写。
196200
- 隔轮旧读数是无效快照,按其回写静默剥别的标签;真追加走 REST `POST /issues/{n}/labels`
201+
- `issue_write` 还清空每个未传字段(assignees 在内)⇒ 单字段更新必须把现值带齐重写。
197202
- 追加端点同样先过探针:403 会话没有真追加通道,只能整组替换。
198203
- 摘标签也没有加法端点:`finding` 定级这类只能整组写,carve-out 保留;写后照纪律回读。
199204
- PR 标签的三条读腿全盲、两条静默。
@@ -207,10 +212,12 @@
207212
- ⇒ union-write 欠一次延迟确认;必需标签(如 `skip-changeset`)其后每次触碰重核。
208213
- `list_issues` 永不返回 assignees:`fields` 枚举无此成员,不传也没有。
209214
- 已认领卡与空闲卡响应逐字节相同,清单只是候选名单 ⇒ 认领前必须过完整 `issue_read`
215+
- 可指派性是仓+账号属性且会话中可变:`GET /repos/{o}/{r}/assignees/USER` 204/404,指派后回读。
210216
- MCP `issue_read` 的 body 实体转义是纯读侧伪影,撇号与引号与尖括号成数字实体,comments 原样。
211217
- 存储体是明文,先解码实体再写回往返安全;腐蚀 body 的恰是把转义读数原样回写。
212218
- 读侧并非一律可逆:行内反引号里的尖括号片段被 MCP 读路径整个丢弃,非转义,无从解码。
213219
- 写侧剥除是真实存储损耗,⛔ 两类不并成一条,写后回读必做;实体归属与 `&amp;` 类未实测。
220+
- 评论里独立成行的标记同被读路径吃掉留空行 ⇒ 缺失不证写侧剥除,先读 payload 原体。
214221
- `Blocked-by:` 行归 BODY,是单通道反向索引:追加按解码后写回执行。
215222
- 历史上寄放在评论里的行按同程序增量回填,⛔ 不搞批量突击。
216223
- 解锁扫描只 grep body,⛔ 不加常设评论读;扫描走 `list_issues``issue_read` 直读。

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

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,31 @@ export const CEILINGS = new Map([
575575
// line cap when merged, so there is no re-wrap slack at all, and re-wrap funding
576576
// is refused per the 2026-08-17 rule in any case. Landed count, headroom 0, same
577577
// convention.
578-
['.claude/skills/pm-dispatch/references/platform-readings.md', 388],
578+
// Raised 388 → 395 by the SIXTH readings increment, taken under the STANDING
579+
// one-file exception rather than a fresh decision card. `pm-dispatch`
580+
// SKILL.md carries that exception, verbatim and untranslated:
581+
// 「唯一例外:`platform-readings.md` 增量抬上限到落地行数,免决策卡,记
582+
// `ruledRaises` 引常设裁决。条件:席位验收评论逐条核实、去重计数(候选/落地/
583+
// 已有/拒收)、一事一行、不计重排」
584+
// so the number below is the LANDED count and the seat's ACCEPT carries the
585+
// per-item verification and the candidate / landed / already-present / refused
586+
// counts the exception requires. Spent at ONE line per deduplicated reading,
587+
// each written in this file's voice: MCP's read limiter and write limiter are
588+
// independent of each other, measured in both polarities (+1); a control
589+
// word's hit does not license a different term's zero, since the same document
590+
// is reachable by one term and empty by another (+1); a listing that returns a
591+
// bare array and no total cannot announce its own truncation (+1) and the
592+
// single-point 200/404 read that answers an existence question instead (+1);
593+
// `issue_write` clears every field it is not passed, assignees included (+1);
594+
// assignability is a repo+account property that moves mid-session, with its
595+
// 204/404 probe (+1); a standalone marker line is dropped by the COMMENT read
596+
// path with the bytes still in storage, so its absence is not evidence of a
597+
// write-side strip (+1) = +7 exactly. Nothing was paid in place: the fourth
598+
// increment MEASURED zero line-neutral folds among this file's adjacent rule
599+
// pairs, and re-wrap funding is refused per the 2026-08-17 rule in any case.
600+
// The same-PR correction of the footer-mechanism row is line-neutral and buys
601+
// nothing. Landed count, headroom 0, same convention.
602+
['.claude/skills/pm-dispatch/references/platform-readings.md', 395],
579603
// Per-operation REST/GraphQL/git channel mapping — which fleet operation has
580604
// a REST twin (each row executed in a real session, provenance date carried
581605
// per row), the handful that are GraphQL-only, and the queue-routing
@@ -1028,6 +1052,21 @@ export const CROSS_FILE_MOVES = new Map([
10281052
date: '2026-09-07',
10291053
delta: 26,
10301054
},
1055+
{
1056+
// The STANDING exception's own words, copied from `pm-dispatch`
1057+
// SKILL.md rather than paraphrased; the +7 is accounted for line by
1058+
// line beside this entry's ceiling above. This raise takes no decision
1059+
// card BECAUSE the exception says it does not, and it is recorded here
1060+
// BECAUSE the exception says to record it here.
1061+
ruling:
1062+
'the standing one-file exception for'
1063+
+ ' `.claude/skills/pm-dispatch/references/platform-readings.md` — pm-dispatch'
1064+
+ ' SKILL.md, verbatim and untranslated: 「唯一例外:`platform-readings.md`'
1065+
+ ' 增量抬上限到落地行数,免决策卡,记 `ruledRaises` 引常设裁决。条件:席位验收评论'
1066+
+ '逐条核实、去重计数(候选/落地/已有/拒收)、一事一行、不计重排」',
1067+
date: '2026-09-07',
1068+
delta: 7,
1069+
},
10311070
],
10321071
sources: [
10331072
['.claude/skills/pm-dispatch/references/lanes/cli.md', 35],

0 commit comments

Comments
 (0)