跳转至

附录 E:10 分钟止损 Runbook 库(AI 产品通用)

对“一人团队”而言,Runbook 不是写给别人看的流程文档,而是给未来的你准备的应激脚本:在最焦虑、最缺睡眠、最想“先修一下看看”的 10 分钟里,它逼你做出最保守、最可逆、最能止损的动作。

本附录的原则只有一句话:先止血,后定位;先可逆,后完美。

证据包的统一结构与字段规范见:附录 D:证据包与门禁速查。 指标口径与告警阈值的统一写法见:附录 F:指标字典与告警门禁速查


0. 使用方式(3 条规则)

1) 先建证据包目录,再动生产
任何事故/异常都先创建:reports/YYYY-MM-DD/<change-id>/<change-id> 建议用 rbXX-<slug>inc-<slug>(例如 rb02-cost-spike)。

2) 10 分钟内只做“可逆动作”
优先顺序:功能开关/路由切换/索引别名切换/回退版本集合(version set)> 热修复 > 大改。

3) 复盘的交付物不是“总结”,是“门禁与回归资产”
事故结束后必须把触发样本回写回回归集、把阈值写回门禁 (Admission Gate)、把回退指针写回发布流程,否则同类事故会复发。


1. 统一术语与分级(S0–S3)

级别 定义 触发示例(示例值) 响应时效 谁决定 是否公告
S0 致命:安全/隐私越界、跨租户、资产快速流失、核心服务不可用 跨租户访问命中 > 0;PII 泄露命中 > 0;核心链路成功率 < 90%;成本/小时 > 基线×10 立即(0 分钟) 你(或 Oncall) 必须(15 分钟内给出“已止血/降级”说明)
S1 严重:核心能力显著退化/大量用户无法完成闭环 P95 延迟 > 基线×2;差评率 10 分钟内上升 > 20pp;支付失败率 > 5% 15 分钟内 视情况(有明确降级提示)
S2 高优:局部或非核心能力故障,体验受损但可绕行 特定入口错误率上升;部分工具不可用但有替代路径 4 小时内
S3 一般:瑕疵/告警噪声/可延后 文案/样式;非关键指标轻微波动 下个版本

定级原则: - 宁可升高一级也不要低估:一人团队没有“缓冲带”,低估会让止损窗口消失。 - S0/S1 一律先回滚/降级再分析:把诊断留到血止住之后。


2. 证据包与回滚指针(统一口径)

每个 Runbook 的“证据包要求”都默认包含以下最小集合(详情见 D-evidence-pack.md): - meta.json:事件信息与定级(S0–S3)、责任人、时间线 - version_set.json:事故时刻的版本集合(代码/配置/提示/模型/索引/策略) - rollback_plan.md:回滚/降级动作与触发阈值 - signals/:监控截图/导出的关键指标 - samples/:可复现样本(JSONL/trace_id 列表,脱敏)

建议你在事故开始的 30 秒内执行一次“落盘动作”:

DATE=$(date +%F)
CHG_ID=rb01-quality-regression  # 自行替换
mkdir -p "reports/$DATE/$CHG_ID"/{signals,samples}
printf '{"change_id":"%s","date":"%s","severity":"S?","owner":"me"}\n' "$CHG_ID" "$DATE" \
  > "reports/$DATE/$CHG_ID/meta.json"

3. Runbook 索引表(先查表再执行)

ID 场景 主指标(触发) 守门指标(不得退化) 首要止血动作(默认) 默认回滚指针
RB-01 质量回归(离线门禁失败/线上差评暴涨) 回归通过率/胜率下降;差评率暴涨 错误率、越权/泄露命中 回退 prompt_version/model_version 或关闭开关 上一稳定 version_set
RB-02 成本尖峰(token/tool_calls/缓存穿透) 单位成本/小时消耗异常 成功率、限流误伤率 降级高成本路径 + 限流 + 预算硬闸 上一“成本保守”配置
RB-03 延迟/超时尖峰(TTFT/P95) TTFT/P95 超阈值 成功率、取消/重试风暴 削减链路(关工具/减 top_k/短上下文) 上一“低延迟”配置
RB-04 跨租户越权(AuthZ) 越权命中 > 0(S0) - 维护模式/只读模式 + 全面阻断 上一授权策略版本
RB-05 RAG 污染/检索退化(索引/embedding) 召回相关性下降、空结果率上升 越权/注入命中 索引别名切回上个快照 + 暂停摄入 上一索引快照
RB-06 Prompt 注入/越狱(策略突破) 注入成功率上升/规则绕过 正常通过率、拒答误伤率 启用严格安全模式 + 移除高风险工具 上一安全策略版本
RB-07 工具/第三方依赖故障(支付/邮件/搜索) 下游 5xx/超时 自身 5xx、排队时间 熔断依赖 + 降级路径/备用路由 备用依赖配置
RB-08 计费事故(重复计费/回调重放/退款风暴) 对账差异>0、投诉激增 订单成功率、权益正确率 暂停计费/扣费任务 + 冻结出账 上一计费规则版本
RB-09 评测漂移(Judge 版本变化/基线失效) 同样本分数大幅波动 回归稳定性、Tie 率 冻结发布 + 固定 Judge 版本 + 重建基线 上一可复现基线报告
RB-10 数据管道污染(PII 混入/标签不一致) 校验失败/PII 命中/分布突变 训练/索引口径一致性 停止摄入/训练 + 隔离批次 + 回滚快照 上一数据快照

4. Runbooks(按编号执行)

RB-01:质量回归(离线门禁失败 / 线上差评暴涨)

触发条件(示例阈值)

  • 示例:离线回归主指标(通过率/胜率)低于基线 -2pp,或 judge_gate.py 退出码非 0(阻断级)。
  • 示例:线上负反馈(差评/点踩/一键重试)10 分钟内上升 > 20pp
  • 示例:无证据强答率上升(引用缺失/胡编)且触发投诉。

0–10 分钟动作清单

  • 0:00–1:00 建证据包目录,记录当前 version_set(见 D-evidence-pack.md)。
  • 1:00–3:00 缩小影响面:停止扩量(灰度比例归零)/关闭实验开关。
  • 3:00–6:00 立即回退“最可能的变化点”:prompt_version / model_version / index_version / policy_version(只回退一个主因,避免混淆)。
  • 6:00–8:00 用 3–5 条固定样本做人工验收(黄金链路 + 事故样本)。
  • 8:00–10:00 冻结坏版本:标记不可再次发布;把触发样本写入 samples/

回滚/降级动作(可执行)

  • 关闭开关:FEATURE_X=false(把体验回到上一稳定路径)。
  • 回退版本集合:切回上一稳定 version_set(代码/提示/模型/索引同步回退)。
  • 降级策略:切到“保守模式”(更短上下文、更少工具、更严格拒答)。

证据包要求(必须落盘)

  • 路径:reports/YYYY-MM-DD/<change-id>/<change-id> 建议 rb01-quality-regression
  • 必备:report.baseline.jsonreport.candidate.json(或等价回归报告)、触发样本 JSONL、关键面板截图
  • 参照清单:D-evidence-pack.md

恢复判定

  • 回归门禁恢复通过(退出码为 0),且线上负反馈回到基线波动区间内并稳定 30 分钟。

复盘回写(防复发)

  • 把触发样本升级为阻断级回归;把“退化类型”写入样本标签(幻觉/格式/引用/越权)。
  • 把回退点写成“默认回滚指针”,写入发布说明与 rollback_plan.md

延伸阅读


RB-02:成本尖峰(token / tool_calls / 缓存穿透)

触发条件(示例阈值)

  • 示例:单位时间成本(每分钟/每小时)超过基线 ×5,且持续 5 分钟。
  • 示例:单租户成本超过预算(例如日预算)> 80% 并持续上升。
  • 示例:缓存命中率断崖式下降(穿透)导致成本与延迟同时上升。

0–10 分钟动作清单

  • 0:00–1:00 建证据包目录,导出“成本 Top 租户/入口”列表。
  • 1:00–3:00 判断类型:单点(刷量/死循环)vs 全局(配置变更/缓存失效)。
  • 3:00–5:00 先止血:
  • 单点:封禁 api_key/user_id/tenant_id 或把该租户切到低配策略。
  • 全局:立即切换到“成本保守”路由(更省模型、更少工具、更短上下文)。
  • 5:00–8:00 打开预算硬闸:降低全局并发/提高触发降级阈值(先保命)。
  • 8:00–10:00 抽样 3 条高成本 trace:确认主要耗费来自 tokens、工具重试还是检索/上下文膨胀。

回滚/降级动作(可执行)

  • 路由降级:高成本链路(长上下文/多工具/深检索)默认关闭;只对白名单开启。
  • 配额收紧:按租户/用户设置硬上限(预算耗尽 → 暂停/限流/降级)。
  • 关闭高成本能力:例如“深度分析/多轮自动代理”入口临时下线。

证据包要求(必须落盘)

  • 路径:reports/YYYY-MM-DD/<change-id>/(建议 rb02-cost-spike
  • 必备:成本曲线截图、Top consumers 列表(脱敏)、高成本 trace_id 列表、当时生效的预算与路由配置
  • 参照清单:D-evidence-pack.md

恢复判定

  • 成本回到基线区间(或明确的“降级后目标区间”)并稳定 30 分钟;误伤率可接受。

复盘回写(防复发)

  • 将高成本 trace 的触发模式写入回归与门禁:max_tool_callsmax_iterationsmax_context_tokens
  • 将“预算耗尽后的系统行为”写入计费与产品说明(见 12-billing.md)。

延伸阅读


RB-03:延迟/超时尖峰(TTFT / P95 / 排队)

触发条件(示例阈值)

  • 示例:TTFT(首 token)P95 超过基线 ×2 或绝对值 > 2s
  • 示例:端到端 P95 超过基线 ×1.5 或绝对值 > 10s
  • 示例:超时率/504 比例超过 1% 并持续上升。

0–10 分钟动作清单

  • 0:00–1:00 建证据包目录,固定一条“慢请求”trace_id。
  • 1:00–3:00 识别瓶颈:排队(并发过载)vs 生成(模型慢)vs 工具(外部依赖慢)vs 检索(RAG 慢)。
  • 3:00–6:00 削减链路(只做可逆动作):
  • 关高延迟工具调用(搜索/爬取/外部 API)。
  • 减少检索 top_k、缩短上下文、关闭重排。
  • 降级到更快模型或更短输出策略(保留可用性)。
  • 6:00–8:00 打开过载保护:并发上限/队列上限/超时更激进(宁可拒绝也别拖死)。
  • 8:00–10:00 校验关键路径:黄金链路 3 条手工跑通;确认“取消/重试”不会触发风暴。

回滚/降级动作(可执行)

  • 回退到上一“低延迟”配置:更短上下文、更少工具、更小 top_k。
  • 降级输出:强制结构化短答 + “可继续展开”按钮,减少一次请求生成量。
  • 限流:对长输入/高风险入口更严格(按输入长度分桶)。

证据包要求(必须落盘)

  • 路径:reports/YYYY-MM-DD/<change-id>/(建议 rb03-latency-spike
  • 必备:慢请求 trace 截图/导出、关键指标面板截图、当时的并发/超时/路由配置
  • 参照清单:D-evidence-pack.md

恢复判定

  • P95/超时率回到基线波动区间并稳定 30 分钟;排队长度回落。

复盘回写(防复发)

  • 将“慢请求类型”写入压力样本集与门禁(见 18-evaluation.md 的边界压力样本)。
  • 将降级梯度写成可配置策略(见 16-inference.md)。

延伸阅读


RB-04:跨租户越权(AuthZ)(S0)

触发条件(示例阈值)

  • 示例:任何跨租户访问命中 > 0(日志/告警/用户举报)。
  • 示例:审计发现 tenant_id 过滤缺失或缓存键不含租户信息。

0–10 分钟动作清单

  • 0:00–1:00 建证据包目录,立刻定级 S0。
  • 1:00–2:00 立即止血:进入维护模式或全站只读模式(优先保护数据)。
  • 2:00–5:00 阻断扩散:关闭导出/分享/批量接口;强制重新登录(撤销会话)。
  • 5:00–8:00 最小复现:用两套租户账户复现一次越权路径(记录请求/响应与 trace)。
  • 8:00–10:00 回退策略:回滚授权策略版本/最近相关变更(只回退一个主因),直到复现消失。

回滚/降级动作(可执行)

  • 策略回滚:切回上一 policy_version(新旧并行窗口结束前保持可回滚)。
  • 缓存降级:关闭共享缓存或强制缓存键加入 tenant_id(临时可用,后续补性能)。
  • 功能降级:共享/协作相关功能临时关闭。

证据包要求(必须落盘)

  • 路径:reports/YYYY-MM-DD/<change-id>/(建议 rb04-cross-tenant
  • 必备:复现请求/响应、访问日志抽样、审计事件抽样、当时生效策略版本与变更 diff
  • 参照清单:D-evidence-pack.md

恢复判定

  • 越权复现不可再现;越权探测用例(阻断级)100% 通过;相关告警清零并稳定 24 小时。

复盘回写(防复发)

  • 将越权复现固化为阻断级回归(服务端真实 API)。
  • 强制把 tenant_id 校验写成“服务端硬门槛”(见 11-user.md)。

延伸阅读


RB-05:RAG 污染/检索退化(索引/embedding/version set)

触发条件(示例阈值)

  • 示例:检索相关性/忠实度指标低于基线 -5pp,或空结果率上升 > 10pp
  • 示例:同一问题返回明显无关或被污染内容(含敏感/测试/注入片段)。

0–10 分钟动作清单

  • 0:00–1:00 建证据包目录,抽样 3 条坏案例(question/contexts/answer)。
  • 1:00–3:00 判定污染源:新摄入数据 vs embedding/切分策略变更 vs 索引构建异常。
  • 3:00–6:00 立即回滚索引:把索引别名切回上一稳定快照(index_version 回退)。
  • 6:00–8:00 暂停摄入:停止新文档解析/入库,避免继续污染。
  • 8:00–10:00 复核检索:用坏案例重跑检索,确认召回恢复。

回滚/降级动作(可执行)

  • 索引别名切换:index_current -> index_prev(保留切回指针)。
  • 降级策略:临时禁用 RAG(仅参数模型回答)或切到“只引用可验证来源”的保守模式。
  • 黑名单:对明确污染文档(doc_id/source)临时屏蔽。

证据包要求(必须落盘)

  • 路径:reports/YYYY-MM-DD/<change-id>/(建议 rb05-rag-pollution
  • 必备:坏案例三元组(question/contexts/answer)、索引版本与构建 manifest、变更 diff
  • 参照清单:D-evidence-pack.md

恢复判定

  • 坏案例的召回/答案回到基线;污染源被隔离;索引重建完成并通过门禁后再切回。

复盘回写(防复发)

  • 将污染源规则写入摄入门禁(PII/注入扫描/格式校验),并在 13-data.md 的清洗报告中固化。
  • 将坏案例写入 RAG 回归样本集(见 18-evaluation.md)。

延伸阅读


RB-06:Prompt 注入/越狱(策略突破)

触发条件(示例阈值)

  • 示例:红队样本注入成功率上升,或线上出现“规则绕过”的可复现话术。
  • 示例:敏感输出/系统提示泄露命中 > 0(S0/S1 视场景)。

0–10 分钟动作清单

  • 0:00–1:00 建证据包目录,固定攻击样本与输出(脱敏)。
  • 1:00–3:00 立即止血:开启严格安全模式(更严格拒答、更严格工具调用)。
  • 3:00–6:00 降级能力面:移除高风险工具(写入、导出、外部调用),把系统降为只读/低权限模式。
  • 6:00–8:00 封禁/限流:对攻击源做封禁或强限流(用户/租户/IP/入口)。
  • 8:00–10:00 复跑红队回归:确认攻击样本不再成功;误伤率可接受。

回滚/降级动作(可执行)

  • 策略回滚:切回上一 policy_version / prompt_version(更保守的系统提示与拒答模板)。
  • 工具白名单:把可调用工具收缩到最小集合(只读查询)。
  • 输出降级:对高风险内容仅给“检查清单/问题框架”,不输出具体步骤或细节。

证据包要求(必须落盘)

  • 路径:reports/YYYY-MM-DD/<change-id>/(建议 rb06-injection
  • 必备:攻击样本与输出、命中规则与策略版本、处置动作时间线、回归结果
  • 参照清单:D-evidence-pack.md

恢复判定

  • 攻击样本回归稳定失败(被拒绝/被降级),且正常样本通过率未明显退化。

复盘回写(防复发)

  • 攻击样本进入阻断级回归;把“绕过路径”写入威胁模型与门禁阈值(见 20-governance.md)。

延伸阅读


RB-07:工具/第三方依赖故障(支付/邮件/搜索等)

触发条件(示例阈值)

  • 示例:依赖方 5xx/超时率 > 5% 并持续 5 分钟。
  • 示例:工具调用失败导致任务闭环率下降 > 10pp

0–10 分钟动作清单

  • 0:00–1:00 建证据包目录,确认是单一依赖还是系统性网络问题。
  • 1:00–3:00 熔断依赖:停止调用该工具(避免重试风暴拖垮自己)。
  • 3:00–6:00 启用替代路径:
  • 有备用:切到备用依赖(备用支付通道/备用邮件服务/备用搜索)。
  • 无备用:降级为“可解释的失败”(提示稍后重试/改走手工流程)。
  • 6:00–8:00 限制副作用:关闭会触发大量工具调用的入口(批量/自动代理)。
  • 8:00–10:00 验证:关键链路能完成;失败路径可恢复且不产生重复副作用(重复扣费/重复发信)。

回滚/降级动作(可执行)

  • 工具集合收缩:移除不可用工具(避免模型反复尝试调用)。
  • 入口降级:把依赖强绑定的功能切为“排队/稍后处理”模式。

证据包要求(必须落盘)

  • 路径:reports/YYYY-MM-DD/<change-id>/(建议 rb07-dependency
  • 必备:依赖方错误样本、熔断与切换日志、对用户提示截图
  • 参照清单:D-evidence-pack.md

恢复判定

  • 依赖恢复后可平滑切回主路;熔断解除后错误率稳定。

复盘回写(防复发)

  • 将依赖故障场景写入边界压力样本集与回归;明确“工具不可用时系统应如何降级”。

延伸阅读


RB-08:计费事故(重复计费 / 回调重放 / 退款风暴)

触发条件(示例阈值)

  • 示例:对账差异(账本 vs 支付回调)出现非零,或投诉在 1 小时内 > 3 起。
  • 示例:同一 idempotency_key 出现重复入账,或 webhook 重放导致重复扣费。

0–10 分钟动作清单

  • 0:00–1:00 建证据包目录,定级 S1(严重时 S0)。
  • 1:00–3:00 先止血:暂停扣费/续费/出账任务;必要时隐藏新订阅入口。
  • 3:00–6:00 保护用户:冻结有争议的账单行;对受影响用户先发“临时保护”说明(不争辩)。
  • 6:00–8:00 导出差异清单:按 tenant_idinvoice_idpayment_id 汇总差异。
  • 8:00–10:00 准备纠错动作:冲正/补记/退款的最小脚本与审批口径(不改历史)。

回滚/降级动作(可执行)

  • 回滚计费规则版本(price_version 回退)。
  • 启用更严格幂等:对 webhook 重放按事件 id 去重;冲正也幂等。

证据包要求(必须落盘)

  • 路径:reports/YYYY-MM-DD/<change-id>/(建议 rb08-billing-incident
  • 必备:差异清单、相关事件 id 列表、冲正/补记计划、对用户沟通内容
  • 参照清单:D-evidence-pack.md

恢复判定

  • 新增账单无差异;受影响账单完成冲正/补记/退款;对账可重放且一致。

复盘回写(防复发)

  • 将“回调重放/重试风暴/冲正重算”写入对账回归与门禁(见 12-billing.md)。

延伸阅读


RB-09:评测漂移(Judge 版本变化 / 基线失效)

触发条件(示例阈值)

  • 示例:在无产品改动的情况下,同一回归集的 A/B/Tie 分布大幅变化(例如胜率波动 > 5pp)。
  • 示例:Tie 率显著上升(例如 +10pp),导致门禁无法裁决。
  • 示例:Judge 供应方升级/配置变化后,历史基线报告不可复现。

0–10 分钟动作清单

  • 0:00–1:00 建证据包目录,定级 S2(若影响发布门禁则视为 S1)。
  • 1:00–3:00 冻结发布:评测不可裁决时禁止推进发布(先恢复裁判)。
  • 3:00–6:00 固定 Judge 口径:
  • 固定 judge 模型/版本(或固定配置快照),避免“自动升级”改变裁判。
  • 固定随机种子/采样策略(如有)。
  • 6:00–8:00 重跑小校准集:用一组已知结论样本检查 judge 是否“偏移”。
  • 8:00–10:00 重建基线:在固定 judge 口径后重新生成 report.baseline.json(只在明确接受口径变更时)。

回滚/降级动作(可执行)

  • 回滚到上一可复现 judge 配置/版本;或切回上一基线报告与阈值组合。
  • 临时降级:对关键阻断级样本改为人工复核(短期止损,不可长期依赖)。

证据包要求(必须落盘)

  • 路径:reports/YYYY-MM-DD/<change-id>/(建议 rb09-eval-drift
  • 必备:旧/新 judge 配置对比、校准集结果、旧/新基线报告摘要
  • 参照清单:D-evidence-pack.md

恢复判定

  • 同一回归集在固定口径下可稳定复跑;门禁阈值可裁决且误差在可接受范围。

复盘回写(防复发)

  • 将“judge 版本锁定”写入评测流水线与发布门禁;将校准集纳入固定资产(见 18-evaluation.md)。

延伸阅读


RB-10:数据管道污染(PII 混入 / 标签不一致 / 训练数据泄露)

触发条件(示例阈值)

  • 示例:PII 扫描命中率 > 0(阻断级);或数据校验失败率 > 5%
  • 示例:同一批次数据分布突变(长度/语言/标签比例),超过历史波动区间。
  • 示例:训练/索引输入包含不应进入系统的字段(密钥/支付/合同机密)。

0–10 分钟动作清单

  • 0:00–1:00 建证据包目录,立即暂停摄入/训练/索引构建任务(先断源)。
  • 1:00–3:00 隔离批次:按 batch_id/snapshot_id 标记为不可用,禁止进入下游。
  • 3:00–6:00 回滚快照:把训练/索引指针切回上一 snapshot_id(数据注册表/manifest)。
  • 6:00–8:00 清理污染:若已入库(RAG/数据表),按 batch_id 执行删除或回滚。
  • 8:00–10:00 复跑校验:确认 PII 扫描与 schema 校验恢复 100% 通过。

回滚/降级动作(可执行)

  • 回滚数据处理脚本与配置(config_hash/code_revision 回退)。
  • 回滚数据快照与索引版本;必要时临时停用相关能力(直到数据重新清洗完毕)。

证据包要求(必须落盘)

  • 路径:reports/YYYY-MM-DD/<change-id>/(建议 rb10-data-pipeline
  • 必备:污染样本(脱敏)、校验报告、manifest/指纹、清理日志、回滚指针
  • 参照清单:D-evidence-pack.md

恢复判定

  • 校验全绿;污染批次已隔离;下游训练/索引均指向干净快照;无二次污染。

复盘回写(防复发)

  • 强制“先校验后进入训练/索引”的门禁;把污染样本写入阻断级扫描样本(见 13-data.md20-governance.md)。

延伸阅读


5. Runbook 最小模板(可复制)

把下面模板复制成 ops/runbooks/rb-xx.md,并在每次事故后更新它。字段对齐本书约定:gate/evidence/release/rollback

# RB-XX:<场景标题>

## Gate(触发与门槛)
- 严重级别:S0/S1/S2/S3
- 触发条件(示例阈值):
  - <metric> > <threshold> 持续 <duration>
- 触发样本:<id/trace_id>
- 守门指标(不得退化):
  - <success_rate>, <unauthorized_hits>, <pii_hits> 等关键指标

## 0–10 分钟止损(只做可逆动作)
- 0:00–1:00 建证据包目录:`reports/YYYY-MM-DD/<change-id>/`
- 1:00–3:00 停止扩量/关闭开关:<flag>
- 3:00–6:00 回退版本集合(version set)到:<rollback_pointer>
- 6:00–8:00 验证黄金链路:<steps>
- 8:00–10:00 冻结坏版本 + 记录样本:<where>

## Rollback(回滚/降级动作)
- 开关:<flag>=<safe_value>
- 路由/版本:<prompt_version>/<model_version>/<index_version>/<policy_version>
- 配额/限流:<quota/rate_limit>

## Evidence(证据包要求)
- 目录:`reports/YYYY-MM-DD/<change-id>/`
- 必备文件(参照 `D-evidence-pack.md`):
  - `meta.json``version_set.json``rollback_plan.md`
  - `signals/`(面板截图/导出)
  - `samples/`(JSONL/trace_id,脱敏)

## Release(恢复判定与恢复动作)
- 恢复判定:<metrics back to baseline> 持续 <time>
- 恢复动作:逐步放量(从 <x%> → <y%>),每步观察 <window>

## 复盘回写(让问题不复发)
- 将触发样本加入:回归集/红队集(阻断级)
- 将门禁阈值写入:CI/发布门禁
- 将回滚指针写入:发布说明与文档