Skip to content

Commit ad6e234

Browse files
docs(pm-dispatch): name objectstack-fleet[bot] as the write identity (#19890)
Fixes #19881 Clause-②: no ## What changed Two lines of the pm-dispatch skill still named `claude[bot]` as the write identity. `claude[bot]` is the REST-proxy installation identity, and it has been superseded. `AGENTS.md` is the authority: "Every GitHub write leaves through `scripts/pm/`, as `objectstack-fleet[bot]`, behind the shared write gate." Both lines now say that, edited in place: ```diff .claude/skills/pm-dispatch/SKILL.md:94 -- 写侧恒走 `claude[bot]` ⛔ 不走用户令牌;节奏 ≥3 秒/笔、每账号每小时 ≤40 笔,429 即停写。 +- 写侧恒为 `objectstack-fleet[bot]`(AGENTS.md);节奏 ≥3 秒/笔、每账号每小时 ≤40 笔,429 即停写。 .claude/skills/pm-dispatch/references/filing-gate.md:31 -- 立卡、开 PR 与评论恒走 App 安装身份(`claude[bot]`),⛔ 不走席位用户令牌。 +- 立卡、开 PR 与评论恒经 `scripts/pm/` 为 `objectstack-fleet[bot]`(AGENTS.md),⛔ 不走席位用户令牌。 ``` Ruling (verbatim, untranslated): > 另外注意 pm-dispatch 技能文档里有一处过时:SKILL.md:94 和 references/filing-gate.md:31 还写着"写侧恒走 claude[bot]" 这个是错的,立卡修改 > 你可以直接派发修改 ## Why the lines read the way they do - `check-skill-line-ratchet` holds both files at zero line headroom: SKILL.md is at 319 of 319 lines and filing-gate.md is at 58 of 58. It also caps every line at 120 bytes. The old SKILL.md:94 was 119 bytes, and `objectstack-fleet[bot]` is 11 bytes longer than `claude[bot]`. - The pacing half of SKILL.md:94 is 67 bytes and is kept byte-identical. With it in place, the identity, the user-token clause and an authority pointer cannot all fit: the shortest line that holds all three is 127 bytes. - So the new SKILL.md:94 keeps the identity and the AGENTS.md pointer, and drops the user-token clause. Nothing is lost: - SKILL.md:92 already says user accounts have exactly three uses, and none of them is a write. - filing-gate.md:31 still carries its own user-token prohibition for filing cards, opening PRs and commenting. - SKILL.md:94 does not list the `scripts/pm/` doors (`issue-create`, `label-write`, `post-stamped`, `close-cards`, `with-fleet.sh`), because they would not fit under the cap either. The AGENTS.md pointer names them, and filing-gate.md:31 names `scripts/pm/`. - filing-gate.md:9 is a verbatim maintainer quote that names `claude(bot)`. It is untouched. The optional one-line note under it was not added: the file has zero line headroom, and line 31, now 119 bytes, has no room to carry the note. ## Lines re-read and left unchanged - `references/platform-readings.md:130` and `:132` are dated measurements of the container's REST-proxy token classes. They are not a write rule. - `references/platform-readings.md:136` tells a seat not to assume a write is signed as `claude[bot]`. That agrees with the new identity. It is not an instruction to write as `claude[bot]`. - `references/filing-gate.md:32-33` say to read back `user.type` on a fire's first write, and to stop filing if it reads `User`. A write through the doors reads back `Bot`, so a `User` readback still flags a write that went around them. These lines are not an instruction to write as `claude[bot]`. At `1be1a7d`, the acceptance grep `git grep -n 'claude\[bot\]' -- .claude/skills/pm-dispatch` hits exactly three lines: `platform-readings.md:130`, `:132` and `:136`. That is the list above, and none of them prescribes a write identity. ## Verification (all at `1be1a7d`) | file | lines before / after / ceiling | edited line bytes before / after / cap | |---|---|---| | `.claude/skills/pm-dispatch/SKILL.md` | 319 / 319 / 319 | 119 / 118 / 120 | | `.claude/skills/pm-dispatch/references/filing-gate.md` | 58 / 58 / 58 | 97 / 119 / 120 | - `pnpm check:pm-skill-ratchet` exited 0. Its readings: `SKILL.md is 319 lines (ceiling 319; headroom 0)` and `filing-gate.md is 58 lines (ceiling 58; headroom 0)`. The 120-byte line rule passed. - `pnpm check:pm-governed-prose` exited 0: `2 instruction surface(s) name all 6 registered governed surfaces`. - `pnpm check:pm-skill-id-lint` exited 0: `34 file(s) clean`. - `pnpm check:nul-bytes` exited 0: `no raw ASCII control bytes`. - `node scripts/pm/dispatch-gates.mjs --commands` (with no paths passed) derived 20 commands. All 20 exited 0. - `pnpm --filter @objectstack/lint run check:doc-formula-expressions` first exited 3 because a prerequisite was not built. It exited 0 after `turbo run build --filter=@objectstack/formula --filter=@objectstack/lint`. - `--ran` reconciliation reported `20 derived famil(ies) accounted for — 20 run, 0 NOT-MEASURED (a DERIVED zero)`. - `pnpm check:pm-settings-deny-roster` also exited 0. The derivation flagged its roster as living under `.claude/`. - The pre-push `check:commit-card-trailers` passed. ## Acceptance notes - **Changeset:** this is a `.claude/**`-only diff, which is the fast lane and publishes nothing, so no changeset is written. `Check Changeset` stays red until the `skip-changeset` label is on this PR. This dispatch's write budget has no label write, so the label is not applied here and is owed by the seat. - **Landing tier:** the dispatch described this diff as Tier H. The register (`GOVERNED_SURFACES` in `scripts/pm/check-governed-merges.mjs`) rows `.claude/**` as Tier S. The PR stays draft either way. ## 维护者速读(草稿) **改了什么**:pm-dispatch 技能里有两行把 GitHub 写身份写成 `claude[bot]`,现在都改成 `objectstack-fleet[bot]`,并注明以 AGENTS.md 为准。两行是 `SKILL.md:94` 和 `references/filing-gate.md:31`。只改这两行,两个文件的行数都不变。 **为什么改**:AGENTS.md 规定,所有 GitHub 写都经 `scripts/pm/` 以 `objectstack-fleet[bot]` 身份发出。技能文档还写着旧身份,只读技能的席位会被引向错误身份。这既与 AGENTS.md 矛盾,也与同一技能的 `rest-channel.md` 矛盾。本卡按您的原话裁决直派。 **风险与代价(含回滚)**: - 纯内部文档改动,不发布,不影响运行时。 - 行棘轮规定每行不超过 120 字节,所以 `SKILL.md:94` 删去了“⛔ 不走用户令牌”半句。这个意思在同文件第 92 行已经有了,`filing-gate.md:31` 也仍然保留,规则没有丢。 - 回滚就是 revert 本 PR 的单个提交。 **席位意见**: **你要做的**: - 按登记册,`.claude/**` 属 Tier S,由席位的达档复核 PASS 记录放行落地,不需要您点批准。 - 按派发,已请 os-zhuang、hotlong 复审;如果您想按 Tier H 处理,需要其中一人批准一次。 - `skip-changeset` 标签由席位补挂。 --- _Generated by [Claude Code](https://claude.ai/code/session_01X7HwfPLpQtCixDMrRGkSbe)_ Co-authored-by: Claude <noreply@anthropic.com>
1 parent 3bdcd14 commit ad6e234

2 files changed

Lines changed: 2 additions & 2 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报
9191
- 状态只经 GitHub 标签、assignee、正文行与 `pm:seat` 座位贴读写;循环须能从全新会话恢复。
9292
- 用户账号仅三用:assignee、授权批准、维护者亲手;批准账号永不跑席位或作其关联用户。
9393
- 内容写只走 REST 代理,⛔ 无 MCP 写;`user.login` 记令牌不记席位,归属 = 文本里的 session ID。
94-
- 写侧恒走 `claude[bot]` ⛔ 不走用户令牌;节奏 ≥3 秒/笔、每账号每小时 ≤40 笔,429 即停写。
94+
- 写侧恒为 `objectstack-fleet[bot]`(AGENTS.md);节奏 ≥3 秒/笔、每账号每小时 ≤40 笔,429 即停写。
9595
- GitHub 上一切新内容用英文;中文只留四通道(维护者速读、轮报、裁决引文、四维分析)。
9696
- 裁决引文照抄不译;四维中文只管新记录,存量英文块 ⛔ 不迁移;存量中文 ⛔ 不追溯改写。
9797
- 一 PM 恰管一车道,一车道由一组座位管,一席一贴;PM Y 管什么恰一个答案。

‎.claude/skills/pm-dispatch/references/filing-gate.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
- 写节奏 ⛔ 非可选:REST 写(评论/标签/关单/立卡)间隔 ≥3 秒,每账号每小时 ≤40 笔。
2929
- 收到 429 或次级限流 ⇒ 该席本 fire 停写,并把停写记在座位贴上。
3030
- 关单 ⛔ 永不由脚本循环连发:须维护者确认的分组,且逐笔之间留间隔。
31-
- 立卡、开 PR 与评论恒走 App 安装身份(`claude[bot]`),⛔ 不走席位用户令牌。
31+
- 立卡、开 PR 与评论恒经 `scripts/pm/` 为 `objectstack-fleet[bot]`(AGENTS.md),⛔ 不走席位用户令牌。
3232
- 用户类写绑作者:封号则其卡与评论按作者 404,故一个 fire 的首写回读 `user.type`。
3333
- 读到 `User` ⇒ 记座位贴、本 fire ⛔ 不立新卡;认领仍靠 assignee,署名仍是文本的 session ID。
3434

0 commit comments

Comments
 (0)