Skip to content

[skill] pm-dispatch 增设 epic 子树车道:大任务(父单+子任务批)委托专职 PM,衍生问题三分法管理 #5209

Description

@os-zhuang

背景(维护者 2026-08-04 提出)

现有 pm-dispatch 的分片单位只有两档:整仓分片、domain 车道(#4819,按修复落点的包横向切)。缺一种纵向切法:一个大开发 = 父 issue + 一批 sub-issue,整体委托给一个专职 PM 会话从立项跟到收尾;开发过程中会衍生新问题,需要明确的分流规则,否则要么衍生项没人管(epic 烂尾),要么 epic 无限膨胀吞掉整个仓。

现行机制的两个具体缺口:

  1. 子树没有委托信号:现行规则「已入队父单的 sub-issue 自动成为候选」(round loop step 1)意味着主/域 PM 会和 epic 负责人抢同一批子任务——没有任何标签能表达「这棵子树归某个会话管」。
  2. 衍生问题只有一条笼统出口:out_of_scope_findings + 发现分诊轮管「顺带发现」,但「epic 验收所必需的衍生项」与「触 spec 的衍生项」没有成文去向。

设计(与现有机制组合,不平行)

  • 新参数 epic:#<n>:队列 = 父 issue 子树的 open 未认领 sub-issue,每轮重读子树(衍生任务的吸收机制,零新标签)。
  • 委托信号:父单打新标签 pm:epic + 登记表([PM] 分片分工登记表 — 谁在管哪个仓库的队列 #4604)登记(会话 ID、父单号、声明的文件领地);其它 PM 的候选获取跳过 pm:epic 子树。标签被 step 1 的排除规则和登记表消费,符合「a label exists iff something reads it」。
  • 与 domain 车道组合:epic 内 sub-issue 照常打 domain:*(共享路由信息),但认领权属 epic PM;认领评论照常声明文件面,全局在飞检查照常覆盖——epic 不豁免任何认领纪律。
  • 衍生问题三分法,判据一句话:「不修它,epic 验收过不过得去?」
    1. 不过 → 挂父单 sub-issue,epic PM 下轮自动派;
    2. 过(顺带发现)→ 独立立单进主 backlog(查重先行、finding 分诊纪律照旧),epic 不吸收;
    3. 触 spec/公共契约 → 按跨分片转移协议转主 PM 队列 + Blocked-by:(spec 单一所有者不变)。
      与发现分诊轮的归挂限定(pm-dispatch / os-dev:发现类 issue 纪律——立单前查重、就近归挂 sub-issue、finding 分级与批量分诊出水口 #4949)一致:仅有依赖关系、不属完成范围的,独立立单 + Blocked-by:。
  • 进度视图:epic PM 每轮在父单维护 checklist 汇总评论;决策仍锚在具体 sub-issue(step 8 不变),维护者看父单一个入口。
  • 收尾/僵尸回收:末个 sub-issue 关闭 → 父单总结、关闭、摘标签、登记表注销;登记在册但子树 ~48h 无认领/分支/PR 动静 → 询问一窗后收回。
  • 残余风险如实写进 skill:epic 领地与其它车道的文件相交靠「声明 + 全局在飞检查」防,非机械保证,撞上由合并队列兜底——与 domain 车道同一风险形状。

改动落点

.claude/skills/pm-dispatch/SKILL.md:参数表加 epic:#<n>、one-time setup 加 pm:epic 标签、state model 表加一行、step 1 候选规则加子树排除、Domain lanes 之后新增「Epic 子树车道」一节。docs-only,不需要 changeset(与 #4824/#5174 等 skill 修订先例一致)。

验收

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions