# Release Ops — Monthly Review SOP

> v1.7.8 落地。每月 1 号 release maintainer review 上月 escape hatch 使用情况。

---

## 月度 Review 流程

每月 1 号（或最近工作日）：

### 1. 查上月 escape hatch 使用次数

```bash
# 替换 <YYYY-MM-01> 为上月 1 号，<YYYY-MM+1-01> 为本月 1 号
jq -s '[.[] | select(.action == "ESCAPE_HATCH_USED" and .timestamp >= "<YYYY-MM-01>" and .timestamp < "<YYYY-MM+1-01>")] | length' \
  scripts/escape-hatch-audit.jsonl
```

### 2. 查历史累计

```bash
# 所有 ESCAPE_HATCH_USED（含 RETROACTIVE baseline）
jq -s '[.[] | select(.action | startswith("ESCAPE_HATCH_USED"))] | length' scripts/escape-hatch-audit.jsonl
```

### 3. 查阻塞次数（防止 hook 沦为摆设）

```bash
# FAILED_NO_ACK = hook 正确阻塞的 publish 尝试，体现 hook 价值
jq -s '[.[] | select(.action == "FAILED_NO_ACK")] | length' scripts/escape-hatch-audit.jsonl
```

---

## 健康阈值

| 月度频率 | 状态 | 行动 |
|---------|------|------|
| 0 次 escape | ✅ 正常 | 流程健康，继续 |
| 1 次 escape | ✅ OK | 紧急情况合理使用，无需 retro |
| 2 次 escape | ⚠️ WARNING | 触发 retro：为何反复 bypass？流程是否过于严格？工具是否有 bug？ |
| ≥3 次 escape | 🚫 BLOCK | maintainer 必须 review + 写 retro doc，下月暂停所有非必要 publish |
| 累计 ≥5 次未 retro | 🚫 hard stop | owner review 流程设计；可能需要重写 hook |

---

## Retro 触发条件 + 输出

触发 retro（≥2 次/月 OR 累计 ≥5 次未 retro）时，maintainer 在 30 天内输出：

```
docs/release-ops/retro-<YYYY-MM>.md

内容包含：
- 本月 escape 使用次数 + 详情（jsonl 引用）
- 每次 escape 的根因分析：
  · 是 pure process fix 合理使用？
  · 是绕过流程偷懒？
  · 是流程设计问题？
  · 是工具 bug？
- 行动项：
  · 流程改进建议（如加 Round 模板加速 reply 撰写）
  · 工具改进建议（如 hook 加智能匹配 ack 文档命名变体）
  · 文化改进建议（如团队内强调 Principle 5）
- 下月跟进：retro 行动项落地状态
```

---

## 流程绕过 + 工具改进案例

### Case 1: v1.7.7 cycle RETROACTIVE baseline

详见 `scripts/escape-hatch-audit.jsonl` 首行（timestamp 2026-05-15T07:00:00Z）。

**情况**: v1.7.7 时点 `check:consumer-ack` hook 尚未实施，协议方直接 npm publish 跳过 Round 2 reply。Principle 5 违规。设备端 audit 时点拉回。

**结果**:
- 协议方 self-reflection（reply §0）
- 设备端建议（escape hatch suggestion doc）
- 协议方 ack + v1.7.8 cycle 同时落地 hook

**baseline 价值**: 让 audit jsonl 起点就有"为何需要 hook"的具体 reference；月度 review 第一次执行时能看到历史教训不是凭空加的。

---

## 配套工具

- Hook 脚本: `scripts/check-consumer-ack.sh`
- Audit log: `scripts/escape-hatch-audit.jsonl`
- Escape spec: `docs/release-ops/escape-hatch-spec.md`
- Contributing 守则: `CONTRIBUTING.md`
- 设备端 catalog: `docs/wire-emit-codes.md` (mirror)

---

## 参考

- 设备端建议原文: `claude-docs/discussions/device-team-suggestion-escape-hatch-telemetry-v1.7.8.md`
- 协议方 PARTIAL ACCEPT 决策: `claude-docs/discussions/protocol-team-ack-of-escape-hatch-suggestion-v1.7.8.md`
- 设备端 final ack: `claude-docs/discussions/device-team-final-ack-v1.7.8.md`
