一个真实事故:周五工单移到已完成,CI 全绿,周一对账发现结算总额错了。原因是一行标注「修复不稳定测试」的改动,把精确等于九十的断言换成了只要有个值就行,于是零和九百都能过。作者于是做了 Proof of Done for Jira:工单移到完成时自动读取背后的 PR,检查是否合并、CI 是否真跑、改动是否带测试,以及有没有测试被跳过、删除或放松。
🔑 核心要点
三条通往绿色的捷径:跳过测试、删掉测试、把精确断言放宽,CI 一条都看不见。
判断标准是相对变化:宽松断言只有替换了同一个对象的精确断言时才算问题。
拦截时给出文件、行号和测试修改前后的对比,还标出 CI 变绿的那一次提交。
这套思路起源于另一个工具 proof-of-done,专门阻止 AI agent 在测试真通过之前说完成。
💡 金句
“Nobody lied. A developer in a hurry, or an AI agent told to 'make the tests pass', took the shortest road to green.” 译:没人撒谎。一个赶时间的开发者,或者一个被要求让测试通过的 agent,走了通往绿色的最短路径。