## Management Wave 编排策略

> 本文件定义 Management Wave 的编排流程——按依赖图分波执行元数据管理。

### 核心理念

**Management 处理缺陷报告的元数据，不碰代码。**

所有策略仅操作报告文本和元数据，不调用 Grep/Read/find_definition 等代码工具。目标是进入报告生成前，最大化减少无效噪音并校准报告质量。

### 依赖图

```
deduplication（必须先执行）
     │
     ├─→ scope-validation ──────┐
     ├─→ noise-filter ──────────┤  并行执行（dedup 之后）
     └─→ severity-calibration ──┘
     │
     └─→ defect-clustering（最后执行，在存活缺陷上）
```

### 主任务职责（Orchestrator）

#### 1. 恢复上下文

1. 读取 `<输出目录>/.draft-03-validation/manifest.json`（获取 promoted 缺陷列表）
2. 按需读取 `.draft-03-validation/<defect_id>.md`（获取 promoted 缺陷的验证详情）
3. 创建 `<输出目录>/.draft-04-management/` 目录
4. 写入 `<输出目录>/.draft-04-management/manifest.json` 初始版本：
```json
{
  "version": 1,
  "stage": "management",
  "status": "in_progress",
  "waves": {
    "deduplication": {"status": "pending", "output_file": "deduplication.md"},
    "scope-validation": {"status": "pending", "output_file": "scope-validation.md"},
    "noise-filter": {"status": "pending", "output_file": "noise-filter.md"},
    "severity-calibration": {"status": "pending", "output_file": "severity-calibration.md"},
    "defect-clustering": {"status": "pending", "output_file": "defect-clustering.md"}
  },
  "surviving_defects": [],
  "clusters": [],
  "summary": {
    "input_defects": 0,
    "surviving_defects": 0,
    "dedup_removed": 0,
    "scope_removed": 0,
    "noise_removed": 0,
    "severity_changed": 0,
    "clusters_found": 0
  }
}
```

#### 2. Wave 1：deduplication（必须先执行）

1. 从 Validation Manifest 获取所有 promoted 缺陷列表及其详情
2. 拉起 Agent 子任务，传入**子任务执行模板**并填充：
   - `<strategy_name>`：deduplication
   - `<defect_list>`：所有 promoted 缺陷的 JSON 摘要列表
   - `<prev_wave_result>`：无（第一个 Wave）
3. 等待子任务完成
4. 从子任务输出中提取去重结果，更新 `manifest.json`：
   - `waves.deduplication.status: "completed"`
   - 将重复缺陷从后续输入中移除
5. 更新 TodoWrite

#### 3. Wave 2（可并行）：scope-validation + noise-filter + severity-calibration

1. 从 Wave 1 结果获取去重后的存活缺陷列表
2. 拉起 1-3 个 Agent 子任务（可并行），每个传入：
   - `<strategy_name>`：scope-validation / noise-filter / severity-calibration
   - `<defect_list>`：Wave 1 存活缺陷列表
   - `<prev_wave_result>`：Wave 1 的去重结果摘要
3. 等待所有子任务完成
4. 合并结果，更新 `manifest.json`：
   - 各 wave 条目 `status: "completed"`
   - scope-validation / noise-filter 判定为过滤的缺陷标记移除
   - severity-calibration 的调整记录到 surviving_defects
5. 任一策略判定为"过滤"，该缺陷移除（severity-calibration 的降级不算过滤）
6. 更新 TodoWrite

#### 4. Wave 3：defect-clustering（最后执行）

1. 从 Wave 2 结果获取最终存活缺陷列表
2. 拉起 Agent 子任务：
   - `<strategy_name>`：defect-clustering
   - `<defect_list>`：Wave 2 后的存活缺陷列表
   - `<prev_wave_result>`：Wave 2 的过滤/调整结果摘要
3. 等待子任务完成
4. 更新 `manifest.json`：
   - `waves.defect-clustering.status: "completed"`
   - 将聚类结果写入 `clusters` 数组
   - 将 `cluster_id` 写入各 `surviving_defects` 条目
5. 更新 TodoWrite

#### 5. 汇总

1. 合并所有 Wave 结果到 `surviving_defects` 和 `clusters`
2. 统计 `summary`（各策略移除/调整数量）
3. 设置 `manifest.json` 的 `status: "completed"`

### 子任务执行模板

---

## 角色
你是一个缺陷管理专家，处理缺陷报告的元数据，不碰代码。

## 输入
- **管理策略**：`<strategy_name>`
- **缺陷列表**：
```json
<defect_list>
```
- **前序 Wave 结果**：<prev_wave_result>
- **策略文件**：读取 `<skill-root>/references/management/<strategy_name>.md`

## 执行步骤

**⚠️ 必须使用 TodoWrite 工具组织执行流程**

1. 读取 `<skill-root>/references/management/<strategy_name>.md`，按其指引执行
2. 对每个缺陷独立判定
3. **禁止调用代码工具**（Grep/Read/find_definition），仅操作报告文本和元数据

## 输出格式

写入 `<output_dir>/.draft-04-management/<strategy_name>.md`：

```
### <策略名称> 执行结果

| 缺陷 ID | 操作 | 详情 |
|---------|------|------|
| D001 | 保留 | — |
| D003 | 过滤 | 理由... |

**详细说明**：
（每个被过滤/调整/合并/聚类的缺陷的具体理由）
```
