GxP 统计计算环境 · Jaime Yan · English

第三部分 — 信任层的九项原则

原则四 — 独立核验,停线即止

双人编程之所以是行业的黄金标准,是有原因的:它不信任一个 数字的构建者来为那个数字担保。两条独立的推导,汇聚到同一 个单元格上,这是一种任何单个再聪明的程序都无法产生的证据 ——因为它排除的不仅是算术错误,还有共同的误解,而后者 是受监管工作中最危险的失效模式。

这条原则是:保留独立性,把比对工业化。在每一次渲染时,以 单元格粒度,用机器把每一个关键输出与一条独立路径相核验—— 而一旦核验失败,产线即停。

单元格级比对真正意味着什么

一个有用的比对器不是文件级的 diff。它按交付物的语义工作:

另一半:锁定参照重放

独立重算检验两条路径在此刻是否一致。锁定重放检验当前 系统是否仍然产出它当时产出的东西。两者缺一不可:只有 重算而没有重放,两条路径可能同步漂移;只有重放而没有重算, 则会把一个错误供奉为经文。两者共同对真相做三角定位—— 一根轴是空间上的(两条路径),一根轴是时间上的(两个时刻)。

锁定参照是一种承诺机制。在交付物被批准的那一刻,系统冻结 产生它的确切输入、代码和环境。从那时起,"已批准的输出" 不再是文件夹里的一个文件;它是一个可寻址的事实,任何未来 的系统都可以拿它对测。采用这种做法的团队会发现一个安静的 好处:对整份报告的回归测试变成一条命令,而对环境升级的 恐惧——R 版本升级、包更新——烟消云散,因为任何行为变化 都会在评审者看到它之前被重放闸门拦下。

停线

核验如果报告了失败却仍放行交付物,那只是建议,不是控制。 工厂原则——继承自制造业质量管理,它曾重建整个产业——是 检查对输出拥有权威:闸门一旦失败,渲染除了一份精确 到单元格的、关于第一个分歧的陈述之外,什么都不产出。

这必须是默认行为,配以升级流程,而不是例外。可以为截止 日期而关闭的"严格模式",是一个焊死在最需要它的那个时刻 的泄压阀。如果团队确实必须在失败之后继续推进,这一行为 应当是响亮的、有记录的、有签名的——一次附了姓名的、 深思熟虑的偏差,而不是晚上十一点勾掉的一个复选框。

停线感觉很昂贵——直到它第一次阻止一个错误的数字到达监管 机构。在那之后,它感觉像是唯一理智的设计。

检验。 问:"今天往输入里注入一个错误值——下一次渲染 会不会停下并指出确切的单元格?有没有人能不留签名痕迹地 绕过它发货?" 如果系统照常继续,或者不匹配报告是一份 无人阅读的日志,那么核验就是一场戏——而带绿色对勾的戏, 比没有对勾还要糟。