Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion .claude/skills/pm-dispatch/references/platform-readings.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@
- 读数:`POST /actions/runs/{id}/rerun-failed-jobs` REST 回 403 而 MCP 回 201。
- job 日志只有 MCP 取得回,REST 侧转 blob 存储 `http=000`;同分钟 MCP 限流而 REST core 满 15000。
- ⇒ MCP 限流先探 REST 再定退避,⛔ 不据一侧限流把整个平台的写都停掉。
- MCP 的读限流与写限流彼此独立,两向各有实测 ⇒ 一侧被拒 ⛔ 不推另一侧也不可用。
- REST 档以本班 repo-scoped 探针绿为前提;403 会话改按降级梯读。
- 容器 curl 的 REST 通道 = App installation token,core 15,000/时,与 GraphQL 池独立计。
- GraphQL 池 5000/时,只留给没有 REST 对应物的几件。
Expand Down Expand Up @@ -167,6 +168,7 @@
- ⛔ 空查重结果不是读数,除非本会话内一个已知必中的控制词答了命中。
- ⛔ 不是可疑时才验:归零下空结果与真无重复逐字节同形,读作搜过了没有。
- 后果是重复卡照开、空车道照停;控制词回 0 ⇒ 本会话 search 已坏,立刻换通道,⛔ 不重试。
- 控制词命中只证通道活着:同一文档换个词即回零,故障按词形不按文档,零仍不是读数。
- 换道:探针绿走 REST 列表端点 `GET /repos/{o}/{r}/issues?state=open&labels=a,b&per_page=N`。
- 它走 core 桶且 `labels` 是真 AND;⛔ 完整性自证靠 `&page=N` 加总数核对。
- 翻页在偏移 ~9,900 硬拒:422 Pagination with the page parameter is not supported for large datasets。
Expand All @@ -192,8 +194,11 @@
- 组织侧授权变更后仓库访问逐步传播,同一端点数分钟内 403 转 200。
- 该 403 体解析成净零 ⇒ 空车道先对 `open_issues_count` 反查再信,零命中纪律覆盖 list 读。
- 满页首页零命中是截断不是缺席:`GET /branches?per_page=100` 回满 100 行无目标 ⇒ 翻完再判。
- 裸数组无总数的 listing 自报不了截断,它的零不是读数;MCP 侧有 `totalCount` 可自报。
- 存在性问题改单点读:`GET /repos/{o}/{r}/branches/BRANCH` 200/404,或 `git ls-remote --heads`。
- `issue_write` 的 `labels` 是整组替换不是追加:同一动作内重读现值合并再写。
- 隔轮旧读数是无效快照,按其回写静默剥别的标签;真追加走 REST `POST /issues/{n}/labels`。
- `issue_write` 还清空每个未传字段(assignees 在内)⇒ 单字段更新必须把现值带齐重写。
- 追加端点同样先过探针:403 会话没有真追加通道,只能整组替换。
- 摘标签也没有加法端点:`finding` 定级这类只能整组写,carve-out 保留;写后照纪律回读。
- PR 标签的三条读腿全盲、两条静默。
Expand All @@ -207,10 +212,12 @@
- ⇒ union-write 欠一次延迟确认;必需标签(如 `skip-changeset`)其后每次触碰重核。
- `list_issues` 永不返回 assignees:`fields` 枚举无此成员,不传也没有。
- 已认领卡与空闲卡响应逐字节相同,清单只是候选名单 ⇒ 认领前必须过完整 `issue_read`。
- 可指派性是仓+账号属性且会话中可变:`GET /repos/{o}/{r}/assignees/USER` 204/404,指派后回读。
- MCP `issue_read` 的 body 实体转义是纯读侧伪影,撇号与引号与尖括号成数字实体,comments 原样。
- 存储体是明文,先解码实体再写回往返安全;腐蚀 body 的恰是把转义读数原样回写。
- 读侧并非一律可逆:行内反引号里的尖括号片段被 MCP 读路径整个丢弃,非转义,无从解码。
- 写侧剥除是真实存储损耗,⛔ 两类不并成一条,写后回读必做;实体归属与 `&` 类未实测。
- 评论里独立成行的标记同被读路径吃掉留空行 ⇒ 缺失不证写侧剥除,先读 payload 原体。
- `Blocked-by:` 行归 BODY,是单通道反向索引:追加按解码后写回执行。
- 历史上寄放在评论里的行按同程序增量回填,⛔ 不搞批量突击。
- 解锁扫描只 grep body,⛔ 不加常设评论读;扫描走 `list_issues` 加 `issue_read` 直读。
Expand Down Expand Up @@ -294,7 +301,7 @@
- MCP `update_pull_request` 包装器删掉 PR 正文的页脚块。
- 裸 REST `PATCH /pulls` 追加一个裸页脚并保留既有 session-URL 页脚,差恰 58 字节。
- 同一 MCP 包装器上有反例:把已带页脚的正文整体重送,两条页脚均逐字节存活。
- 提出的机理是工具只为无页脚的正文合成页脚 —— ⛔ 未实测,⛔ 不把观察压成定律
- 送无页脚正文经 MCP 编辑回读仍无页脚(两次实测)⇒ 它不为无页脚正文合成页脚
- 第四形:裸 REST `POST /pulls` 建 PR 时,在已带 session-URL 页脚的正文后再追加一条同形页脚。
- 该追加带前置横线、恰 90 字节,送出体是存储体的严格前缀。
- ⇒ 追加形态随通道与动作(建 / 改)变,⛔ 不由任一条推其余;写后必回读。
Expand Down
41 changes: 40 additions & 1 deletion scripts/pm/check-skill-line-ratchet.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -575,7 +575,31 @@ export const CEILINGS = new Map([
// 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', 388],
// Raised 388 → 395 by the SIXTH readings increment, taken under the STANDING
// one-file exception rather than a fresh decision card. `pm-dispatch`
// SKILL.md carries that exception, verbatim and untranslated:
// 「唯一例外:`platform-readings.md` 增量抬上限到落地行数,免决策卡,记
// `ruledRaises` 引常设裁决。条件:席位验收评论逐条核实、去重计数(候选/落地/
// 已有/拒收)、一事一行、不计重排」
// so the number below is the LANDED count and the seat's ACCEPT carries the
// per-item verification and the candidate / landed / already-present / refused
// counts the exception requires. Spent at ONE line per deduplicated reading,
// each written in this file's voice: MCP's read limiter and write limiter are
// independent of each other, measured in both polarities (+1); a control
// word's hit does not license a different term's zero, since the same document
// is reachable by one term and empty by another (+1); a listing that returns a
// bare array and no total cannot announce its own truncation (+1) and the
// single-point 200/404 read that answers an existence question instead (+1);
// `issue_write` clears every field it is not passed, assignees included (+1);
// assignability is a repo+account property that moves mid-session, with its
// 204/404 probe (+1); 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 (+1) = +7 exactly. Nothing was paid in place: the fourth
// increment MEASURED zero line-neutral folds among this file's adjacent rule
// pairs, and re-wrap funding is refused per the 2026-08-17 rule in any case.
// The same-PR correction of the footer-mechanism row is line-neutral and buys
// nothing. Landed count, headroom 0, same convention.
['.claude/skills/pm-dispatch/references/platform-readings.md', 395],
// 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
Expand Down Expand Up @@ -1028,6 +1052,21 @@ export const CROSS_FILE_MOVES = new Map([
date: '2026-09-07',
delta: 26,
},
{
// The STANDING exception's own words, copied from `pm-dispatch`
// SKILL.md rather than paraphrased; the +7 is accounted for line by
// line beside this entry's ceiling above. This raise takes no decision
// card BECAUSE the exception says it does not, and it is recorded here
// BECAUSE the exception says to record it here.
ruling:
'the standing one-file exception for'
+ ' `.claude/skills/pm-dispatch/references/platform-readings.md` — pm-dispatch'
+ ' SKILL.md, verbatim and untranslated: 「唯一例外:`platform-readings.md`'
+ ' 增量抬上限到落地行数,免决策卡,记 `ruledRaises` 引常设裁决。条件:席位验收评论'
+ '逐条核实、去重计数(候选/落地/已有/拒收)、一事一行、不计重排」',
date: '2026-09-07',
delta: 7,
},
],
sources: [
['.claude/skills/pm-dispatch/references/lanes/cli.md', 35],
Expand Down
Loading