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
11 changes: 7 additions & 4 deletions .claude/skills/pm-dispatch/references/platform-readings.md
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,7 @@
- `list_issues` 永不返回 assignees:`fields` 枚举无此成员,不传也没有。
- 已认领卡与空闲卡响应逐字节相同,清单只是候选名单 ⇒ 认领前必须过完整 `issue_read`。
- `comments` 计数会多读:实测 1 而列表与 timeline 双 0 ⇒ 线程空否读那两条,⛔ 不读计数。
- `comments` 与枚举不等是瞬态旗:计数收敛后记录已失而差值归零 ⇒ ⛔ 不作唯一防线。
- 可指派性是仓+账号属性且会话中可变:`GET /repos/{o}/{r}/assignees/USER` 204/404,指派后回读。
- MCP `issue_read` 的 body 实体转义是纯读侧伪影,撇号与引号与尖括号成数字实体,comments 原样。
- 存储体是明文,先解码实体再写回往返安全;腐蚀 body 的恰是把转义读数原样回写。
Expand Down Expand Up @@ -340,16 +341,18 @@
- 写侧 · PR 正文:尾部横线与其后的署名页脚一并被吃,而写调用照报成功。
- 去掉横线只写页脚则原样存活;评论不受影响,两种拼法都活。
- ⇒ 失效既依拼写又依载体:评论里验过页脚对 PR 正文什么都没证明。
- ⇒ PR 正文页脚不带前置横线,且写后回读正文 —— 那是唯一检测手段;评论两形皆可。
- ⇒ 处方按动作分裂:建侧送全块(横线加页脚),改侧不送页脚;⛔ 无一形两动作通吃。
- MCP `update_pull_request` 包装器删掉 PR 正文的页脚块;该通道锁 1 已拒,读作历史。
- 裸 REST `PATCH /pulls` 追加一个裸页脚并保留既有 session-URL 页脚,差恰 58 字节。
- 改侧 · 裸 REST `PATCH /pulls` 恒追加一条裸页脚并保留既有页脚,差恰 58 字节,与尾部无关。
- 尾部已是 `---` 加页脚块也照追加,重送复现 ⇒ 建侧的不追加判据 ⛔ 不外推到改侧。
- 同路送无页脚正文存回恰一条(平台裸形)⇒ 该格处方是不送页脚,⛔ 不是不重送正文。
- 页脚两拼写:裸版与 session-URL 版都要剥,漏剥的卡在正文中段,而 58 字节差照常。
- ⇒ 代价是归属:裸形无 session id,按此剥净的 PR 正文不载明哪个会话写的;另置见 AGENTS.md。
- 第四形:建 PR 两通道同判 —— 送出体尾部不是 `---` 加页脚块时,追加一条同形页脚。
- 该追加带前置横线、恰 90 字节,送出体是存储体的严格前缀。
- 该追加是横线加一条 session-URL 形页脚,送出体是存储体的严格前缀;字节数非常量(90/91)。
- 尾部已是该块则一字不追加,两通道各实测两向 ⇒ 建侧通道不是变量,判据是送出体尾部。
- ⛔ 无受控对照(同通道只差该块两送)⇒ 是拟合不是定论,⛔ 不外推到别的动作。
- 受控对照已补齐:同通道同动作只差该块两送,尾部为无横线页脚时照追加成两条。
- ⛔ 该对照只在裸 REST 建侧成立,MCP 建侧同一输入未测 ⇒ ⛔ 不外推到该通道。
- 调用不带 `body` 参数则页脚状态不动:`draft` 或 `title` 单字段更新既不删也不合成。
- 正文把 harness 两行块叠在页脚之上,存回是三条署名块;单块形态才复现成一条。
- ⇒ 形态随动作与送出体尾部变,改侧还随通道变;⛔ 不由任一条推其余,写后必回读。
Expand Down
59 changes: 58 additions & 1 deletion scripts/pm/check-skill-line-ratchet.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -1011,7 +1011,47 @@ export const CEILINGS = new Map([
// contended it is, the detached prescription unchanged.
// Nothing else was paid in place: 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', 466],
// Raised 466 → 469 by the EIGHTEENTH readings increment, again under the
// STANDING one-file exception quoted above rather than a fresh decision card,
// and again recorded as a `ruledRaises` record citing it. Its carrier card
// named a MEASURABLE unknown — the missing half of a controlled contrast this
// map itself declares absent — and the probe was the raising PR's own body:
// composed to end in the signature line with NO rule line above it, sent once
// through a bare `POST /pulls`, then read back (11,689 bytes sent and one
// signature line, 11,780 stored and two, the send a strict PREFIX of the
// store). Spent at ONE line per deduplicated reading: on the PATCH channel the
// append is UNCONDITIONAL, so a sent tail that IS the rule-plus-signature
// block — the very shape the create side leaves alone — is appended to
// anyway, reproduced on a second send, and the create-side criterion does not
// carry to it (+1); a thread's count-versus-enumeration discrepancy is a
// TRANSIENT flag, because the count converges on the enumeration and after it
// converges the records are gone and the difference is zero, so that
// discriminant cannot be the only defence (+1); and the controlled contrast
// now holds only on the bare-REST create channel, the MCP create channel's
// same input being unmeasured, so the conclusion is not carried there (+1) =
// +3 exactly. Candidates 5 / landed 3 / already present 1 / refused 1 — the
// already-present one is that channel's operational cost, carried by
// 「⇒ 该格处方是不送页脚」 and by the attribution row beside it; the refusal is a
// residual row whose first clause restated its neighbour's own conclusion
// 「判据是送出体尾部」 and whose second clause named the comment surface and
// the patch cell's other input as uncontrolled when both are in fact measured.
// Absence was measured per row with a lit control: `收敛` reads 0 in this file
// against `计数` at 9, `瞬态` hits only the `unstable` and PR-files rows, and
// `updated_at` reads 0.
//
// THREE corrections are paid in place and buy nothing — a rewrite is not a
// raise. The prescription row 「PR 正文页脚不带前置横线」, whose spelling is
// precisely what TRIGGERS the create-side append, is split per action. The
// PATCH row is re-stated as a RULE instead of one of two rows of inputs. And
// the append-size row's 「恰 90 字节」 becomes 「字节数非常量(90/91)」:
// this increment's send measured 91 bytes on a body with no trailing newline,
// the appended line being the session-URL spelling, which the row now NAMES
// instead of leaving it to be inferred from a constant that is not one. ⛔ No
// cause is asserted for the spread — one reading each, and no controlled
// contrast on the trailing newline or on session-id length.
// Nothing else was paid in place: 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', 469],
// 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 @@ -1736,6 +1776,23 @@ export const CROSS_FILE_MOVES = new Map([
date: '2026-09-15',
delta: 1,
},
{
// The EIGHTEENTH increment, under the same STANDING exception — the
// same words again, for the same reason: a record that quotes no
// ruling is RED and each record stands alone. The +3 is accounted for
// line by line beside this entry's ceiling above; the exception's
// conditions (per-item verification and the candidate / landed /
// already-present / refused counts) are carried by the raising PR's
// body and the seat's ACCEPT.
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-18',
delta: 3,
},
],
sources: [
['.claude/skills/pm-dispatch/references/lanes/cli.md', 35],
Expand Down
Loading