第四部分 — 建造工厂:架构与案例
案例研究:一个验证网关
第二个案例直接占据了那个空格:一个验证网关——参考架构的证据层 ——由一个两到三人的数据职能部门作为生产服务运行,并在姊妹论文 (Human-Governed Validation of R Packages for Regulated Statistical Computing)和一篇关于两级验证策略的 PHUSE 论文中得 到记录。它是本书所知的关于证据生成作为一个系统的最深入的公开 案例,而它的数字之所以有教益,恰恰因为它们并不惊人。
组织问题在先
这个网关之所以存在,是因为指导文献留有一个未答的问题:一家完全 外包的生物科技公司——所有 GxP 生产都在供应商处——自己没有经 验证的环境,但申办方的问责并不外包。谁验证什么?什么时候购买验 证比自建能力更便宜?被采纳的答案是:两级策略。第一级,内部 且常驻:基于 riskmetric 的筛查接入包准入 SOP,其工程设计目标是 成本趋近于零,否则它会悄然停止运转。第二级,触发式:完整的函数 级验证,购买或机器辅助,只由角色变化触发——即公司承担起经验证 的 QC 角色的那一刻——而不由包的任何属性触发。
网关本身
第一级以自动采集器运行,把报告中的每一个数字都产出为一条带证据 ID 标签的事实,并遵守一条刚性的起草规则——没有证据 ID,就没 有陈述——缺乏证据的章节被抑制而非注水填充;报告包随附风险 JSON、renv 锁定文件和容器镜像摘要一并交付,使每个镜像都成为一 个自证的环境参照。
第二级是第 6 章那台规格驱动的引擎,已在生产中:带验收准则的有 版本的需求;一个组合了已知答案、蜕变测试、基于性质、模糊与变异 测试的隔离执行沙箱;特征化基线由机器捕获,绝不由 LLM 想象;记 录写入一条防篡改的哈希链;一个可选的本地 LLM 只起草规格的结构, 权限边界以代码强制(十五项边界检查在重放下全部守住,包括一组提 示注入红队测试);而每一个判定结论都由一名具名的人批准。一只每 日金丝雀对框架自身进行自我确认——注入的缺陷必须被捕获,干净的 包必须保持干净——而这只金丝雀事实上确实逮到过一个引擎 bug,这 正是系统在工作。
试点阶段的诚实账本:一个无瑕疵的合成包在四种技术下通过了十一个 用例中的全部十一个,而四个注入缺陷的变体各自未通过其靶向的需求; 对真实 CRAN 包的生产级重放暴露出一个有文档记录的序列化默认值, 不符合所声明的预期用途;变异分数在报告时把流程失败归类为设计 上不可检测而非检出;存活的变异体被标注为等价性未定。这些声明 被刻意划定边界:证明了测试谕示的构造与失败即关闭的治理——而不 是包的质量,不是监管合规,也不是 LLM 的优越性。
这个案例为本书增添了什么
它以证据层三个最难要素的运行中实现,补全了参考架构的证据层:独 立重算(蜕变引擎回答"你的测试会注意到吗?")、锁定参照(哈希 链、可重放),以及受治理的 AI(构造上失败即关闭)。与第一个案例 合在一起——同一个团队在生产中运行第 2–5 层——距离完整的七层 产品剩下的路程是集成,而非发明。那段路程,以及跨越它的生意,是 第五部分的内容。
检验。 问任何验证工具那个金丝雀问题:"这个工具上一次逮 住它自己是什么时候——那份记录在哪里?" 从未公开失败过的工 具,是其失效模式未经检验的工具;那条链上应当含有工具自己的名 字。