# 07 OPSX 自动串联（阶段 B 完成后立即执行）

> **不要**在阶段 B 结束后停下来问用户「是否继续」或「是否 apply」。  
> 除非用户明确说「只提案」「先别写代码」，或 `.session-state.json` 中 `autoChainOpsx: false`。

## ⚠️ 强制约束（最高优先级，违反即为严重错误）

当 `executionMode=full-chain`（默认）时：

### ❌ 绝对禁止的行为
1. **禁止以任何理由中断流程**：
   - ❌ "Token 使用量较大（XXK tokens）"
   - ❌ "当前会话已经很长"
   - ❌ "上下文压力较大"
   - ❌ "建议开启新的会话"
   - ❌ "建议用户确认后再继续"
   
2. **禁止输出待办清单式收尾**：
   - ❌ "📌 下一步行动"
   - ❌ "后续待办"
   - ❌ "骨架已完成"
   - ❌ "文档已更新，代码待实现"

3. **禁止误解 `docModeOnly`**：
   - ❌ "当前 docModeOnly=true，需要手动解除"
   - ✅ 正确：`phase advance --to impl` **会自动解除** `docModeOnly`，无需等待

### ✅ 正确行为
- **必须执行完整链路**：C (Propose) → D (Apply) → E (Validate + Deliver)
- **唯一合法出口**：`deliver` exit 0
- **Token 预算不是暂停理由**：即使 150K+ tokens，也必须继续执行
- **系统会自动处理预算**：如果真的超限，系统会截断，不是 AI 的责任

### 📋 唯一允许暂停的条件
1. `gate` / `validate` / `deliver` 返回 exit≠0
2. `prd-remediate` 单项 3 次修复失败，需人工裁定
3. 矛盾点池未闭合（提问模式）
4. 用户明确说"只提案"、"先别写代码"
5. `executionMode=staged-confirm` 且当前阶段已完成
6. `.session-state.json` 中 `autoChainOpsx: false`

## 执行模式（读 `.session-state.json`）

| `executionMode` | 行为 |
|-----------------|------|
| `full-chain`（**默认**） | 矛盾点闭合后 **同一回合** C→D→E，直至 `deliver` exit 0 |
| `staged-confirm` | 每阶段完成后输出门禁结果，**等待用户确认**再进下一阶段 |

| `strictCommands` | 行为 |
|------------------|------|
| `true` | 禁止用等价命令替代 NEXT.md 中的 gate/phase 链路（可与 full-chain 组合） |
| `false`（默认） | 按 NEXT.md 执行即可 |

**用户口令**：`执行模式：确认后全链路` → `full-chain`；`执行模式：分阶段确认` → `staged-confirm`；`执行模式：严格命令` → `strictCommands: true`。  
**兼容旧版**：`执行模式：严格SOP，不可替代` → `staged-confirm` + `strictCommands: true`。

## 回合结束条件（唯一合法出口）

- ✅ `gate shipped` 通过 **且** `deliver` exit 0
- ⛔ **禁止**在 `tasks.md` 未全 `- [x]`、pipeline 未 exit 0 时结束回合
- ⛔ **禁止**用「后续待办」「骨架已完成」作为结束语
- 唯一允许暂停：gate exit≠0、prd-remediate 3 次未果、矛盾点未闭合、`staged-confirm` 阶段间确认、`autoChainOpsx=false`

## 输入（本 runId）

| 文件 | 路径 |
|------|------|
| 验收 SSOT | `05-验收清单.md` |
| 需求分析 | `01-需求分析报告.md` |
| 改动清单 | `02-改动点清单.md` |
| 技术草稿 | `04-技术文档草稿.md` |
| UI 参考 | 见下方「UI 路径解析」 |

## UI 路径解析（按优先级）

1. 用户本条消息给出的路径
2. `source/PRD.md` 中的「原型图片目录」行（如 `source/image/` 或 `docs/adi-v232/image/`）
3. `source/image/` 或 `docs/<product>-v<version无点>/image/`（只读扫描）

缺失 UI 时：**仍继续** propose，在 `proposal.md` / `design.md` 注明「UI 待补」。

## 阶段 C — `/opsx-propose`（同一对话回合内）

1. 读仓库根 `.cursor/skills/opsx-superpowers-workflow/SKILL.md` 与 `openspec-propose/SKILL.md`
2. 执行 `/opsx-propose`，输入 = **05 + 04 + 02** + UI
3. change 名建议：`{{PRODUCT}}-v{{VERSION}}-<short-topic>`（kebab-case）
4. `tasks.md` 每条须含 `[AC-XX]`；完成后执行：
   ```bash
   npx sdd-flow-kit propose-remediate --project-root <repo> --run-id <runId> --change <name>
   # 或：gate ac-ready --auto-remediate（演示 1:1 审查 + 自动修复，通过后才可 Apply）
   ```
5. 更新 `06-openspec-提案草稿.md` 与 `.session-state.json`：`status: propose_done`
6. **禁止**在本阶段写 `src/` 或跑 delivery-pipeline
7. 阶段完成后输出：`门禁结果 + 证据文件路径 + 下一步命令`
8. **`executionMode=staged-confirm` 时**：等待用户确认后再进入阶段 D；**`full-chain` 时不得停止**

## 阶段 D — `/opsx-apply`（ac-ready 后执行）

> `full-chain`：**立即**执行，无需再等用户。`staged-confirm`：须先获得用户确认。

1. `npx sdd-flow-kit ensure-opsx --agent cursor -y`（仓库根）
2. `npx sdd-flow-kit phase advance --to impl --change <name>`
3. 写 `.opsx-active-change` = change 名
4. **Apply 前必读**：`source/PRD.md` 对应章节 + `05-验收清单.md`
5. 读并执行：`openspec-apply-change` → `tdd-script`（分层测试策略）→ `openspec-superpowers-pipeline` → `opsx-dev-delivery-pipeline`
6. Red 断言须写死 PRD/05 原文（toast、tooltip、列序等）；test 标题含 `[AC-XX]`，`gate prd-coverage` 校验 `ac-assertion-binding`（见 `docs/QUALITY_TRIAD.md`）
7. `pnpm run opsx:delivery-pipeline -- <change-name>` 直至 **exit 0**

## 阶段 E — PRD 一致性复查 + 脚本语义 diff + 强制验收（交付前）

1. `npx sdd-flow-kit prd-review --project-root <repo> --run-id <runId>`
2. AI 执行 `08-PRD一致性复查提示词.md`：**最细粒度**逐条对比 PRD 原子 × 代码，禁止揣摩/兜底
3. `npx sdd-flow-kit prd-diff --project-root <repo> --run-id <runId>`（脚本 PRD×代码字面量 diff → `09-PRD语义diff报告.md`）
4. 若 diff 失败：`prd-remediate --change <name>` 或 `validate` 内置循环（按 09 调 `/opsx-apply` 修，**每项最多 3 次**、每轮只修剩余失败项，重试附带上次错误代码摘要；仍失败 → 08 待人工确认）
5. `npx sdd-flow-kit gate --project-root <repo> --run-id <runId> --expect prd-coverage`
6. `npx sdd-flow-kit demo-fidelity-review --project-root <repo> --run-id <runId> --change <name> --auto`
   - 对照演示源码 + `16` 合约 vs 生产：字段 / 布局 / 交互；有开放 P0/P1 则修代码再验，直至清零（默认 ≤5 轮）
   - `gate --expect demo-fidelity-ready`；**未清零则 deliver 硬失败**
7. `npx sdd-flow-kit sync-disputes --project-root <repo> --run-id <runId>`
8. 机械串联（AI 步骤完成后）：`npx sdd-flow-kit chain --from validate-done --change <name>`

## 完成判定

- [ ] `gate ac-ready` 通过（P0 已映射）
- [ ] `openspec/changes/<name>/` 下 applyRequires 全部 done
- [ ] `tasks.md` 全部 `- [x]` 且含 `[AC-XX]`
- [ ] `prd-diff` 通过（09 报告无 missing/partial/report_mismatch）
- [ ] `gate prd-coverage` 通过（08 报告 + 语义 diff + 全量 E2E 测试覆盖 + AC 断言绑定）
- [ ] `sync-disputes` 已执行，`gate dispute-closed` 通过（或 `ac-signed` 已含）
- [ ] `validate` 通过（含强制 e2e）
- [ ] `gate ac-signed` 通过
- [ ] delivery-pipeline exit 0
