用途:为 MR 生成基于 diff 的验证计划并自行执行,用按区域定制的证据和 revert-test 质量检查证明测试能捕获回归。
主要能力:执行流程为 fetch diff → 按区域分组 → 生成步骤 → 执行 → revert-test → 输出汇总表。先从 MR 获取变更文件列表,用 ripgrep(无 rg 时用 grep)将变更文件分为 Rust、Python、Shell、Grammar、Build/config 等区域;每个非空区域至少生成并运行一个验证步骤(如 Rust 的 cargo build --workspace、cargo build --workspace --all-features、按变更 crate 执行 cargo test -p;Python 的 uv run pytest 定向测试;Shell 的 shellcheck;YAML/JSON 的解析检查),并为输出打上 [E1]、[E2] 等证据标签。随后进行 revert-test 质量检查:先确认工作树干净,否则标记 INCONCLUSIVE;选取一个有对应测试的代表性修复,将其改回缺陷状态运行测试确认失败,再用 git checkout -- <file> 恢复并确认通过;无覆盖测试时标记 INCONCLUSIVE 并建议补测试。最后运行完整测试套件并输出含 Area、Step、Evidence、Result 的汇总表。
使用方式:用于 /fix-pr 第 5 步(Validate)之前、修复任何 MR 之后生成定向验证证据,或需要证明 revert-test 为真实守卫时。带 --post 时通过 gh pr comment 将汇总表发为 PR 评论;从 /fix-pr 调用时结果并入 Gate 3 汇总评论而不单独发布。
限制与失败行为:--scope minor 仅格式化或文档改动、无 diff 可用、或 /fix-pr 传入 --skip-validate 时不应使用。出现 FAIL 时在汇总表中列出并附证据引用;从 /fix-pr 调用会在第 6 步前中止,需修复失败或传 --skip-validate 绕过;独立运行则报告失败并以非零状态退出。INCONCLUSIVE 会报告但不中止流程。退出条件包括 diff 非空、每个检测区域至少一行、每行有真实命令输出的证据引用、至少尝试一次 revert-test 或记录原因、含最终全量测试行、失败时按调用方式中止,以及技能结束后工作树干净。完整测试命令、--scope、--skip-validate 等细节及更多选项暂未提供。