---
name: phaseflow
description: "项目分步总控。基于 design_doc 和 control_doc 推进 phase/work unit；phase = work unit，每个 phase 可是 feature、issue 或 bug fix；总控读取 Gateflow 的 Gate Order 和 Gate State Machine，自己完成 preflight 和 goal confirmation，然后按固定 gate 顺序派发 Agent 完成具体 plan/implementation/review/fix，裁决结果、更新 control_doc、追踪 residual risk。"
---

# Phaseflow

Phaseflow 是项目分步总控。定义：`phase = work unit`。一个 phase/work unit 可以是 feature、issue、bug fix 或其它单个可交付开发单元。

Phaseflow 只做总控任务；除总控任务外的具体任务必须交给 Agent 完成。用户只和 phaseflow 总控交互，其它 Agent 都通过
phaseflow handoff。

## Inputs

推荐调用：

```text
$phaseflow design_doc=docs/host/design.md control_doc=docs/host/implementation-control.md
```

也接受位置参数：

```text
$phaseflow docs/host/design.md docs/host/implementation-control.md
```

- `design_doc`：设计真源，用于裁决目标、边界、架构、契约、非目标和 review finding。
- `control_doc`：总控真源，用于读取当前 phase/work unit、状态、artifact、commit/PR 信息、residual risks 和 next entry point。

缺少任一文档、路径不明确或无法读取时，先停下来询问。

## Controller Scope

允许亲自做的总控任务：

- 读取 `control_doc`、`design_doc`、artifact、diff、review 结果；
- 读取 Gateflow 的 `Gate Order` 和 gate 规则；
- 识别当前 phase/work unit、当前 gate、next entry point；
- 执行 preflight；
- 执行 goal confirmation；
- 复述当前目标、非目标、约束、风险和下一步；
- 生成交给 Agent 的任务说明；
- 派发 Agent、等待结果、读取结果；
- 裁决 accepted / rejected / deferred / needs-more-evidence findings；
- 更新 `control_doc` 的状态、artifact、commit hash、PR 信息、finding 裁决、residual risk、next entry point；
- 做 branch/status 检查、创建 accepted local commit、记录验证结果等 gate bookkeeping。

必须交给 Agent 的具体任务：

- code-generation-ready plan；
- implementation；
- fix；
- review / re-review；
- aggregate deepreview；
- PR review / re-review；
- source code、tests、migration、schema、配置、运行时行为或产品功能文档修改。

如果具体任务没有可用 Agent 或职责不清，先停下来报告，不要自己补做。

## Startup

启动后先读取 `control_doc`，再按需要读取 `design_doc`，并读取 Gateflow 的 `Gate Order` 和 `Gate State Machine`。首次回复必须包含：

- 当前 phase/work unit；
- 它属于 feature、issue、bug fix 还是其它可交付单元；
- 当前 gate / next entry point；
- Gateflow `Gate Order` 中下一步对应的 gate；
- 将使用的 Agent 派发协议；
- 将派发给哪个 Agent 做下一步具体任务；
- 将如何使用 `design_doc` 和 `control_doc` 裁决结果；
- blocking open questions（如有）。

## Preflight

任何 discussion、plan、派发或文件修改前，phaseflow 总控先执行与 Gateflow 相同的 preflight：

```text
git branch --show-current
git status --short
```

如果当前 branch 是 `main`、`master`、`develop`、`release/*` 或项目定义的 protected trunk branch，先停下来让用户确认创建
工作分支。若 branch、dirty changes 或 scope ownership 不清，也先停下来问用户。

## Goal Confirmation

进入 Gate Order 的 `plan` 前，phaseflow 总控先完成 goal confirmation：

- 读取 `control_doc`、`design_doc` 和相关代码；
- 从第一性原理判断当前 phase/work unit 是否成立；
- 向用户复述目标、动机、成功信号、非目标、scope boundary；
- 说明直接代码证据；
- 说明本轮不会做的过度设计；
- 列出 blocking open questions（如有）。

用户确认后，phaseflow 才能派发 `plan` gate。目标不成立、范围过大、动机不足或关键约束缺失时，先 discussion，不派发具体任务。

## Agent Dispatch

派发前必须写清：

- 当前 phase/work unit；
- 当前 gate；
- `design_doc` 路径；
- `control_doc` 路径与当前记录版本，以及本 gate 消费的输入 artifact 路径、可取回版本/commit/保存快照与相关裁决摘要；
- Goal Confirmation 中已确认的目标、非目标、success signal 和 scope boundary；
- 从 `control_doc` 提炼出的当前 gate 约束和风险；
- 从 `control_doc` 提炼出的 Slice 切分原则（如有）；
- allowed files/modules；
- expected artifact path；
- required validation；
- stop condition；
- completion report format；
- 禁止 commit、push、PR、merge、进入其它 gate，除非当前任务明确要求。

总控按 gate 交接必需输入，不传无关历史；新 Agent 必须能仅凭 prompt 和所指的文件/版本唯一确定目标：

| Agent gate | 必需的可定位输入与身份 |
| --- | --- |
| plan review | 待审 target plan artifact 的路径/版本，以及已确认 goal 与适用的 Slice 原则。 |
| implementation | 已接受 plan 的路径/批准版本、当前 slice ID/对应章节及完整约束、prerequisite 完成证据。两个草稿并存时必须唯一指向已批准者。 |
| code review / aggregate deepreview | 冻结的代码范围与版本（适用的 base/head、commit 或工作树 diff 身份），以及本 gate 相关的实现/review/validation artifact 来源版本。 |
| fix / re-review | 来源 review 与裁决 artifact 路径/版本、accepted finding IDs、待修版本；re-review 还需已修版本与修复证据。 |
| PR review | repository、PR number、head/base OID 与需审核的 PR 版本；深挖与收尾按 Deepreview 的 PR 版本核对规则。 |

代码审核 handoff 交接 Gateflow 定义的 slice/aggregate/PR 实质职责、既有验证来源版本及适用性或重验范围；
引用未变事实按 Gateflow Artifacts 规则，不重复交接无关历史，也不以旧 pass 替代当前独立判断。

某 gate 的输入尚未产生或版本不可定位时，总控不派发；子 Agent 发现输入缺失、不可访问或身份不符时报告
`blocked` 与缺项，不得选草稿、猜 slice 或自行推进到别的 gate。

Agent/provider 选择与派发协议是两个独立决策。如果用户指定 Agent/provider，就按用户指定；未指定时由 phaseflow 按当前
gate 选择合适 Agent。

派发协议按以下优先级确定：

1. 用户显式要求 `$tmux-agents` / `/tmux-agents` 时，读取并遵循其协议，通过已有 pane 派发；
2. 用户显式要求 `$sub-agents` / `/sub-agents` 时，读取并遵循其协议，通过 runner 子进程派发；
3. 用户未指定派发协议时，默认读取并遵循 `sub-agents`，通过 runner 子进程派发。

协议确定后，当前 phase/work unit 内不得混用或自行切换。默认 runner 不可用或 `sub-agents` 无法执行时，停止并报告
blocker；不得静默回退到 tmux。

总控派发 Agent 后，若有证据表明 Agent 在工作、pane 显示在变化、子进程仍存活或输出文件仍在更新，不得擅自停止该 gate。

并行派发前必须确认 file ownership 不重叠。

## Agent Liveness and Completion

分开记录 Agent 自报的任务状态、派发生命周期和总控的结果验收。Agent 派发后，生命周期默认是 `in-flight`，直到
当前派发协议取得终态证据。耗时长、一次
`wait_idle` 返回、短时间无输出、pane 暂时不变化、或总控主观认为“这个任务不应该这么久”，都不是完成、失败、卡死或中断
Agent 的证据。

runner 子进程路由须遵守 Sub-agents 的 Result Validation：收集托管句柄的进程退出码、runner 结构化终态、stderr、
最终消息和必要 artifact，再由总控裁决结果。final message、artifact 存在或 Agent 自报 `completed` / `blocked` /
`failed` 只是候选任务状态；句柄仍存活时不得视为 gate 返回。即使先看到 final message，随后 runner 收尾退出非零，
也必须按实际终态和证据处理，不能提前推进。

tmux 长驻 CLI 路由按 Tmux-agents 的 pane completion 协议，以 capture 中明确的完成/阻塞/失败证据、artifact 与
validation 核对任务返回；不要求 CLI 进程退出。用户明确要求停止时，先完成相应协议的中止/终态收集，
再记录停止结果。两种路由都必须在总控验收后才能更新 gate。

在 Agent 仍为 `in-flight` 时，phaseflow 不得 clear pane、终止子进程、发送新任务覆盖原任务、重派同一 gate、接管具体任务、
修改 current gate / next entry point、或进入下一个 gate。

如果总控怀疑 Agent 长时间无进展，只能做非破坏性检查：capture pane、读取已有 artifact、或询问 Agent status。status probe
不得改变 Agent 当前任务，不得包含新任务，不得要求 Agent 停止；自报 blocked / failed / completion 只记录为候选任务状态，
仍须按所选协议取得终态证据，未取得时继续等待。

## Slice Principle Handoff

如果 `control_doc` 中有 Slice 切分原则，phaseflow 必须在进入 `plan` gate 前读取并提炼它。不得在 `control_doc`
未定义 Slice 切分原则时编造固定 slice 数量、固定阈值或额外切分规则；此时仅按 Gateflow 的 plan / slice gate 要求执行。

当 `control_doc` 中存在 Slice 切分原则时：

- 派发 `plan` gate 时，必须把 Slice 切分原则作为 planning constraints 写入 Agent 任务说明；
- plan artifact 必须说明 implementation slice 数量、切分依据，以及是否符合该 Slice 切分原则；
- 如果 plan 的 implementation slices 超过 `control_doc` 中定义的建议上限或阈值（例如 3 个），plan artifact 必须说明为什么不能合并或减少；
- 派发 `plan review` gate 时，必须把 `control_doc` 中的 Slice 切分原则和具体阈值（如有）列为 checklist 项；
- 通用 slice 数量、机械切分和 gate 成本审查由 Gateflow / Planreview 规则定义，phaseflow 只负责传递 `control_doc`
  中的项目级覆盖约束，不另行定义额外阈值。

## Gate Order Dispatch

phaseflow 必须读取 Gateflow 中 `Gate Order` 和 `Gate State Machine` 定义，并按其中固定顺序总控当前 phase/work unit。
不要把整个 work unit 交给其它 Agent 启动完整 Gateflow；phaseflow 自己维护 current gate，并逐 gate 派发具体任务。

以读取到的 Gateflow `Gate Order` 为准；方括号内的 fix/re-review 仅在有实际修复时执行：

```text
goal confirmation
-> plan
-> plan review
-> [fix -> re-review]
-> accepted plan commit
-> implementation
-> code review
-> [fix -> re-review]
-> accepted slice commit
-> aggregate deepreview
-> [fix -> re-review]
-> accepted deepreview commit
-> ready-to-open-draft-PR
-> push
-> create draft PR
-> PR review
-> [fix -> re-review]
-> accepted PR review commit
-> push
-> draft-PR-pass
-> final closeout
```

`plan review` gate 必须使用 `planreview` skill；`code review`、`aggregate deepreview` 和 `PR review` gates 必须使用 `deepreview` skill。

`final closeout` gate 在下方 `## Gate: final closeout` 定义。不得把 `draft-PR-pass` 当作 phase/work unit 完成；必须继续执行
`final closeout` gate。

多 slice 时重复：

```text
implementation -> code review -> [fix -> re-review] -> accepted slice commit
```

每次派发 Agent 的任务说明只包含该 gate 所需的信息：

- work unit 名称和类型；
- `design_doc` 路径；
- Goal Confirmation 中已确认的目标、非目标、success signal、scope boundary、约束和风险；`plan` / `plan review` gate
  还必须包含从 `control_doc` 提炼出的 Slice 切分原则（如有）；
- current gate；
- `control_doc` 路径/当前版本与本 gate 消费的 artifact 身份，按上方 Agent Dispatch 表逐项交接；
- allowed files/modules；
- accepted findings（fix / re-review gate）及其来源裁决和待修/已修版本；
- expected artifact path；
- required validation 与适用的证据版本/复用或重验范围；
- stop condition；
- completion report format；
- 禁止 commit、push、PR、merge、进入其它 gate，除非当前 gate 明确要求。

每个 Agent 按所选协议取得终态后，phaseflow 读取 artifact，裁决结果，更新 `control_doc`，再进入下一个 gate。

派发 `plan` / `plan review` gate 时，必须明确说明 Goal Confirmation 是 binding scope contract。plan 不得新增
Goal Confirmation 未确认的目标、验收标准、设计强化或 future-slice work；plan review 必须把 goal drift / scope creep
作为 checklist 项。若发现 confirmed goal 之外的风险或改进机会，只能记录为 residual risk / deferred follow-up /
open question，或停止并要求重新确认 goal。

## Gateflow State Machine Execution

Gateflow 定义通用 gate state machine；phaseflow 负责执行它，并把状态写回 `control_doc`。

用户确认 goal confirmation 后，除非遇到 Gateflow `Gate State Machine` 定义的 stop condition，phaseflow 必须持续按
Gate Order 推进，直到当前 phase/work unit 到达 `final closeout pass`。

每个 gate 完成后，phaseflow 必须立即：

1. 读取 gate artifact / validation / decision；
2. 裁决 findings 和 residual risks；
3. 更新 `control_doc` 中当前 gate 的 artifact、decision、validation、finding 状态和 residual risk；
4. 将 `control_doc` 的 current gate / next entry point 写成 Gate Order 中下一个未完成的适用 gate；
5. 继续执行总控 gate，或派发下一个具体 gate 给 Agent。

所有 review loops 按 Gateflow 的全部通过条件裁决；无需实际 fix 时记录 pass -> 对应 accepted commit，有实际修复才派发
fix -> re-review。真实 blocker、未解决 `needs-more-evidence` 或不足/失效证据保持当前 gate，accepted 列表为空不能放行。
`control_doc` 的 current gate / next entry point 必须表示下一个未完成的适用 gate，而不是刚完成的 gate。不得 invent、skip、
collapse 或 reorder 必需或适用 gates；不执行条件不成立的 fix/re-review 不属于 skip。PR gate chain 必须遵守 Gateflow 状态不变量；`create draft PR`
成功后，`control_doc` 必须进入 `PR review`，不得写成 `draft-PR-pass`。

## Judgment

裁决 plan、review finding、fix scope、defer decision 和 residual risk 时，优先依据：

- `design_doc` 的设计目标；
- `control_doc` 的当前 phase 目标和 success signal；
- 项目内最佳实践；
- 当前 phase 的 scope、约束和非目标；
- 不引入过度设计。

每个 finding 必须裁决为且只裁决为：

- `accepted`
- `rejected-with-reason`
- `deferred-with-owner`
- `needs-more-evidence`

每个裁决必须能说明：为什么这是当前 phase 的最佳实践选择。

## Control Doc Updates

每个关键点都要更新或准备更新 `control_doc`：

- plan review（有修复时含 re-review）通过后：plan artifact、plan review artifacts、accepted plan commit hash；
- 每个 slice commit 后：slice 状态、artifact、review 结论、commit hash、未覆盖项；
- aggregate deepreview（有修复时含 re-review）通过后：aggregate review artifact、accepted deepreview commit hash；
- ready-to-open-draft-PR 前：draft PR readiness、剩余风险、owner、后续 phase/work unit destination；
- final closeout gate：按 `## Gate: final closeout` 写入 draft PR、review、commit、risk、issue、final closeout summary、
  final closeout pass、completion 和 next entry point 状态。

如果 `control_doc` 没有合适位置记录这些内容，先提出具体写入位置或结构。

## Gate: final closeout

`draft-PR-pass` 后，phaseflow 不得直接结束。必须先执行 `final closeout` gate。

`final closeout` 是总控任务，由 phaseflow 自己完成，不派发给 Agent。缺少必须 artifact、issue 状态需要外部授权，或
`control_doc` 没有合适位置记录结果时，停止并询问用户。

`final closeout` gate 必须按顺序完成：

1. 重新读取 `control_doc`，确认当前 phase/work unit、当前 gate、draft PR URL、PR review artifacts、accepted PR review
   commit hash、follow-up push 状态和 next entry point。
2. 读取 review artifacts、实际修复的 fix artifacts 和 finding 裁决记录；如 final closeout summary 尚不存在，由 phaseflow 创建。
3. 汇总 what changed、what was verified、docs updates、finding status、draft PR URL。
4. 执行 residual risk reconciliation：收集所有 remaining risks，确认每项都有 owner 和 destination。
5. 更新 `control_doc`：draft PR URL、PR review artifacts、accepted PR review commit hash、follow-up push 状态、remaining
   risks / owners、final closeout summary、final closeout pass、当前 phase/work unit completed 状态、issue 关联/评论/关闭预期
   （如当前 work unit 是 issue）、next entry point。
6. 如果当前 work unit 是 issue，确认 PR body 已关联 issue、issue closeout comment 已添加，并在 `control_doc` 记录 merge 后是否会通过
   closing keyword 自动关闭。只有项目流程明确要求手动关闭且用户授权时，才手动 close issue。
7. 确认 next entry point 指向用户 merge 当前 PR 后可以直接进入的下一个 phase/work unit。
8. final closeout 输出必须说明：用户 merge 当前 PR 后，应从目标 base branch 拉取最新代码，再用 `control_doc` 的 next
   entry point 启动下一轮 phaseflow。

存在以下任一情况时，不得关闭 phase/work unit 或输出 final closeout pass：

- 缺少必须 artifact；
- accepted finding 没有最终状态；
- residual risk 没有 owner/destination；
- `control_doc` 未记录 draft PR / review / commit / risk / issue / final closeout summary / final closeout pass / completion /
  next entry point 状态；
- issue work unit 的 issue 状态未处理，或处理需要用户授权；
- next entry point 不明确，或没有指向 merge 当前 PR 后可继续进入的下一个 phase/work unit；
- final closeout 输出未说明 merge 当前 PR 后如何从 base branch 和 `control_doc` next entry point 继续下一轮 phaseflow。

## Residual Risk Reconciliation

`final closeout` gate 内必须执行 residual risk reconciliation：

- 收集 final closeout、review artifacts、实际修复的 fix artifacts 和裁决记录中的 residual risks；
- 为仍存在的 residual risk 写入 owner、destination、后续 phase/work unit、issue 或 user decision；
- 删除已 close 的 residual risk；
- 对已解决但尚未 close 的 residual risk，关闭或标记已解决；
- 如果当前 work unit 是 issue，确认 issue 已关联 draft PR、已有 closeout comment，并记录 merge 后关闭预期；只有项目流程明确要求手动关闭且用户授权时，才手动 close issue；
- 确认 next entry point 指向用户 merge 当前 PR 后可以直接进入的下一个 phase/work unit。

存在没有 owner/destination 的 residual risk 时，不得关闭 phase/work unit。

## Resume

每次 resume、上下文压缩后继续、Agent 返回、review loop 结束、进入新 gate 或准备修改文件前，先恢复状态：

- 重新读取或确认 `control_doc` 中的当前 phase/work unit；
- 确认 current gate 和 next entry point 指向 Gate Order 中下一个未完成的适用 gate，而不是刚完成的 gate；
- 判断下一步是总控任务还是具体任务；
- 总控任务自己做并写回 `control_doc`；
- 具体任务派发给 Agent。
