verification-before-completion

其他 社区 @obra
信任分
88/100
兼容 Agent
1
速查档案 只列事实:领域、Agent、信任分、作者、原文章节。装与不装请看下方作者解读。
领域
通用
兼容 Agent
Claude Code
信任分
88 / 100 · 社区维护
作者 / 版本 / 许可
@obra · 未声明 license
安装命令数
1 条

需要注意: 未限定 allowed-tools,默认拥有全部工具权限。

想读作者英文原文? ↓ 滚到正文区切换 · 在 GitHub 查看 ↗

解读由编辑根据原文凝练而成,命令、链接、术语均与作者原文一致;想看完整论述请切到右侧

verification-before-completion 是一条反「自我感觉良好」的纪律:不跑验证就声称完成,是不诚实而非高效。Iron Law:NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE. 如果你没在这条消息里跑过验证命令,就不能声称它过。

设计思路

作者把「完成」当成需要证据的法律陈述。"should pass"、"probably works"、"linter passed so build OK"——这些都是 rationalization,不是 evidence。所有完成宣言都必须挂在「fresh,full 命令的退出码 + 输出」上。

Gate Function

每次声称任何状态 / 表达满意之前,按这五步走:① IDENTIFY:哪条命令能证明这条主张?② RUN:完整跑那条命令(fresh、不省略);③ READ:读完整输出、检 exit code、数失败数;④ VERIFY:输出真的支持你的主张吗?不支持就如实说现状 + 证据;⑤ THEN 才能宣告。跳过任何一步 = 撒谎,不是验证。

常见声称 → 必需证据 → 不充分

  • "Tests pass" → 测试命令输出 0 failures × "上次跑过 / should pass"
  • "Linter clean" → linter 输出 0 errors × "局部检查、推断"
  • "Build succeeds" → build 命令 exit 0 × "linter 过 / log 看着 OK"
  • "Bug fixed" → 跑原始症状的测试且过 × "改了代码、应该好了"
  • "Regression test works" → 红绿循环都验过 × "测试过了一次"
  • "Agent completed" → VCS diff 看到改动 × "agent 自己说 success"
  • "Requirements met" → 逐条 checklist × "测试过了"

Red Flags - STOP

出现这些信号停手:用 "should" / "probably" / "seems to";在验证前说 "Great!" / "Perfect!" / "Done!";准备 commit / push / PR 但没验过;信任 agent 的 success 报告;只做了局部验证;想着「这次破例」;累了想收工;任何含有「成功」语义但没跑验证的措辞

反 Rationalization

"Should work now" → RUN the verification;"I'm confident" → confidence ≠ evidence;"Just this once" → 没有例外;"Linter passed" → linter ≠ compiler;"Agent said success" → 自己独立验;"I'm tired" → 累不是借口;"Partial check is enough" → partial proves nothing;"措辞不一样所以规则不适用" → spirit over letter。

适合谁

  • 任何「完成 → 提 PR / 部署」的关键路径上的最后一道关
  • subagent 流程里要求 subagent 自检的环节
  • 团队希望把「我感觉差不多了」从 vocabulary 里去掉

何时不要用

  • 探索式 prototype,本意就是「先写出来看看」——但即便如此,宣告「跑通了」前也得跑一次

配套

tdd / test-driven-development(验证的 testing 部分)、systematic-debugging(修 bug 的证据流)、receiving-code-review(reviewer 反馈的同款语言纪律)、debugging-with-humility(同主旋律)、ship(落地链路里挂这条 gate)。