From 5ea4c1cc83ad0233f9ab2d389d8e42cbeae5400a Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 23 Oct 2026 15:25:23 +0000 Subject: [PATCH 1/2] docs(pm-dispatch): the Writes: line names the relay as the only GitHub write path and bans GitHub MCP writes by name; the card thread's opening message carries it verbatim; contract review notes a PR not authored by the fleet bot; coordinator.md agrees with the unconditional takeover Co-authored-by: Claude Claude-Session: https://claude.ai/code/session_01REirBR5H4pfZ96C61mK6Uj --- .claude/skills/pm-dispatch/references/contract-review.md | 1 + .claude/skills/pm-dispatch/references/coordinator.md | 4 ++-- .claude/skills/pm-dispatch/references/dispatch-runbook.md | 2 +- .claude/skills/pm-dispatch/references/execution-duties.md | 7 ++++--- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.claude/skills/pm-dispatch/references/contract-review.md b/.claude/skills/pm-dispatch/references/contract-review.md index c12444cfc6..8f08f4fb2f 100644 --- a/.claude/skills/pm-dispatch/references/contract-review.md +++ b/.claude/skills/pm-dispatch/references/contract-review.md @@ -26,6 +26,7 @@ 有行必校,缺行旧记录不改判。 - ① derived judgments 逐项:diff 引出的接受集与公开面变化逐条点名判对错。 - ② semver 定级与 changeset 声明一致;③ 边界旗:dev 挂旗与 `open_questions` 逐旗答复或升级。 +- 另记作者:PR `user.login` 非 `objectstack-fleet[bot]` ⇒ ③ 注点名该 login(脱中继写),落地前读。 - 复核形状:只读 diff 与卡片,check 结论取 head 的 check-runs,⛔ 永不本地重跑派生门禁族。 - 只喂卡片、既有裁决与 PR 本体,⛔ 不喂派发令与派发席自己的结论;简报写成对抗性。 - 简报从 `node scripts/pm/record-recognisers.mjs --brief-template` 起稿: diff --git a/.claude/skills/pm-dispatch/references/coordinator.md b/.claude/skills/pm-dispatch/references/coordinator.md index 06fea74d3f..ede2b7f3f6 100644 --- a/.claude/skills/pm-dispatch/references/coordinator.md +++ b/.claude/skills/pm-dispatch/references/coordinator.md @@ -9,8 +9,8 @@ - 项目管哪些车道只由项目指令声明;每条车道开一个席位线程,坐该车道空着的座位贴。 - 席位线程在贴的说明段写「由 X 账户的项目负责」;贴协议与互斥照 `seat-lifecycle.md`。 -- 一条车道恒归一个项目:车道任一座位贴 🟢 标着另一项目 ⇒ 车道已有主,⛔ 不坐别席。 -- 仲裁者是座位贴,⛔ 不是项目记忆;另一项目在飞卡由其席跟完,其收班简报在即可坐。 +- 一车道归一项目:座位贴 🟢 写他账号 ⇒ 车道已有主;仲裁者是座位贴,⛔ 不是项目记忆。 +- ⛔ 不坐别席,另一项目在飞卡由其席跟完;维护者指令行改写 ⇒ 按 `project-forms.md` 接管。 ## 二、跨车道取卡(coordinator 每次唤醒读) diff --git a/.claude/skills/pm-dispatch/references/dispatch-runbook.md b/.claude/skills/pm-dispatch/references/dispatch-runbook.md index 3fa334a361..0b29a6eaed 100644 --- a/.claude/skills/pm-dispatch/references/dispatch-runbook.md +++ b/.claude/skills/pm-dispatch/references/dispatch-runbook.md @@ -137,7 +137,7 @@ - 卡线程交回或其 PR 合入,席位当即告知 coordinator 释放槽位。 - 请 coordinator 开线程附维护者原话消息:它只凭维护者明言设线程的 model 与 effort。 - 席位留认领文本、派发令、契约复核、ACCEPT 与落地;线程实施、开 draft PR、驱动 CI。 -- 派发令由 coordinator 写进卡线程开场消息,⛔ 不落共享目录;卡上派发评论留一行指针。 +- 派发令由 coordinator 写进线程开场消息,`Writes:` 行逐字在内,⛔ 不落共享目录;卡上留指针。 - coordinator 开线程即读线程分支交席位(读不到则线程自报);⛔ 线程不认领、不写 assignee。 - 席位写 assignee+`pm:dispatched`+带该 `Branch:` 的认领;线程核对最新认领指向本分支方开工。 - 分支约定仍是 `claude/issue--`;线程只能推指定分支是实测平台例外,认领如实写。 diff --git a/.claude/skills/pm-dispatch/references/execution-duties.md b/.claude/skills/pm-dispatch/references/execution-duties.md index 72a36dda1a..090e7f16f1 100644 --- a/.claude/skills/pm-dispatch/references/execution-duties.md +++ b/.claude/skills/pm-dispatch/references/execution-duties.md @@ -118,8 +118,7 @@ - S 机械 `medium`;M `high`(默认);L/XL/`security`/p1/契约复核/四轴分析 `xhigh`;`max` 凭维护者点名。 - 解析顺序、pin 语义与允许名单回退陷阱以 os-dev 定义 frontmatter 注释为权威。 - 分诊 suggestion 行是输入不是决定,不采纳给理由。 -- 派发词 ⛔ 默认不整段粘贴 issue 正文:让 dev 自己读全文与全部评论并自查正文完整性。 -- 派发词只带增量,构造细则与条款原文见 `references/dispatch-runbook.md`。 +- 派发词只带增量,⛔ 不整段粘贴卡正文(dev 自读全文与评论);构造细则见 `dispatch-runbook.md`。 - 派发词引卡片的精确断言(schema 臂、判据、原文)一律逐字,⛔ 不释义转述。 - 三分区:裁决(不可重裁)/ PM 机制假设(须实测,鼓励证伪)/ PM 建议的路线(可选,实测优先)。 - 凡我觉得可以这样的一律降到第三区;⛔ 不把假设写成裁决。 @@ -127,7 +126,9 @@ - ⛔ 不砍卡类特有约束:ADR 类 draft-only、tier 推导引用、棘轮实况、释义纪律。 - 无条件条款只住角色文件,冲突时它胜、错了修那里,⛔ 不靠派发词临时覆盖。 - 终报要求随派发词带一句:只收机器可核字段(gates / line_budget / deviations / files_changed)。 -- 派发令恒带 `Writes:` 行:只走 REST 代理、写预算(端点清单)、`mcp_calls` 计数,dev 两数都报。 +- 派发令恒带 `Writes:` 行:PR 只经中继 `pr_create`;评论/标签/正文只经中继写工具;两数都报。 +- ⛔ GitHub MCP 写:`create_pull_request`、`update_pull_request`、`issue_write`、`add_issue_comment` 等。 +- 多仓项目线程不加载仓 `settings.json` deny,此行即唯一防线;两数 = 写预算与 `mcp_calls`。 - 清单、路径、行号在派发那一刻从树上取,⛔ 不从卡片/上次派发/记忆抄。 - 门禁清单取 `dispatch-gates --commands --repo 仓` 逐条跑,退出码先落盘,`--ran` 对账;被拒即手推。 - 点名单是线索不是规格,dev 对实际改动重取补跑;行级断言转述前必须自己重验。 From 684b081ca82692002029b3106e91687722487e5a Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 23 Oct 2026 17:01:34 +0000 Subject: [PATCH 2/2] =?UTF-8?q?docs(pm-dispatch):=20the=20merged=20?= =?UTF-8?q?=E6=B4=BE=E5=8F=91=E8=AF=8D=20line=20keeps=20the=20dev's=20own?= =?UTF-8?q?=20completeness=20check?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Claude Claude-Session: https://claude.ai/code/session_01REirBR5H4pfZ96C61mK6Uj --- .claude/skills/pm-dispatch/references/execution-duties.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.claude/skills/pm-dispatch/references/execution-duties.md b/.claude/skills/pm-dispatch/references/execution-duties.md index 090e7f16f1..a4fda545bb 100644 --- a/.claude/skills/pm-dispatch/references/execution-duties.md +++ b/.claude/skills/pm-dispatch/references/execution-duties.md @@ -118,7 +118,7 @@ - S 机械 `medium`;M `high`(默认);L/XL/`security`/p1/契约复核/四轴分析 `xhigh`;`max` 凭维护者点名。 - 解析顺序、pin 语义与允许名单回退陷阱以 os-dev 定义 frontmatter 注释为权威。 - 分诊 suggestion 行是输入不是决定,不采纳给理由。 -- 派发词只带增量,⛔ 不整段粘贴卡正文(dev 自读全文与评论);构造细则见 `dispatch-runbook.md`。 +- 派发词只带增量,⛔ 不整段贴卡正文;dev 自读全文与评论、自查完整(`dispatch-runbook.md`)。 - 派发词引卡片的精确断言(schema 臂、判据、原文)一律逐字,⛔ 不释义转述。 - 三分区:裁决(不可重裁)/ PM 机制假设(须实测,鼓励证伪)/ PM 建议的路线(可选,实测优先)。 - 凡我觉得可以这样的一律降到第三区;⛔ 不把假设写成裁决。