From 2b1450c438398f8737cd7ba24d0cc8c61bf35381 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 23 Oct 2026 05:08:32 +0000 Subject: [PATCH 1/4] =?UTF-8?q?docs(pm-dispatch):=20a=20project-run=20seat?= =?UTF-8?q?=20form=20beside=20the=20Routine=20form=20=E2=80=94=20the=20sea?= =?UTF-8?q?t=20post=20as=20a=20stub,=20the=20dispatch=20order=20in=20the?= =?UTF-8?q?=20card=20thread,=20event=20wake=20plus=20one=20patrol=20per=20?= =?UTF-8?q?project,=20=E9=A1=B9=E7=9B=AE=E6=80=BB=E7=9B=91=20=E2=86=92=20?= =?UTF-8?q?=E6=80=BB=E7=9B=91=E5=B8=AD?= 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_0178pvZcJjqXL36QzPi1jbSX --- .claude/skills/pm-dispatch/SKILL.md | 12 ++++++------ .../pm-dispatch/references/dispatch-runbook.md | 2 +- .../pm-dispatch/references/execution-duties.md | 4 ++-- .../skills/pm-dispatch/references/lanes/director.md | 2 +- .../skills/pm-dispatch/references/lanes/skills.md | 2 +- .../skills/pm-dispatch/references/rest-channel.md | 2 +- .../skills/pm-dispatch/references/seat-lifecycle.md | 10 +++++----- .../pm-dispatch/references/seat-post-protocol.md | 10 +++++----- 8 files changed, 22 insertions(+), 22 deletions(-) diff --git a/.claude/skills/pm-dispatch/SKILL.md b/.claude/skills/pm-dispatch/SKILL.md index 3ee22d5a10c..4f1137343ce 100644 --- a/.claude/skills/pm-dispatch/SKILL.md +++ b/.claude/skills/pm-dispatch/SKILL.md @@ -30,7 +30,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 - ⛔ 永不代维护者答产品或架构问题;唯一例外是已裁的代裁通道,不得宽于其置信门。 - ⛔ 永不编辑共享检出,一任务一 worktree;⛔ 永不 `git stash`。 - ⛔ 永不在代码 PR 里改 `content/docs/releases/`。 -- ⛔ GitHub 之外永不维护任何跟踪状态;org Project 只是视图,权威层是 issue 正文 + REST。 +- ⛔ GitHub 之外永不维护跟踪状态;看板(org Project)只是视图,权威层是 issue 正文 + REST。 - ⛔ 永不跑版本发布、不合并 Version Packages PR;发布动作的完整清单以 AGENTS.md 为权威。 - ⛔ 未经人工的发布痕迹按事故立案,不代跑补救性发布;机械通道存在不构成授权。 - ⛔ 分诊席永不认领卡、派发 dev 飞或写代码;执行席只在本车道认领,永不改 `domain:*`。 @@ -51,9 +51,9 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 | arg | 含义 | 默认 | |---|---|---| | `triage` | 以分诊座位身份运行(只扫/分类/路由,永不认领) | — | -| ``(如 `spec`、`skills`) | 以该 `domain:*` 车道的执行座位身份运行 | — | +| ``(如 `spec`、`skills`) | 以该 `domain:*` 车道的执行座位身份运行;承办该车道的项目即「车道项目」 | — | | `epic:#` | 以父单 #n 的 epic PM 身份运行(见 `references/seat-lifecycle.md` 〈Epic 子树车道〉) | — | -| `director` | 以项目总监席身份运行(人工召唤;三职与章程见 `references/lanes/director.md`) | — | +| `director` | 以总监席身份运行(人工召唤;所在项目即「总监项目」;三职与章程见 `references/lanes/director.md`) | — | | `label:` | backlog 过滤标签;`label:all` = 全部 open 未认领 | `pm:queue` | | `repo:` | 扫哪个仓的 backlog(单 issue 的落地仓看它自己的 `repo:*` 标签) | `objectstack-ai/objectstack` | | `batch:` | 席位同时在飞的子代理总上限,按 `Agent` 调用、`create_session` 与卡线程计:dev、复核、普查皆计,⛔ 只读不豁免 | 默认 `3`;`n` 的维护者天花板 `5` | @@ -67,8 +67,8 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 - fire = 一次唤醒;fire 到达时上一轮未清空的接续处理,⛔ 不重开、不重排。 - 批 = 一个上下文里读完的 ≤5 张同族卡,是质量单位,⛔ 不是预算。 - 班 = 一个会话的任期,只以交接或惰性回收结束。 -- 入座即建唯一自绑 cron Routine(`create_trigger`,`own_followup`)作默认唤醒;id 记座位贴说明段。 -- 轮末 `send_later` 是可选加速器:在飞 ≤55 分钟,⛔ 不作唯一唤醒;只定下次唤醒,不定轮长。 +- 席位两形:Routine 席与项目席(会话是车道项目的线程);细则见 `references/seat-lifecycle.md`。 +- 项目席唤醒 = PR 订阅事件 + 每项目一个巡查 routine;⛔ 无自绑 cron、无 `send_later` 链。 - 探针先行:fire 的第一动作是一次最便宜的车道盘点查询,⛔ 在它之前不读任何长文本。 - 队列空 + 无在飞 + 无待复核 + 决策箱无新答复 ⇒ 自退。 - 分诊席跑普通直连会话、默认判断档;裁决不在本席,归维护者召唤的总监席。 @@ -271,7 +271,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 - 每问必带推荐项,被 Skip 或长挂即转卡通道,⛔ 不重弹。 - 推送维护者:受管 PR 待批合、决策卡待字、发版、仅其可解之阻 ⇒ 另发 `PushNotification`。 - 一行 ≤200 字,先写动作与编号;每项恰一次,例行进展、刚问刚答与在场即见的不推。 -- 项目总监席:维护者在所在仓召唤 `/pm-dispatch director`;⛔ 无 Routine/cron;未回字 = 不在 = 停。 +- 总监席:维护者在所在仓召唤 `/pm-dispatch director`;⛔ 无 Routine/cron;未回字 = 不在 = 停。 - 总监席档位由维护者按项目人工定,每场记入摘要台账;⛔ 无档位硬门、无免档整理态。 - 总监席是唯一裁决者:决策箱、代裁与一类自裁只出自本席,⛔ 无子代理无自述。 diff --git a/.claude/skills/pm-dispatch/references/dispatch-runbook.md b/.claude/skills/pm-dispatch/references/dispatch-runbook.md index 888d7acac52..c58d420497d 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。 -- 派发令落项目共享目录 `/mnt/project-files/<席位>/dispatch-.md`:线程读不到席位 scratchpad。 +- 派发令由 coordinator 写进卡线程开场消息,⛔ 不落共享目录;卡上派发评论留一行指针。 - 线程开起后第一动作:向席位报告指定推送分支并等待;⛔ 线程不贴认领、不写 assignee。 - 席位按 AGENTS.md 的顺序写 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 a21c3e3ac66..f6733e1104f 100644 --- a/.claude/skills/pm-dispatch/references/execution-duties.md +++ b/.claude/skills/pm-dispatch/references/execution-duties.md @@ -154,8 +154,8 @@ - 收集先扫 GitHub(各模式),标记评论在 = 报告完整;评论与返回消息皆无才进探活/判死。 - 标记两种拼写等效(HTML 注释形、首行 `os-dev-report`);⛔ 永不把没收到失败通知读作还在跑。 - 报告点名 PR ⇒ 会话席当即 `subscribe_pr_activity` 并记座位贴;中继开的 PR 永不自动挂会话。 -- ① 巡检首动作 `list_triggers` 确认 Routine 启用,在飞重挂加速器;唤醒归 Routine,漏挂不断链。 -- ② 在飞期间主巡检间隔 ≤45 分钟,待命期 60–70;节奏维护者明示可改。 +- ① Routine 席巡检首动作 `list_triggers` 确认 Routine 启用;项目席由事件与巡查 routine 唤醒。 +- ② Routine 席在飞期间主巡检间隔 ≤45 分钟,待命期 60–70;节奏维护者明示可改。 - ③ 已派发未回报的 dev 逐个发状态询问;派发后 ~45 分钟无远程产出即到门槛。 - 已有远程分支/PR 不豁免探针。 - ④ 活着 ⇒ 进度与阻塞点;回 no active task; resumed from transcript ⇒ 生前已死,询问即复活。 diff --git a/.claude/skills/pm-dispatch/references/lanes/director.md b/.claude/skills/pm-dispatch/references/lanes/director.md index 6924014b7c3..6406a406d44 100644 --- a/.claude/skills/pm-dispatch/references/lanes/director.md +++ b/.claude/skills/pm-dispatch/references/lanes/director.md @@ -1,4 +1,4 @@ -# 席位章程:项目总监(Project Director) +# 席位章程:总监席(Director Seat) 见 SKILL.md 〈升级与决策〉,⛔ 不复制框架本体;本文是岗位说明,现值状态恒在座位贴。 diff --git a/.claude/skills/pm-dispatch/references/lanes/skills.md b/.claude/skills/pm-dispatch/references/lanes/skills.md index 7a1b6b6845e..487738cfd3f 100644 --- a/.claude/skills/pm-dispatch/references/lanes/skills.md +++ b/.claude/skills/pm-dispatch/references/lanes/skills.md @@ -9,7 +9,7 @@ - 受管面治理执行文件:`.github/CODEOWNERS` 路由半边 + SUBJECT 是受管面本身的门禁/审计脚本。 - 全量判据在 SKILL.md 域车道表;受管面定义与两层分档见 SKILL.md 〈路径分叉〉,⛔ 不另抄。 - QA 管理循环执行归本席;qa-run 记录是协议载体不是工作。 -- 契约复核归派发席席内、决裁勤务归项目总监席(`director.md`);本席保留 skill 与治理文本。 +- 契约复核归派发席席内、决裁勤务归总监席(`director.md`);本席保留 skill 与治理文本。 ## 常设承诺 diff --git a/.claude/skills/pm-dispatch/references/rest-channel.md b/.claude/skills/pm-dispatch/references/rest-channel.md index e2c97743116..9c52fa05e5a 100644 --- a/.claude/skills/pm-dispatch/references/rest-channel.md +++ b/.claude/skills/pm-dispatch/references/rest-channel.md @@ -59,7 +59,7 @@ ## 不可迁移 —— 只有这三件,围着它们排计划;红窗守候规则住 `platform-readings.md` 配额段 1. 语义搜索:`/search/*` 被出口代理按设计拒绝。退路 = REST 列表端点加本地 grep。 -2. Projects field_values:GraphQL-only —— 舰队并不需要它;MCP 服务器端无条件抓它才是漏点。 +2. 看板(org Project)field_values:GraphQL-only,舰队不需要它;MCP 服务端无条件抓它才是漏点。 3. `issue transfer`:issues 端点表无此路由(未实调)⇒ 同为 GraphQL-only;配方住 `platform-readings.md`。 ## 第三桶 —— git 零配额等价物 diff --git a/.claude/skills/pm-dispatch/references/seat-lifecycle.md b/.claude/skills/pm-dispatch/references/seat-lifecycle.md index d8b62ee1475..52959cfadf4 100644 --- a/.claude/skills/pm-dispatch/references/seat-lifecycle.md +++ b/.claude/skills/pm-dispatch/references/seat-lifecycle.md @@ -24,6 +24,8 @@ ## 座位贴协议 - 贴 = 座位(标签 `pm:seat`),正文固定四段现值:当前 PM / 继承台账 / 热文件串行队 / 说明。 +- 项目席的贴是存根,只留他账号要读的;模板见 `seat-post-protocol.md`。 +- 存根外的姿态、台账与轮报住项目;标题、assignee、坐席审计评论与跨账号移交简报照旧。 - 正文只由在任座位 PM 编辑且为权威;标题与 assignee 是派生视图,三者同笔更新。 - 标题只放慢状态,快状态留在说明段。 - 维护者强制接管令取席位、队列、未起工卡与待落地 PR;⛔ 不取在飞卡,由原认领者跟完。 @@ -66,6 +68,7 @@ ## 轮次报告与节奏 - 每轮向维护者打中文轮次报告(chat 通道):issue → 判决 → PR 链接 → 备注的表。 +- 项目席轮报 = 卡线程清单,⛔ 不逐轮发聊天表;五项健康指标进总监项目的每日摘要。 - 报告加升级项、代裁清单(分诊)、awaiting a human merge 项、逐 PR 熔断命中项(无则 none)。 - 报告含 `UNRECOGNISED` 行:对本轮门禁日志 grep `UNRECOGNISED` 逐行照录,`NOT APPLICABLE` 行也在内。 - 健康指标五个:可派发库存(open `pm:queue` 未认领及趋势);决策箱(待维护者数)。 @@ -89,8 +92,5 @@ ## 断粮与跨墙恢复(5 小时用量墙) - 权威的墙信号是失败本身:撞墙报文里的重置时刻在那一刻可得、事前查不到,记下来。 -- 跨墙定时器:拿到重置时刻 ⇒ 一发定点(reset + 缓冲)优先。 -- 没有重置时刻 ⇒ 挂每小时 cron Routine,⛔ 不用 send_later 链。 -- 第一枪成功的 fire 跑恢复后删除 cron;fired 文本照定时器写法纪律。 -- 恢复 playbook 链的是既有规则:逐个探在飞云卡 → 直接验收兜底或 transcript 复活。 -- 随后重挂常规巡检 → 照常跑轮。 +- 恢复 playbook 链既有规则:逐个探在飞云卡 → 直接验收兜底或 transcript 复活 → 照常跑轮。 +- 项目席巡查 routine 每 2–4 小时跑各车道收集步;撞墙只留存根注记,⛔ 无跨墙定时器链。 diff --git a/.claude/skills/pm-dispatch/references/seat-post-protocol.md b/.claude/skills/pm-dispatch/references/seat-post-protocol.md index 1f33a4a9ffe..d311fa31392 100644 --- a/.claude/skills/pm-dispatch/references/seat-post-protocol.md +++ b/.claude/skills/pm-dispatch/references/seat-post-protocol.md @@ -14,6 +14,8 @@ - 当前 PM 段登记三元:GitHub 账号(`get_me` 自查)、会话 ID 或 Routine ID、上任时刻。 - 审计与认领评论的作者字段是平台盖章的硬读数,接管仲裁与活性判定优先用它对账正文。 - 班次叙事 ⛔ 不进贴正文:逐卡状态在卡与 PR 上必填,轮次合计走轮次报告。 +- 存根四项:在座账号与项目 · 上任时刻 · 热文件串行队 · 指针行「姿态台账住项目」。 +- 第五行可选撞墙注记(预计 HH:MM 恢复);存根只在坐席、串行队改、撞墙、移交刷新。 - 接管压缩:接任 PM 把交接的有效内容按四段模板重述为新正文,编辑历史即存档。 - 旧账留在上一版 body revision,审计评论带版本指针(哪一版、何时)。 - 热文件串行队是跨轮跨班次的常设事实:文件 → 有序卡片清单 → 每张卡认领的区域。 @@ -48,16 +50,14 @@ 5. 第 2、3 步由 `node scripts/pm/check-handover.mjs --session=ID --account=LOGIN` 核,退出 0 才写空座正文。 6. 贴正文改 `⏳ vacant` + 台账:前任会话 ID、注销时间、队列快照、串行队、跨车道备忘。 7. 收班简报与审计评论存档;接任指引 = `/pm-dispatch 接手` + 先读座位贴。 -8. `list_triggers` 清点本会话定时器:删入座 Routine,一次性的逐个清理或随移交物转交。 -9. 在飞卡与留跑会话贴里点名(卡号+派发会话 ID);派出的会话离任 PM 自己 `archive_session`。 -10. 向维护者交最终报告。 +8. 在飞卡与留跑会话贴里点名(卡号+派发会话 ID);派出的会话离任 PM 自己 `archive_session`。 +9. 向维护者交最终报告。 ## 座位 Routine 创建 - 由维护者在 claude.ai 的 Routines UI 创建,凭据随 Routine 所挂 repo sources 走。 - Routines UI 并无 GitHub 连接器入口。 -- 会话内 `create_trigger` 的 fresh-session Routine 不挂 repo sources,拿不到 GitHub 工具。 -- 表现为静默零产出;⛔ 不要在会话里 `create_trigger` 出一个座位 Routine 就当它在跑。 +- 会话内 `create_trigger` 的 Routine 拿不到 GitHub 工具、零产出;⛔ 不把它当座位 Routine 在跑。 - 模型不能经 API 钉住,同样在 UI 钉;Routine 继承环境默认模型,环境默认变了它跟着变。 - 创建后先手动 fire 一轮烟测,判据取 GitHub 上的产出:标签写入、审计评论、座位贴编辑。 - ⛔ 不取会话看起来起来了;零产出即技术性失败。 From f81aab8af16fe3fff4b3234d4acf124cd110f076 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 23 Oct 2026 05:14:03 +0000 Subject: [PATCH 2/4] docs(pm-dispatch): the project patrol runs the lanes' standby items, the term seat-lifecycle already defines Co-authored-by: Claude Claude-Session: https://claude.ai/code/session_0178pvZcJjqXL36QzPi1jbSX --- .claude/skills/pm-dispatch/references/seat-lifecycle.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.claude/skills/pm-dispatch/references/seat-lifecycle.md b/.claude/skills/pm-dispatch/references/seat-lifecycle.md index 52959cfadf4..01183f34b53 100644 --- a/.claude/skills/pm-dispatch/references/seat-lifecycle.md +++ b/.claude/skills/pm-dispatch/references/seat-lifecycle.md @@ -93,4 +93,4 @@ - 权威的墙信号是失败本身:撞墙报文里的重置时刻在那一刻可得、事前查不到,记下来。 - 恢复 playbook 链既有规则:逐个探在飞云卡 → 直接验收兜底或 transcript 复活 → 照常跑轮。 -- 项目席巡查 routine 每 2–4 小时跑各车道收集步;撞墙只留存根注记,⛔ 无跨墙定时器链。 +- 项目席巡查 routine 每 2–4 小时跑各车道待命项;撞墙只留存根注记,⛔ 无跨墙定时器链。 From 9700ab9d9a3c395b1090b95da9682bf046238a85 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 23 Oct 2026 11:36:13 +0000 Subject: [PATCH 3/4] =?UTF-8?q?docs(pm-dispatch):=20write=20the=20maintain?= =?UTF-8?q?er's=20batch-4=20rulings=20=E2=80=94=20the=20coordinator=20read?= =?UTF-8?q?s=20a=20card=20thread's=20branch=20at=20spawn=20and=20the=20sea?= =?UTF-8?q?t=20claims=20it=20(no=20probe=20push=20for=20card=20threads),?= =?UTF-8?q?=20and=20a=20direct-session=20seat=20runs=20only=20when=20summo?= =?UTF-8?q?ned?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ruled on the card (batch #4, 1A / 2A): dispatch-runbook 〈卡线程〉 L141–L142 now say the coordinator reads the new thread's branch from its session record and hands it to the seat (the thread reports it only when the coordinator cannot read it), the seat writes assignee, `pm:dispatched` and the `Claim:` naming that branch, and the thread starts once the newest claim names its branch. os-dev.md rule 1 keeps the empty-branch probe push for self-made branches and exempts card threads, whose branch the platform designates and the harness pushes; the two probe lines merge into one so the file stays at its ceiling. SKILL.md's triage-seat line now carries the direct-session rule: summoned only, no self-wake, not resident. Every file keeps its line count; every edited line is at or under 120 bytes. Co-authored-by: Claude Claude-Session: https://claude.ai/code/session_0178pvZcJjqXL36QzPi1jbSX --- .claude/agents/os-dev.md | 4 ++-- .claude/skills/pm-dispatch/SKILL.md | 2 +- .claude/skills/pm-dispatch/references/dispatch-runbook.md | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.claude/agents/os-dev.md b/.claude/agents/os-dev.md index ff89da5314c..991f3e7dc90 100644 --- a/.claude/agents/os-dev.md +++ b/.claude/agents/os-dev.md @@ -27,8 +27,8 @@ model: opus - 认领带 `Resume-from: BRANCH@SHA` ⇒ 从 `origin/BRANCH` 建同名分支续写,先合 `origin/main`。 - ⛔ 永不编辑共享检出(PreToolUse 钩子会拦);修复横跨姊妹仓时一仓一 worktree。 - 动笔前记下基点 `BASE=$(git rev-parse HEAD)`,它是标准条款节里家族规则的锚。 - - 建好分支后的第一个动作是推空分支:任何编辑之前 `git push -u origin `。 - - 它既是认领评论所指分支的落地标记,又是写路由探针(容器凭据不对称)。 + - 建好分支后先推空分支(任何编辑前 `git push -u origin `):落地标记兼写路由探针。 + - 卡线程分支由平台指定、harness 推送,⛔ 不推空分支;探针规则只对自建分支。 - 探针遇 403 ⇒ 停下报 `blocked`,⛔ 不进重试循环;只有网络错误才退避重试。 - Scratchpad 按 issue 隔离:在 scratchpad 目录下建 `issue-/` 子目录,临时文件全写进去。 - 同批 agents 共用一个 scratchpad 目录,自然命名的文件会被彼此静默覆盖。 diff --git a/.claude/skills/pm-dispatch/SKILL.md b/.claude/skills/pm-dispatch/SKILL.md index d2e920b20e3..79f81caddef 100644 --- a/.claude/skills/pm-dispatch/SKILL.md +++ b/.claude/skills/pm-dispatch/SKILL.md @@ -71,7 +71,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 - 项目席唤醒 = PR 订阅事件 + 每项目一个巡查 routine;⛔ 无自绑 cron、无 `send_later` 链。 - 探针先行:fire 的第一动作是一次最便宜的车道盘点查询,⛔ 在它之前不读任何长文本。 - 队列空 + 无在飞 + 无待复核 + 决策箱无新答复 ⇒ 自退。 -- 分诊席跑普通直连会话、默认判断档;裁决不在本席,归维护者召唤的总监席。 +- 分诊席跑直连会话、默认判断档;直连会话按召唤跑,⛔ 无自醒不常驻;裁决归总监席。 - 子代理裁决逐份过转录核验采信。 ## 阶段细则索引 diff --git a/.claude/skills/pm-dispatch/references/dispatch-runbook.md b/.claude/skills/pm-dispatch/references/dispatch-runbook.md index 05aeb034814..0e37be64f57 100644 --- a/.claude/skills/pm-dispatch/references/dispatch-runbook.md +++ b/.claude/skills/pm-dispatch/references/dispatch-runbook.md @@ -138,8 +138,8 @@ - 请 coordinator 开线程附维护者原话消息:它只凭维护者明言设线程的 model 与 effort。 - 席位留认领文本、派发令、契约复核、ACCEPT 与落地;线程实施、开 draft PR、驱动 CI。 - 派发令由 coordinator 写进卡线程开场消息,⛔ 不落共享目录;卡上派发评论留一行指针。 -- 线程开起后第一动作:向席位报告指定推送分支并等待;⛔ 线程不贴认领、不写 assignee。 -- 席位按 AGENTS.md 的顺序写 assignee+`pm:dispatched`,再贴带该 `Branch:` 的认领;之后线程才开工。 +- coordinator 开线程即读线程分支交席位(读不到则线程自报);⛔ 线程不认领、不写 assignee。 +- 席位写 assignee+`pm:dispatched`+带该 `Branch:` 的认领;线程核对最新认领指向本分支方开工。 - 分支约定仍是 `claude/issue--`;线程只能推指定分支是实测平台例外,认领如实写。 - worktree 照建;仓 `.claude/agents` 类型未加载(实测),线程照读 `os-dev.md`。 - 交回:PR 与报告落地后给席位线程发一条消息(PR、head、报告要点);审核期线程不关,接 FAIL。 From f08bab5c742a98a922145efd0a1fffd17294bfef Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 23 Oct 2026 13:18:10 +0000 Subject: [PATCH 4/4] =?UTF-8?q?docs(pm-dispatch):=20the=20deferred=20follo?= =?UTF-8?q?w-up=20now=20that=20coordinator.md=20is=20on=20main=20=E2=80=94?= =?UTF-8?q?=20=E9=A1=B9=E7=9B=AE=E5=8D=8F=E8=B0=83=E8=80=85=20=E2=86=92=20?= =?UTF-8?q?=E5=8D=8F=E8=B0=83=E8=80=85,=20the=20coordinator's=20pointer=20?= =?UTF-8?q?to=20the=20project-seat=20form,=20=E6=B4=BE=E5=8F=91=E4=BB=A4?= =?UTF-8?q?=E5=85=A8=E6=96=87,=20the=20patrol=20line=20names=20the=20stale?= =?UTF-8?q?-premise=20check,=20and=20the=20board=20is=20=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=20in=20cross-repo=20rule=205?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Deferred by the card's own schedule until the coordinator reference landed: its title and SKILL.md's `coordinator` row read 协调者 (the card's naming item); its opening line points at the project-seat form in seat-lifecycle.md, paid in place because the file sits at its ceiling; its candidate line and the runbook's 〈卡线程〉 candidate line say 派发令全文, the word item 2 made stale. From the contract review's boundary flags: the project patrol line names the stale-premise check beside the lanes' standby items, and cross-repo-coordination rule 5 calls the org Project 看板 like the other two naming lines. Every file keeps its line count; every edited prose line is at or under 120 bytes. Co-authored-by: Claude Claude-Session: https://claude.ai/code/session_0178pvZcJjqXL36QzPi1jbSX --- .claude/skills/pm-dispatch/SKILL.md | 2 +- .claude/skills/pm-dispatch/references/coordinator.md | 6 +++--- .../pm-dispatch/references/cross-repo-coordination.md | 2 +- .claude/skills/pm-dispatch/references/dispatch-runbook.md | 2 +- .claude/skills/pm-dispatch/references/seat-lifecycle.md | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.claude/skills/pm-dispatch/SKILL.md b/.claude/skills/pm-dispatch/SKILL.md index 8192f1ddff5..5c7d6cbebb7 100644 --- a/.claude/skills/pm-dispatch/SKILL.md +++ b/.claude/skills/pm-dispatch/SKILL.md @@ -54,7 +54,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 | ``(如 `spec`、`skills`) | 以该 `domain:*` 车道的执行座位身份运行;承办该车道的项目即「车道项目」 | — | | `epic:#` | 以父单 #n 的 epic PM 身份运行(见 `references/seat-lifecycle.md` 〈Epic 子树车道〉) | — | | `director` | 以总监席身份运行(人工召唤;所在项目即「总监项目」;三职与章程见 `references/lanes/director.md`) | — | -| `coordinator` | 以项目协调者身份运行(项目会话:开席位线程与卡线程、跨车道调度;接口见 `references/coordinator.md`) | — | +| `coordinator` | 以协调者身份运行(项目会话:开席位线程与卡线程、跨车道调度;接口见 `references/coordinator.md`) | — | | `label:` | backlog 过滤标签;`label:all` = 全部 open 未认领 | `pm:queue` | | `repo:` | 扫哪个仓的 backlog(单 issue 的落地仓看它自己的 `repo:*` 标签) | `objectstack-ai/objectstack` | | `batch:` | 席位同时在飞的子代理总上限,按 `Agent` 调用、`create_session` 与卡线程计:dev、复核、普查皆计,⛔ 只读不豁免 | 默认 `3`;`n` 的维护者天花板 `5` | diff --git a/.claude/skills/pm-dispatch/references/coordinator.md b/.claude/skills/pm-dispatch/references/coordinator.md index 5d76a8fffd8..06fea74d3f5 100644 --- a/.claude/skills/pm-dispatch/references/coordinator.md +++ b/.claude/skills/pm-dispatch/references/coordinator.md @@ -1,6 +1,6 @@ -# 项目协调者(Project Coordinator) +# 协调者(Coordinator) -项目会话里开席位线程与卡线程、跨车道调度的那一席读本文。 +项目会话里开席位线程与卡线程、跨车道调度的那一席读本文;项目席见 `seat-lifecycle.md`。 它不是 `domain:*` 席:不坐座位贴、不认领卡;席位线程照 SKILL.md 与 `execution-duties.md` 跑循环。 项目指令只写「按仓库规则执行;管 X、Y 车道」;规则住本仓,⛔ 不在项目指令里转贴。 本文只写 coordinator 与席位线程之间的接口,七节各注明读者。 @@ -21,7 +21,7 @@ ## 三、全项目一个上限,p1 先(coordinator 调度读;席位交候选时读) - 卡线程上限全项目一个数,由维护者按项目言明;未言明取各席 `batch` 之和。 -- 席位随时交候选:卡号、优先级、派发令文件、建议 effort;⛔ 不等自己的槽位。 +- 席位随时交候选:卡号、优先级、派发令全文、建议 effort;⛔ 不等自己的槽位。 - coordinator 排队开线程:p1 先于 p2,同级先到先开;满即排队,线程交回或 PR 合入即释放。 - 槽位只算在建的线程:等人(授权批准、决策卡)或等席位复核的卡线程不占槽。 - S 卡的席内子代理只计该席 `batch`,不计本上限。 diff --git a/.claude/skills/pm-dispatch/references/cross-repo-coordination.md b/.claude/skills/pm-dispatch/references/cross-repo-coordination.md index 370393c4740..678a2a69d5d 100644 --- a/.claude/skills/pm-dispatch/references/cross-repo-coordination.md +++ b/.claude/skills/pm-dispatch/references/cross-repo-coordination.md @@ -41,7 +41,7 @@ - 直派的审计评论逐字引用授权指令。 - 多车道仓分诊空缺时,会话型执行 PM 可代扫:只做分诊动作,不跨车道认领,贴上注明。 - 代扫在分诊座位有主时立即停止。 -- 规则 5:一块板不设第二跟踪器:pm 标签就是状态机,org Project 只是维护者的聚合视图。 +- 规则 5:一块板不设第二跟踪器:pm 标签就是状态机,看板(org Project)只是维护者的聚合视图。 - 认领即跟到 MERGED:派发后发现跨车道面(含 spec)不移卡,复核按面定档,未达档借隔离复核。 - 复核记录带 `Implemented-by:`/`Reviewed-by:`;`pm:retriage` 改路由只对未派发卡。 - 转移落对方队列:目标仓立单带 `pm:queue`、出处行与一行可执行判据,依赖用 `Blocked-by:`。 diff --git a/.claude/skills/pm-dispatch/references/dispatch-runbook.md b/.claude/skills/pm-dispatch/references/dispatch-runbook.md index 7df2e22c151..3fa334a3618 100644 --- a/.claude/skills/pm-dispatch/references/dispatch-runbook.md +++ b/.claude/skills/pm-dispatch/references/dispatch-runbook.md @@ -132,7 +132,7 @@ - S 级机械卡留席内 `mode:subagent`:开线程要重新克隆、重读技能与 `os-dev.md`,起步成本不值。 - 披露纪律卡(私密细节不得离开席位会话)也留席内,认领写明;卡线程照计 `batch`。 - 项目的 coordinator 跨席位统一调度卡线程;每席一个线程跑 PM 循环,卡线程即 dev。 -- 席位随时把候选卡交 coordinator,附优先级、派发令文件与建议 effort,⛔ 不等自己的槽位。 +- 席位随时把候选卡交 coordinator,附优先级、派发令全文与建议 effort,⛔ 不等自己的槽位。 - coordinator 按优先级开线程,p1 先;全项目上限由维护者按项目定(`coordinator.md`),满即排队。 - 卡线程交回或其 PR 合入,席位当即告知 coordinator 释放槽位。 - 请 coordinator 开线程附维护者原话消息:它只凭维护者明言设线程的 model 与 effort。 diff --git a/.claude/skills/pm-dispatch/references/seat-lifecycle.md b/.claude/skills/pm-dispatch/references/seat-lifecycle.md index 1d5bba4bd38..5a226eaa587 100644 --- a/.claude/skills/pm-dispatch/references/seat-lifecycle.md +++ b/.claude/skills/pm-dispatch/references/seat-lifecycle.md @@ -92,4 +92,4 @@ - 权威的墙信号是失败本身:撞墙报文里的重置时刻在那一刻可得、事前查不到,记下来。 - 恢复 playbook 链既有规则:逐个探在飞云卡 → 直接验收兜底或 transcript 复活 → 照常跑轮。 -- 项目席巡查 routine 每 2–4 小时跑各车道待命项;撞墙只留存根注记,⛔ 无跨墙定时器链。 +- 项目席巡查 routine 每 2–4 小时跑各车道待命项(含前提过时);撞墙记入存根,⛔ 无 cron 链。