# 课件 02 · 12 步 SOP 手把手

> 时长：90 分钟（讲 40 + 实操 40 + 答 10）
> 受众：所有要提 PR / 跑业务 change 的工程师
> 前置：课件 01

---

## 学习目标

学完本节，你能：
1. 复述 12 步的每一步在干什么
2. 判断"这个改动该走 12 步还是 5 步 micro"
3. 实操跑通一个最简 change 的 Step 0-12
4. 看懂 Verify 报告 / AUDIT_BUNDLE 的关键字段

---

## 1. 为什么是 12 步（10 min）

> 概率乘法第一性：95%^10 = 60%

如果每步 LLM 有 5% 出错，10 步串联只剩 60% 一次过率。
解决方法不是"找更准的 LLM"，而是**每步插入 verify**。

12 步 = 9 步 OpenSpec 基线 + 3 步医疗合规增量（Step 0 / 10 / 12）。

```
Step 0   合规预检               ← 新增（前置）
Step 1   PRD 预检与补全
Step 2   TDD 对齐
Step 3   OpenSpec new/continue
Step 4   Task decomposition
Step 5   Mock 数据生成
Step 6   OpenSpec apply
Step 7   Verify + 修复未实现工件
Step 8   Code review + systematic debugging
Step 9   Mocking 测试与调试闭环
Step 10  合规审查 Gate           ← 新增
Step 11  最终复修（如有合规整改）
Step 12  归档 + 审计冻结          ← 新增审计层
```

---

## 2. 12 步详解（20 min）

逐步过 [研发交付SOP-v2.md](../../研发交付SOP-v2.md)。重点：

### Step 0 · 合规预检（**最容易忽略**）
- Skill：`compliance-precheck`
- 产物：`openspec/changes/<id>/COMPLIANCE_TAG.md`
- **三方签字**：提案人 + Compliance Officer + 技术 Lead
- 不签 → 任何下游 Step 都无效

### Step 6 · 实现（**PHI 必先脱敏**）
- 任何 prompt 含原始 PHI 之前必经 `phi-desensitize` Skill
- 反向映射表存 KMS，受控环境可还原

### Step 10 · 合规 Gate（**异构性强制**）
- Skill：`compliance-review`
- 执行者：Compliance-Agent（**模型必须 ≠ Coder 厂商家族**）
- 检查：PHI 日志泄漏 / 注入面 / 模型 allowlist / 测试数据反演
- 高风险 0 容忍 / 中风险需 owner 签字

### Step 12 · 审计冻结（**6 年 WORM**）
- Skill：`audit-snapshot`
- 产物：`AUDIT_BUNDLE_<id>_<ts>.tar.gz`
  - manifest.json
  - 完整 prompt history（gzip）
  - hashchain.txt（链式 sha256）
  - lineage_graph.json（PRD→Spec→Task→Code→Test→Deploy）

---

## 3. 12 步 vs 5 步 micro · 怎么选（5 min）

**5 步 micro 通道**适用：
- ≤ 2 文件改动
- 仅文档 / 测试加固 / 配置变更
- **不**触及 PHI / 模型路由 / 审计血缘

5 步 = 合规预检 + PRD 摘要 + 实现 + Verify + 审计冻结。

详 [研发交付SOP-v2.2-micro.md](../../研发交付SOP-v2.2-micro.md)。

**怎么自检**：用 `quick-fix` Skill 它会判断 + 路由。

---

## 4. 实操（40 min）

### 4.1 选一个 mini change
建议：把 README 一个错别字改对 → 走 5 步 micro。

### 4.2 跟着 SOP 走

```bash
# Step 0
mkdir -p openspec/changes/fix-readme-typo
cp openspec/templates/COMPLIANCE_TAG.template.md openspec/changes/fix-readme-typo/COMPLIANCE_TAG.md
# 填好 + 自签字（个人 micro 通道 1 方签字 OK）

# Step 1-2 micro: 写简短 PRD 摘要
echo "fix typo in README §5" > openspec/changes/fix-readme-typo/proposal.md

# Step 3 micro: 实现
git checkout -b fix-readme-typo
sed -i '' 's/typo错别字/正确字/g' README.md

# Step 4 micro: verify
bash dryrun_e2e_v2.sh --ci   # 确保没破坏
pytest tests/integration -v  # smoke 测试

# Step 5 micro: 审计冻结（用 audit-snapshot-micro Skill）
# 产物：AUDIT_BUNDLE_fix-readme-typo_<ts>.tar.gz

git add -A && git commit -m "docs: fix typo in README §5"
gh pr create --title "docs: fix typo" --body "micro channel · audit bundle attached"
```

### 4.3 验证 PR 走完合规

- [ ] PR 模板 §"合规自检 5 问" 已填
- [ ] CI 全过（lint + test + dryrun）
- [ ] 1 review approve
- [ ] merge（squash）

---

## 5. 常见反模式（10 min）

| 反模式 | 为什么不行 |
|---|---|
| 跳过 Step 0 直接写代码 | 数据分级未签，下游全无效 |
| Step 6 把含 PHI 的真实数据粘进 prompt | 违反 R1 红线，监管处罚 |
| Step 10 让 Compliance-Agent 用 Coder 同模型 | "自证清白"，漏率高 |
| Step 12 手搓 tar 包不上链 | 审计不可重放 |
| 5 步 micro 通道跑全量 12 步 | 浪费时间，导致团队不愿用 |
| 12 步主通道用 micro 跑 | 触及 PHI / 模型 / 审计就出事 |

---

## 6. 课后作业

1. 选自己工作里下周要做的 1 个 change
2. 判断走 12 步还是 5 步 micro
3. 用 customize.py 创建对应的 openspec/changes/ 目录
4. 在 Discussions 贴 proposal.md 让 maintainer review

---

## 自检

- [ ] 我能复述 12 步每一步在干什么
- [ ] 我能判断给定 change 走 12 步还是 micro
- [ ] 我跑通了一个真实 micro 通道改动
- [ ] 我看懂了 AUDIT_BUNDLE 的关键字段
