Repository navigation
Commit a04e9d7
docs(agents): one home for who sets a PR's assignee — the seat at hand-over, never the dev's pr_create (#29832)
<!-- claude-projects-attribution: {"github_login":"os-support-ai"} -->
_Requested by **Yibo Wang** · [project
thread](https://claude.ai/code/project/chan_01BVUyyPie8gHwoPM18iABwB?thread=cmsg_01BVUyyPie8gHwoPM18iABwBC8KTqre1nCUc6EkLo7CcKT)_
Fixes #29367
Clause-②: no
Metadata-protocol: none
## 维护者速读
- 改了什么:两份代理说明书对「PR 的 assignee 谁来设」说法相反,现在只剩一处规则:dev 的 `pr_create` 不带
assignees(中继虽然收这个键),PR 上的人由席位在交棒时设;AGENTS.md 的括注改为指向
`.claude/agents/os-dev.md` 规则 2,不再反向复述。
- 为什么改:dev 照一份做就违反另一份,每张卡的报告都要再争一次;中继 `pr_create` 行的注释与 pm-dispatch
技能的路径分叉都站在 os-dev.md 一边,AGENTS.md 那句是过期的。
- 风险与回滚:仅两份说明文本各改一行到两行,无代码、无协议、无 changeset;回滚即还原本 PR。
- 先看:`AGENTS.md` 认领段落第 403–404 行的括注;`.claude/agents/os-dev.md` 第 38 行(规则
2 的 PR 子条)。
- 两分钟验证:`pnpm check:pm-skill-ratchet` 与 `pnpm check:pm-skill-id-lint`
都绿(两文件仍在各自上限:1050 行与 405 行,每行 ≤120 字节);`grep -n "mirrors the card"
AGENTS.md` 无结果。
- 需要你做的:Tier H(`AGENTS.md`):席位 ACCEPT 与契约复审 PASS 后,需 GOVERNED_APPROVERS
账号批准一次。
## What changes
- **`AGENTS.md`, claim paragraph (lines 403–404).** The parenthetical
"the PR's assignee mirrors the card's, set by the executor at
`pr_create`" becomes "nor the PR's: `pr_create` carries none; the seat
sets it at hand-over, `.claude/agents/os-dev.md` rule 2". The paragraph
now references the one home instead of stating the rule the other way
round. Net 0 lines; the two rewritten lines are 98 and 113 bytes.
- **`.claude/agents/os-dev.md`, rule 2, line 38.** The PR clause gains
the relay fact and names the actor: `PR ⛔ 不带 assignees(中继虽收),席位交棒才派。` —
the relay's `pr_create` op accepts an `assignees` key, the rule is that
a dev does not send it, and the seat assigns at hand-over. Net 0 lines;
the line is 119 bytes.
Nothing else moves: the write-budget line (os-dev.md line 62, `⛔ 无
assignees`) and the pm-dispatch SKILL.md path fork (`pr_create` 不请不派; ③
请审 = 席位交棒) already agree with the home and are untouched.
## Why
The card's "done when": one rule, stated in one place and referenced
from the other, saying who sets the PR assignee and whether the relay's
`pr_create` accepts it. The seat's reading of the governing text (not
re-rulable in this card): `.claude/skills/pm-dispatch/SKILL.md` 〈路径分叉〉
and os-dev.md rule 2 agree that the dev's create carries no assignee and
the seat hands the PR over, so the AGENTS.md parenthetical was the stale
side and os-dev.md rule 2 is the home. Measured on the relay:
`scripts/pm/fleet-write/ops.mjs` lists `assignees` among `pr_create`'s
optional keys (the create plus an assignee leg on the pull's issue
endpoint) and its header states in so many words that a dev's
`pr_create` carries no `assignees` — so "accepts it" is true and the
rule is about not sending it, which is what the home now says.
## Verification
Head `507f74ae` = `origin/main` @ `b0ef25f5` + this one commit; the
branch was fast-forwarded onto main before the commit, so there is no
merge commit. `git merge-tree` against `origin/main` at open: clean. PR
#29717 (#29709) edits the AGENTS.md roles table around line 730; this
diff touches lines 403–404 only.
<details><summary>Derived gates — `dispatch-gates --commands` on the
diff, 23 commands, all run on the final base, `--ran` verdict: 23 run, 0
NOT-MEASURED</summary>
```
node scripts/check-closing-keyword-parity.mjs :: exit 0
node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0
node scripts/check-comment-mask-corpus.mjs :: exit 0
node scripts/pm/check-governed-queue-guard.mjs --self-test :: exit 0
node scripts/pm/check-harness-current.mjs --self-test :: exit 0
pnpm --filter @objectstack/lint run check:doc-formula-expressions :: exit 0
pnpm check:agent-model-declared :: exit 0
pnpm check:agent-test-spelling :: exit 0
pnpm check:commit-card-trailers :: exit 0
pnpm check:cross-package-test-inputs :: exit 0
pnpm check:doc-authoring :: exit 0
pnpm check:docs-audit-scope :: exit 0
pnpm check:driver-memory-census :: exit 0
pnpm check:gitlink-declared :: exit 0
pnpm check:nul-bytes :: exit 0
pnpm check:pm-governed-merges :: exit 0
pnpm check:pm-governed-prose :: exit 0
pnpm check:pm-skill-id-lint :: exit 0
pnpm check:pm-skill-ratchet :: exit 0
pnpm check:refd-timer-probe :: exit 0
pnpm check:required-contexts :: exit 0
pnpm check:skill-frame-sync :: exit 0
pnpm check:watch-hint-literal :: exit 0
```
`check:doc-formula-expressions` first answered exit 3 (prerequisite:
`@objectstack/formula` and `@objectstack/lint` not built — nothing
measured); after `turbo run build --filter=@objectstack/formula
--filter=@objectstack/lint` it ran and answered 0. The ratchet reads
`AGENTS.md is 1050 lines (ceiling 1050; headroom 0)` and
`.claude/agents/os-dev.md is 405 lines (ceiling 405; headroom 0)`, every
line within the 120-byte budget.
</details>
## Acceptance notes
- **Line budget, measured against the order.** The order allowed
os-dev.md net ≤ +1; the ratchet's ceiling for that file is 405 at a
count of 405 (headroom 0), and AGENTS.md's is 1050 at 1050 — the order's
"1117" ceiling for AGENTS.md is not what `check-skill-line-ratchet.mjs`
holds. So both files are edited at net 0 lines, with no re-wrap of
untouched lines; the AGENTS.md change reflows only the two lines that
carried the parenthetical.
- **No restatement moved.** os-dev.md line 62 keeps `⛔ 无 assignees`
inside the write budget; it is the budget's own spelling, in the same
file as the home, and deleting it would buy nothing the ceiling needs.
- **No issue numbers** were added to operative text
(`check:pm-skill-id-lint` green).
- Changeset: none (`skip-changeset`; two instruction files, no package
moves).
## Human Minimum
Tier H (`AGENTS.md`): after the seat's ACCEPT and a same-head
contract-review PASS, one `GOVERNED_APPROVERS` approval. Nothing else
needs a human.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01WGufzfNGqqzsW5spZyt9Xd
Co-authored-by: os-support-ai <support@objectstack.ai>
Co-authored-by: Claude <noreply@anthropic.com>1 parent 4e0c5d3 commit a04e9d7
2 files changed
Lines changed: 3 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
38 | | - | |
| 38 | + | |
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
400 | 400 | | |
401 | 401 | | |
402 | 402 | | |
403 | | - | |
404 | | - | |
| 403 | + | |
| 404 | + | |
405 | 405 | | |
406 | 406 | | |
407 | 407 | | |
| |||
0 commit comments