用途:在依据某项结论行动前,先低成本、诚实地判断该主张是否真实到足以据此行动。做法是把主张交给独立怀疑者,要求他们拿着事实依据去证伪,主张只有在未被推翻时才被信任。输出是每条主张的判定(survived / rejected)及理由,调用方只对已验证条目采取行动。
输入:$claim,即待验证的对象——单条发现、待确认的修复、待压测的结论,或指向一批发现列表的路径以便批量把关。
主要步骤:
-
把每条主张改写为可反驳命题,并附上失败场景,例如把“池里可能有竞态”改成“N 个并发调用者中,超过上限的并发 acquire() 会拿到已借出的连接,两个调用者拿到同一句柄”。同时附上验证者需要的事实依据:文件与行号、diff、复现命令、相关不变量。
-
选择验证面板:数量 N 按出错的代价决定,低风险且易回退用 N=1,默认 N=3,昂贵或不可逆(安全主张、上线判定、大范围迁移)用 N=5,取奇数以避免平票。若主张有多种失败方式,则给每个验证者分配不同视角而非重复同一视角:correctness(正确性)、reproduction(复现)、security(安全)、regression(回归)、measurement(性能主张的度量)。
-
并行运行面板。每个验证者提示必须写明命题并交出事实依据(代码、diff、复现),指定视角,并要求其尝试证伪:无法正面确认时默认 refuted=true,构造反例,能复现就运行复现,读实际代码路径;返回结构化判定 { refuted, confidence, evidence, counterexample? }。原始主张者不得进入验证面板。批量列表时按发现逐条展开,每条内嵌面板。
-
采用失败关闭的计票规则:只有多数验证者未能证伪(refuted=false)时主张才存活,否则拒绝。平票与证据不足一律拒绝;单条带具体反例的高置信度证伪可以压过仅有断言而无证据的多数;死亡、空结果或超时的验证者不算“未能证伪”,需重跑或按拒绝处理。
-
返回幸存项与拒绝台账:survivors 为经过验证、可安全行动的主张及其成立依据;rejections 为每条被证伪的主张及反例,这是一等结果——被拒的发现意味着刚阻止了一次错误修改,被拒的“可安全上线”意味着保住了一道门禁。调用方只对幸存项行动;在“干净判定”用途下,任何拒绝都视为阻塞。
护栏:始终要求验证者“证伪”而非“确认”;不让主张者进入自己的面板;不只传主张文本,要传事实依据;平票、弃权、死掉的验证者都不算存活;对已被机器证明的事实(测试通过、退出码为零)不再重复验证;不隐藏拒绝结果;按风险缩放 N。
何时加载参考:references/verify-patterns.md 提供 Workflow 工具形态(逐发现面板、双视角验证、多数证伪计票、对发现列表批量把关)、各视角的验证者提示模板,以及证据优先于票数的加权规则。需要对多条主张把关或把验证接入阶段技能时加载。
输出契约:报告输入的主张数、每条主张所用的面板(N 与视角)、存活与拒绝情况及每条拒绝的理由或反例;在干净判定用途下给出判定与任何构成阻塞的拒绝;以及调用方应行动的条目(仅幸存项)。