diff --git a/.claude/skills/pm-dispatch/references/platform-readings.md b/.claude/skills/pm-dispatch/references/platform-readings.md index eecff72bdd..fddf218aec 100644 --- a/.claude/skills/pm-dispatch/references/platform-readings.md +++ b/.claude/skills/pm-dispatch/references/platform-readings.md @@ -282,6 +282,7 @@ - 判定跨天翻面 ⇒ ⛔ 一次拒绝不是能力边界;`permissions.allow` 条目才是仓库侧确定性通道。 - `rerun_failed_jobs` 复用原 run 的提交与合并 ref,不拿新 main 重算。 - ⇒ 基上缺已合修复时重跑无效,只能 `git merge origin/main` 推提交;判别看修复合并时间。 +- 读数 2026-09-13:席位 REST `/jobs/{id}/rerun` 403、MCP `rerun_failed_jobs` 201 ⇒ 重跑可做,锁 1 未禁。 - 同一 head 上轻量兄弟 workflow `success` 加重量级载体 `cancelled` 是普通取代的预期签名。 - 同名 `failure` 也会被带另一诊断的后一次 `failure` 取代 ⇒ 任何判定前先按名取最新一次。 - cancel-in-progress 窗口只罩得住慢载体 ⇒ 先比对 run `head_sha` 与 PR 当前 head,不开调查。 diff --git a/scripts/pm/check-skill-line-ratchet.mjs b/scripts/pm/check-skill-line-ratchet.mjs index 446a731e89..fa451dc8ca 100644 --- a/scripts/pm/check-skill-line-ratchet.mjs +++ b/scripts/pm/check-skill-line-ratchet.mjs @@ -888,7 +888,24 @@ export const CEILINGS = new Map([ // / refused 0. Nothing paid in place: the two lines sit beside the // invalid-session pair they qualify. Landed count, headroom 0, same // convention. - ['.claude/skills/pm-dispatch/references/platform-readings.md', 453], + // Raised 453 → 454 by the FOURTEENTH 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. Spent at ONE + // line for ONE deduplicated reading, written in this file's voice: a failed + // CI job's re-run is a CHANNEL split rather than a seat capability limit — + // the seat's REST token reads 403 on the job re-run endpoint while MCP + // `rerun_failed_jobs` reads 201 and re-queues the failed shards, so the one + // confirming re-run stays exercisable through the state-shaped tool the + // write-identity deny list still allows (+1) = +1 exactly. Candidates 2 / + // landed 1 / already present 1 / refused 0 — the second candidate, the PR-body + // footer reading, is already carried by the two 裸 REST `PATCH /pulls` lines + // and was refused as a duplicate rather than restated. Could not be paid in + // place, and the slack was MEASURED rather than assumed: of this file's 427 + // adjacent bullet pairs ZERO merge under the 120-byte cap (smallest merged + // width 134 B), and the two neighbours the row joins offer 37 and 6 spare + // bytes against its 115 bytes of content; 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', 454], // 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 @@ -1526,6 +1543,23 @@ export const CROSS_FILE_MOVES = new Map([ date: '2026-09-13', delta: 2, }, + { + // The FOURTEENTH 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 +1 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-14', + delta: 1, + }, ], sources: [ ['.claude/skills/pm-dispatch/references/lanes/cli.md', 35],