From 90502cd40874f5b14830d16cad3e34f912589ce3 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 28 Oct 2026 14:34:13 +0000 Subject: [PATCH] pm-dispatch(batch): a slot is a running subagent or card thread; waiting PRs occupy none MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SKILL.md `batch:` row: a countable definition — one slot = one subagent (`Agent`, `create_session`) or card thread running now; the report landing releases it; four waiting states (awaiting a human approval, in the merge queue, awaiting CI, awaiting a ruling) occupy none; `⛔ 只读不豁免` stays; p0 points at the `priority:p0` row instead of restating it. - dispatch-runbook 卡线程: hand-back releases the slot at once; the thread stays open through review occupying none; a REWORK patch round occupies one. - execution-duties 候选与批次: `batch` waiting points at the one definition; one new line for the soft ceiling (accepted Tier H PRs awaiting a human approval > 5 ⇒ no new Tier H dispatch), paid by the sub-issue-candidate line whose content lives at L11 + L41–42 and 〈Epic 子树车道〉. - seat-lifecycle 轮次报告: the report carries one fixed line 「在跑 N / batch · 待落地 PR M」, paid by the 坐席 `batch` default line whose content lives in the SKILL.md `batch` row and 收班 L41. Every file stays at its ceiling (319 / 188 / 245 / 96); every edited prose line is ≤120 bytes; the `batch` row is 324 B under the 341 B pin. Co-authored-by: Claude Claude-Session: https://claude.ai/code/session_01QSeKYmhU5KEj1nukYhp1Tg --- .claude/skills/pm-dispatch/SKILL.md | 2 +- .claude/skills/pm-dispatch/references/dispatch-runbook.md | 2 +- .claude/skills/pm-dispatch/references/execution-duties.md | 4 ++-- .claude/skills/pm-dispatch/references/seat-lifecycle.md | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.claude/skills/pm-dispatch/SKILL.md b/.claude/skills/pm-dispatch/SKILL.md index 1d4b28b95f6..a321e2dad4d 100644 --- a/.claude/skills/pm-dispatch/SKILL.md +++ b/.claude/skills/pm-dispatch/SKILL.md @@ -57,7 +57,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 | `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` | +| `batch:` | 运行中槽位的上限:一槽 = 一个正在运行的子代理(`Agent`、`create_session`)或卡线程,报告落地即释放;等人批、在合并队列、等 CI、等裁决四态不占槽;dev、复核、普查皆计,⛔ 只读不豁免;p0 见 `priority:p0` 行 | 默认 `3`;`n` 的维护者天花板 `5` | | `rounds:` | 跑 N 轮后停 | 队列清空为止 | | `mode:subagent` \| `mode:cloud` \| `mode:thread` | 派发后端 | 按卡分流:S+M ⇒ `subagent`,`cloud` 只留 L/XL 等保留面;席位是项目线程时 M 及以上、p1、`security` 一律 `thread` | | `#12 #34 …` | 显式 issue 清单,整体覆盖标签查询 | — | diff --git a/.claude/skills/pm-dispatch/references/dispatch-runbook.md b/.claude/skills/pm-dispatch/references/dispatch-runbook.md index 4828014cf9e..14a3ff8fe25 100644 --- a/.claude/skills/pm-dispatch/references/dispatch-runbook.md +++ b/.claude/skills/pm-dispatch/references/dispatch-runbook.md @@ -134,7 +134,7 @@ - 项目的 coordinator 跨席位统一调度卡线程;每席一个线程跑 PM 循环,卡线程即 dev。 - 席位随时把候选卡交 coordinator,附优先级、派发令全文与建议 effort,⛔ 不等自己的槽位。 - coordinator 按优先级开线程,p1 先;全项目上限由维护者按项目定(`coordinator.md`),满即排队。 -- 卡线程交回或其 PR 合入,席位当即告知 coordinator 释放槽位。 +- 卡线程交回即释放槽位,席位当即告知 coordinator;审核期开着不占槽,REWORK 补丁轮再占一槽。 - 档位与 effort 席位自推导 ⛔ 不等维护者原话:`--tier` 过路径,MANDATORY 即绑;effort 按难度。 - 派发令写两者与推导(`--tier` 行或难度读数),协调者照令开线程;常设原话有则作 `reason:`。 - 席位留认领文本/派发令/契约复核/ACCEPT/落地;线程实施、开 draft PR、驱动 CI 与可合并。 diff --git a/.claude/skills/pm-dispatch/references/execution-duties.md b/.claude/skills/pm-dispatch/references/execution-duties.md index 09b66f83146..6c549005d31 100644 --- a/.claude/skills/pm-dispatch/references/execution-duties.md +++ b/.claude/skills/pm-dispatch/references/execution-duties.md @@ -9,7 +9,6 @@ - 席改标:卡余项实测路径整落本席包树 ⇒ 本席改 `domain:*`,审计评论列路径与新旧标同笔。 - 席改标限未派发卡;带 `needs-user-decision`、open `Blocked-by:` 或 `security` 的 ⛔ 不改,仍问分诊。 - 无分诊审计评论即非候选;例外:sub-issue 承父卡首触,main-red 锚卡见 `landing-operations.md`。 -- 已排队父单的 open sub-issue 自动是候选,`pm:epic` 父单的子树除外。 - 每张候选读全文 + 全部评论,写派发词前做决策复读:评论读到最后一页。 - 维护者裁决逐字引入派发词裁决分区作约束,无则写明无裁决。 - 派发前做前提过时检查,裁决同罪,三面都查:动作面、卡引用面、工作项面。 @@ -18,7 +17,8 @@ - 卡引用面:裁决/卡片点名的每张 issue 逐个读当前 open/closed/assignee。 - 引用读到的现状,⛔ 不引用裁决写作时的描述。 - 工作项面:卡片与分诊评论列的每条工作项逐条对树核验是否仍未完成,⛔ 不对卡核验。 -- `batch` 封顶全部子代理,等待不填槽;同批独立按文件面不相交判,⛔ 不按包、不按 check 名。 +- `batch` 等待不填槽,四态见 SKILL.md 该行;同批独立按文件面不相交判,⛔ 不按包或 check 名。 +- 软顶:本席已验收等人批的 Tier H PR 逾 5 ⇒ 停派 Tier H,S/非受管照常,轮报列积压;两周复测。 - single-writer 路径 = `SINGLE_CLAIM_PATHS` 所枚举;共享其它路径是普通并发,后落地方解冲突。 - 第 N 单派发前读 `scripts/pm/os-verify-lock.sh --status`:到达深度 ≥ `LOCK_DEPTH_HOLD`(= 2)即等。 - 到达深度 = `queue N:` 行数 + 1(待派 dev 的运行算作到达);`state:` holder 与 `parked` 行不计。 diff --git a/.claude/skills/pm-dispatch/references/seat-lifecycle.md b/.claude/skills/pm-dispatch/references/seat-lifecycle.md index e0fec56be07..c46ac410db0 100644 --- a/.claude/skills/pm-dispatch/references/seat-lifecycle.md +++ b/.claude/skills/pm-dispatch/references/seat-lifecycle.md @@ -12,7 +12,6 @@ - 总监席多场并行、无在任者:读数一、二与自退对它不成立;`domain:*` 席互斥照旧。 - 同 session 的 subagent dev 认领不触发自退,甄别靠分支。 - 收班简报是前任不再写的显式声明,是释放标记不是锁:简报即最新事件 ⇒ 立即坐席。 -- 坐席从 `batch` 默认 3 起步;前任口径(串行、N、「不开新卡」)维护者对本会话重述才生效。 - 维护者明示召唤是仲裁:有简报径直坐席;无简报才走保守确认,确认终止即坐席。 - 互斥清 ⇒ fetch 后 SKILL.md、阶段 references、本席章程的最新触碰 sha 走 `git-history.mjs touch`。 - 异于上一开轮标记即先重读;留开轮标记(session ID + fire 时刻 + 该触碰,注明重读)再跑轮。 @@ -68,6 +67,7 @@ - 每轮向维护者打中文轮次报告(chat 通道):issue → 判决 → PR 链接 → 备注的表。 - 项目席轮报 = 卡线程清单,⛔ 不逐轮发聊天表;五项健康指标进总监席的每日摘要。 - 报告加升级项、呈裁清单、逐 PR 熔断命中项(无则 none),与已落 PR 48h 内开出的跟进 PR 数。 +- 报告恒带一行「在跑 N / batch · 待落地 PR M」:N 只计运行中的槽,M 计四态等待的 PR。 - 与产品提交占比:已合提交不触 `.claude/` `AGENTS.md` `scripts/pm` 门禁脚本 `.github/workflows` 者。 - 产品提交占比连续多轮偏低 ⇒ 席位报维护者。 - 报告含 `UNRECOGNISED` 行:对本轮门禁日志 grep `UNRECOGNISED` 逐行照录,`NOT APPLICABLE` 行也在内。