Skip to content

Commit 694b1d2

Browse files
committed
pm-dispatch: identity-bound rate-limit prescriptions, write merging, account-suspension recovery readings
Second half of the shared-identity rate-limit card. - platform-readings.md quota block: the two rows that still told a seat to try the other channel on a rate limit are re-conditioned in place on the GET /user identity test (403 and transport failures stay per-side readings); five new rows record the account-suspension signal and the measured recovery (branches and commits survive, a destroyed PR holds its branch name, the local object store is the backup, a rebuilt PR self-reports). +5 under the standing one-file exception, recorded as a ruledRaises record in the ratchet. - SKILL.md 平台读数纪律: one rule line for merged writes (fewer and larger, no per-write slowing, no burst; write volume counts per identity), paid by folding the two maintainer-abort lines into one. - review-checklist.md: the reviewing seat's NOT MEASURED line for destroyed evidence, paid by folding the dead-code deletion pair into one line. Claude-Session: https://claude.ai/code/session_01HZfg2AwVX191qCizp88gQr Co-authored-by: Claude <noreply@anthropic.com>
1 parent b3b43b6 commit 694b1d2

4 files changed

Lines changed: 60 additions & 7 deletions

File tree

‎.claude/skills/pm-dispatch/SKILL.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
172172
- advisory 门禁红着进 main 是共享损伤,任何车道发现都立即止血并立单。
173173
- main-red 的跳队例外与事故锚卡约定见 `references/landing-operations.md` B 节。
174174
- dev 自己死了不等于维护者中止:子代理消失是正常死法,走死认领回收。
175-
- 维护者中止只在有显式信号时成立:原话,或宿主回报 stopped by the user。
176-
- ⛔ 不据推断立一道没有重启条件的门;判据是信号不是症状。
175+
- 维护者中止只认原话或宿主回报 stopped by the user,⛔ 不据推断立无重启条件的门。
177176
- 立卡者不查重,只附 3–5 个查重词;分诊按词查自有列表,零命中须控制词背书。
178177
- 共享基础设施修复入队前按症状复查 main,不按 issue 号。
179178
- 真撞上重复,先比数值与作用域再决定关哪个。
@@ -183,6 +182,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
183182
- 冲突立成 `needs-user-decision` 卡,该 PR 不挂 auto-merge 留异议窗口。
184183
- 读序 git、payload、REST、MCP;REST 可达性逐会话探一次;通道对照见 `references/rest-channel.md`。
185184
- 派发前读一次 `rate_limit`,余量装不下整批就减批,⛔ 不靠撞墙发现。
185+
- 写少而大:同卡同轮结论合成一条评论,⛔ 不放慢单笔、不攒着一次性发;写量按身份计。
186186

187187
## 多仓协调
188188

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,10 +120,10 @@
120120
- REST 写侧经出口代理必带 `Content-Type: application/json`,否则代理回 415 且一个字节都没写。
121121
- 判别式:该 415 的 `documentation_url` 指 Claude Code 不指 GitHub ⇒ 代理拒,不是 GitHub;四端点实测。
122122
- 两通道的信封在配额、权限、传输三样上都不同 ⇒ 任一侧的拒绝只是那一侧的读数。
123-
- 限流、403、传输失败都要试过另一侧才说得出我没手段。
123+
- 403 与传输失败要试过另一侧才说得出我没手段;限流先比身份,同 ID 的他侧不是手段。
124124
- 读数:`POST /actions/runs/{id}/rerun-failed-jobs` REST 回 403 而 MCP 回 201。
125125
- job 日志只有 MCP 取得回,REST 侧转 blob 存储 `http=000`;同分钟 MCP 限流而 REST core 满 15000。
126-
- ⇒ MCP 限流先探 REST 再定退避,⛔ 不据一侧限流把整个平台的写都停掉。
126+
- ⇒ MCP 限流先 `GET /user` 比 ID:同 ID 的 REST 满额不是退路,写排队到重置;异 ID 才是。
127127
- MCP 的读限流与写限流彼此独立,两向各有实测 ⇒ 一侧被拒 ⛔ 不推另一侧也不可用。
128128
- REST 档以本班 repo-scoped 探针绿为前提;403 会话改按降级梯读。
129129
- 容器 curl 的 REST 通道令牌按会话定:installation(`claude[bot]`)或 user-to-server(用户),core 15,000/时。
@@ -158,6 +158,11 @@
158158
- 中途撞限流的 dev 完不成强制查重,只能把发现交回 PM 代为归档,⛔ 不盲目开卡。
159159
- 打满时待执行写排成有序清单挂进巡逻词,不靠记忆;恢复窗口按序连清。
160160
- 重试对齐整点(REST core 整点重置)优于指数退避,⛔ 绝不忙轮询。
161+
- 停用报文 account was suspended 遍及 /rate_limit 与 git,不给理由;非会话门 403、非限流。
162+
- 账号停用销毁其名下 PR、卡与评论;分支与 commit 属仓库照留远端 ⇒ 代码从未真丢。
163+
- 被销毁的 PR 仍占分支名:API 答 404,同名开新 PR 仍被拒 ⇒ 同批 commit 推新分支名再开。
164+
- 本地对象库是最后备份:复核时 fetch 过的每条分支,其 head 在停用后仍在本地可推。
165+
- 重建 PR 正文自报四件:head 逐字节同、无 rebase/amend/squash、数字出自旧基底、CI 为准。
161166
- 文档载明未实测:条件请求答 `304` 不计 core 池。
162167
- 公开仓零配额读法两档,payload 档优先 —— 只有 body 精确。
163168
- 网页档可达性逐会话逐 URL 形状分叉:一处容器 `/actions/**` 与 api. 回 403,另一处网页全 200。

‎.claude/skills/pm-dispatch/references/review-checklist.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232

3333
- 测试证据要有真实命令与通过输出,⛔ 不接受一句 tests pass。
3434
- 测量类交付先看阳性对照:对照本身失败 ⇒ 该读数记 INCONCLUSIVE,⛔ 不入账。
35+
- 复核项证据已销毁(评论、卡或 PR 答 404)⇒ 记 NOT MEASURED 并写因,⛔ 不记通过或无旗。
3536
- 引 entry `.d.ts` 逐字节相同的读数必须同块带阳性对照,它只判名字集。
3637
- 对 barrel 已转发符号的形状恒无效:`export *` 与 `export type { X } from` 都不复述形状。
3738
- 判据是同块点名声明该符号的模块那份移动了的产物,或具名探针;缺则记 INCONCLUSIVE。
@@ -72,6 +73,5 @@
7273
- 但推翻过程必须写在 PR 正文并附 main 语料上的实测信噪比,否则按 REWORK 要证据。
7374
- `+0/-0` 不是空文件的证明:NUL 字节让 git 当二进制渲染,还让文件对 grep 隐身。
7475
- 先疑 NUL,以 blob 定论 `git show <sha>:<path> | wc -l`,要求源侧写转义序列。
75-
- 以死代码或不可达为由的删除,PM 在 `origin/main` 上用带引号精确名自己核一次引用面。
76-
- 核过再 ACCEPT:这是断言不是 diff 里的事实,而这一查只花十秒。
76+
- 以死代码或不可达为由的删除,PM 先在 `origin/main` 用带引号精确名核引用面,再 ACCEPT。
7777
- 卡的交付物含系统性 sweep 时,ACCEPT 评论把范围外产出成组列出并写明 sweep 判据。

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

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -905,7 +905,38 @@ export const CEILINGS = new Map([
905905
// width 134 B), and the two neighbours the row joins offer 37 and 6 spare
906906
// bytes against its 115 bytes of content; re-wrap funding is refused per the
907907
// 2026-08-17 rule in any case. Landed count, headroom 0, same convention.
908-
['.claude/skills/pm-dispatch/references/platform-readings.md', 454],
908+
// Raised 454 → 459 by the FIFTEENTH readings increment, again under the
909+
// STANDING one-file exception quoted above rather than a fresh decision
910+
// card, and again recorded as a `ruledRaises` record citing it. Spent at ONE
911+
// line per deduplicated reading, each written in this file's voice, all five
912+
// from one measured account-level incident and its measured recovery: the
913+
// suspension signal is `account was suspended` on every endpoint including
914+
// `/rate_limit` and on git, with no reason given — a third 403 shape beside
915+
// the session gate and the rate limit (+1); a suspension destroys the
916+
// account's PRs, cards and comments while every branch and commit stays on
917+
// the remote, because those belong to the repository (+1); a destroyed PR
918+
// still holds its branch name — the API answers 404 yet a new PR on the same
919+
// branch is refused — so the same commits go up under a NEW branch name (+1);
920+
// the local object store is the last backup — every branch a reviewer fetched
921+
// to verify on the tree still has its head locally after the suspension, and
922+
// it pushes (+1); and a rebuilt PR self-reports four things in its body:
923+
// byte-identical head, no rebase/amend/squash, numbers from the old base, CI
924+
// decides (+1) = +5 exactly. Candidates 5 / landed 5 / already present 0 /
925+
// refused 0 — the family grep (suspended / 停用 / 销毁 / 幽灵 / 重推 / 重建 /
926+
// 对象库 / 分支名) on `origin/main` hit only the Routine-rebuild and
927+
// issue-transfer rows, none of which carries any of the five.
928+
//
929+
// TWO corrections are paid in place and buy nothing: the quota block's
930+
// 「限流、403、传输失败都要试过另一侧才说得出我没手段」 row and its 「⇒ MCP 限流先探
931+
// REST 再定退避」 conclusion, which until this increment instructed the very
932+
// same-identity channel switch that `rest-channel.md`'s identity-bound
933+
// rate-limit rows forbid; both are re-conditioned in place, line-neutral, on
934+
// the `GET /user` identity test, with the 403 and transport halves kept as
935+
// the per-side readings they are. Nothing else was paid in place: the fourth
936+
// increment MEASURED zero line-neutral folds among this file's adjacent rule
937+
// pairs, and re-wrap funding is refused per the 2026-08-17 rule in any case.
938+
// Landed count, headroom 0, same convention.
939+
['.claude/skills/pm-dispatch/references/platform-readings.md', 459],
909940
// Per-operation REST/GraphQL/git channel mapping — which fleet operation has
910941
// a REST twin (each row executed in a real session, provenance date carried
911942
// per row), the handful that are GraphQL-only, and the queue-routing
@@ -1560,6 +1591,23 @@ export const CROSS_FILE_MOVES = new Map([
15601591
date: '2026-09-14',
15611592
delta: 1,
15621593
},
1594+
{
1595+
// The FIFTEENTH increment, under the same STANDING exception — the
1596+
// same words again, for the same reason: a record that quotes no
1597+
// ruling is RED and each record stands alone. The +5 is accounted for
1598+
// line by line beside this entry's ceiling above; the exception's
1599+
// conditions (per-item verification and the candidate / landed /
1600+
// already-present / refused counts) are carried by the raising PR's
1601+
// body and the seat's ACCEPT.
1602+
ruling:
1603+
'the standing one-file exception for'
1604+
+ ' `.claude/skills/pm-dispatch/references/platform-readings.md` — pm-dispatch'
1605+
+ ' SKILL.md, verbatim and untranslated: 「唯一例外:`platform-readings.md`'
1606+
+ ' 增量抬上限到落地行数,免决策卡,记 `ruledRaises` 引常设裁决。条件:席位验收评论'
1607+
+ '逐条核实、去重计数(候选/落地/已有/拒收)、一事一行、不计重排」',
1608+
date: '2026-09-15',
1609+
delta: 5,
1610+
},
15631611
],
15641612
sources: [
15651613
['.claude/skills/pm-dispatch/references/lanes/cli.md', 35],

0 commit comments

Comments
 (0)