Repository navigation
Commit ad6e234
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
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
91 | 91 | | |
92 | 92 | | |
93 | 93 | | |
94 | | - | |
| 94 | + | |
95 | 95 | | |
96 | 96 | | |
97 | 97 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
| 31 | + | |
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| |||
0 commit comments