用途
Review Fix Cascade Guard 是一个“遏制防护”技能,位于审查工具的用户选定发现与智能体的 Edit/Write 调用之间。它解决的核心问题是:按行范围修复会重现级联模式——第 1 轮修补被报告的那一行,第 2 轮又暴露出第 1 轮修复所引发的新有效发现。该技能不自动修复,而是重述不变量、枚举兄弟路径、选择最小修复包络,并输出门控状态,由调用方决定是否应用编辑。
何时使用
仅在以下条件同时满足时使用:
- 用户(或 codex-review-cycle)即将应用一个或多个审查发现;
- 每个发现已被 review-scope-guard(或用户手动)分类为 must-fix 或 minimal-hygiene;
- 智能体可以选择对受影响文件调用 Edit/Write。
以下情况不要使用:
- 用户正在起草计划、探索设计或进行与审查无关的普通代码编辑——应使用 vibe-planning-guard 或不使用防护;
- 发现已被分类为 reject-out-of-scope 或 reject-noise——这些发现不会被编辑,防护不会产生有用输出;
- 用户尚未运行审查——没有发现可供包络;
- 智能体正在执行通用重构或功能新增——该技能的 archetype 矩阵针对审查修复遏制校准,而非全新设计。
主要能力
门控状态(gate_status)
Phase 1 输出一个显式 gate_status 枚举,用于门控调用方的修复应用。五个值互斥:
- closed — 不变量已陈述,兄弟路径矩阵已覆盖,修复包络关闭了预测的下一轮发现。调用方可以应用。
- accepted-residual — 不变量已陈述,但包络留下一个已知兄弟路径未修复;用户已通过 AskUserQuestion 明确接受残余。调用方可以应用,残余记录在 Phase 6 注释中。
- invariant-unknown — 不变量无法以路径中立方式陈述。调用方不得直接应用;唯一前进路径是覆盖为 accepted-residual 的转换。
- high-cascade-risk — 不变量已陈述,但 archetype + 矩阵表明修复可能触发包络无法关闭的后续有效发现。调用方不得直接应用;唯一前进路径是覆盖为 accepted-residual 的转换。
- needs-user-decision — 不变量已陈述,但包络选择本身需要用户输入(哪些兄弟路径在本轮范围内)。调用方必须暂停并通过 AskUserQuestion 路由。
覆盖为 accepted-residual 的转换
当用户希望在不可编辑状态下继续时,防护必须运行 AskUserQuestion,在状态改变前引出四个显式字段:记录的残余、用户接受为本轮范围外的表面、承认因路径未覆盖而未运行的检查的验证限制、用户预期 codex 会提出并愿意延期的下一轮攻击。只有四个字段全部记录后,状态才转换为 accepted-residual。转换后需重新运行逐发现门控和 Phase 5.5 批量门控,然后才能进行任何 Edit/Write。
级联 archetype 分类
Phase 2 将发现分类为 7 个 archetype 中的一个或多个(多标签是预期的;矩阵查找选主导项,但记录所有适用项)。这 7 个 archetype 整合了历史上的 13 模式分类法:
- path-coverage — 同一不变量跨多个代码路径或迭代位置。
- state-persistence — 关于变更器路径、持久性、审计和重载的不变量。
- boundary-binding — 检查状态 ≠ 执行状态,或边界所有权混淆。
- identity-contract — 同一实体有多个表示,修复只更新其中一个。
- doc-cascade — 兄弟章节、示例、引用、验证、变更日志描述相关行为,必须一起更新。
- interaction-modality — 面向用户的输入/输出表面出现分歧。
- silent-violation — 代码通过检查或转换,但实际未验证属性。
兄弟路径矩阵
Phase 3 仅使用 Phase 2 中匹配的 archetype 对应的行,构建兄弟路径矩阵。每个条目决定:现在已覆盖、编辑前必须检查、范围外(记录原因)。
修复包络
Phase 4 输出显式包络:包含的表面、排除的表面(附一行原因)、调用方/文档/schema 影响、下一轮风险(一句话预测 codex 最可能说什么)。如果预测的下一轮发现有效且在范围内而包络未关闭它,则包络未完成。
定向验证
Phase 5 要求至少一个针对报告案例的验证项,以及一个针对 Phase 3 中最可能兄弟案例的验证项。当测试过于昂贵时,要求手动验证注释,附确切命令或检查点。
批量协调
Phase 5.5 每轮运行一次,在所有选定发现产生逐发现包络之后、任何 Edit/Write 之前。对组合修复集进行排序、拆分、文档级联去重或暂停,处理共享表面(同一文件区域、同一调用方 schema、同一文档章节、同一测试)的包络。批量产生自己的 <batch_reconciliation> 携带记录,供下一轮消费。
使用方式
与 codex-review-cycle 集成
主要集成目标是 codex-review-cycle,它提供发现、驱动多轮循环,并消费 Phase 6 注释及 <batch_reconciliation> 携带记录到下一轮的 <previous_fixes>。
独立使用
用户在一次性 codex 审查或任何其他发现来源后直接调用防护,仅执行 Phase 0–5 逐发现:返回 gate_status,用户决定是否应用。Phase 5.5 批量协调在单发现时没有第二个消费者,Phase 6 的命名子项携带记录没有下一轮消费它。此模式下将 Phase 5.5 视为建议性(表面重叠检测仍有助于推理多修复集),Phase 6 视为会话注释。Phase 0 的输入脱敏契约在两种模式下都适用。
工作流阶段
- Phase 0 — 捕获选定发现:捕获 codex 标题和建议、Claude 的有效性/范围注释、file 和 line_start、用户选定的范围类别、相关前轮修复注释、相关前轮 <batch_reconciliation> 决策。输入脱敏契约(强制):在存储或回显任何捕获的 codex 标题/建议/前轮修复注释之前,必须自行应用 review-scope-guard SKILL.md §Secret Hygiene 覆盖。
- Phase 1 — 重述不变量:将“第 X 行有错”转换为“属性 P 必须始终成立”。输出 gate_status。
- Phase 2 — 分类级联 archetype。
- Phase 3 — 构建兄弟路径矩阵。
- Phase 4 — 选择修复包络。
- Phase 5 — 添加定向验证。
- Phase 5.5 — 跨选定发现的批量协调。
- Phase 6 — 完成注释。
语言
所有面向用户的输出以用户语言呈现。需翻译:章节标题、技能作者编写的自由文本字段、AskUserQuestion 问题/标题/选项标签/描述字段、覆盖为 accepted-residual 的转换提示。保持原样(不翻译):gate_status 枚举值、archetype 标识符、引用的 Codex 标题和建议字段值、文件路径/git 引用/标识符、携带记录中的 XML 元素名。
适用场景
- 在 codex-review-cycle 内应用用户选定的审查发现;
- 在一次性 Codex 对抗性审查后独立使用;
- 需要遏制按行范围修复引发的级联发现;
- 多发现修复集需要批量协调以避免共享表面冲突。
限制
- 不自动修复,仅输出门控状态和包络;
- 仅适用于已分类为 must-fix 或 minimal-hygiene 的发现;
- 不适用于计划起草、设计探索、普通代码编辑、通用重构或功能新增;
- 独立使用时 Phase 5.5 为建议性,Phase 6 为会话注释;
- 手动回退必须仍产生 Phase 3 兄弟路径矩阵和 Phase 5 验证证据,否则视为绕过而非关闭防护;
- 跳过四字段记录或转换后重新门控是契约违规,会中止修复。
关键设计约束
该技能偏向残余 + 延期而非范围扩展,记录在文件底部的 §Key Design Constraint。