Skip to contents

做了什么

  • R/engines-registry.R:内部注册表环境 + register_ms_engine(name, mode, engine_class, fit_fn, packages, tags, engine_version, contract_version, certified)(与 ARCH §3.4 九参数逐字一致);match_ms_engine() 字符串糖(解析失败列出全部可用引擎名,A14);S7 泛型 fit_engine / required_pkgs + ms_engines() 治理摘要表;certified 三态硬校验 + non-certified 一次性幂等 warning(信任边界声明:“registered engine code runs with your permissions”)。
  • 第三方扩展路径(.onLoad() 注册)有全路径模拟测试;重复注册失败后注册表行数不变(行为性断言);DESCRIPTION Collate 追加并保持穷尽;CAPABILITY-MATRIX L-H 表同步(新增 register_ms_engine/match_ms_engine/ms_engines 行)。
  • 测试:testthat 750 PASS(本单元 14 test/119 assertion,TDD 先红后绿);docs-sync 绿。

关键决策(契约引用)

  • D9:注册表随包为空(零真实引擎,KL 等属 M1s+);测试用合成引擎。A17:治理三字段缺失即注册失败。A14:对象一等公民 + 字符串糖双路径,warning 幂等共钥(字符串/对象路径按名共钥)。
  • S7 0.2.2 无导出 is_class()/class_parents() → 用 inherits() + 沿 attr(cls,"parent") 走链(与 S7 dispatch 同源字段;终审标注为需回头加固的实现细节,有测试护航)。
  • required_pkgs:注册行权威,未注册对象回退 spec@packages;泛型签名显式 function(engine) S7::S7_dispatch()(对齐 hardhat required_pkgs(x) 无 dots)。

审核(第 1 轮)

REVISE → 条件转 PASS(审核员明示”P1 修复后无需重审全量”)。P1 = vendor 基线失效(见 U-M0-09 devlog,联合修复);P2:第三方注册路径 M0 用测试内模拟(可接受,U-M2-06 补真实 dummy 包端到端);L-H 表”新增三行”实为 1 行拆 2(净 +1,措辞小瑕已纠)。P1 修复经 tools/vendor.sh --check 机械验证(该脚本本身已过审)。

遗留

  • fit_fn 在 M0 仅为分发契约,数据管线 M1/M2 接入;vignettes/extending.Rmd + harness → U-M2-06;真实 dummy 包端到端测试 → U-M2-06。
  • 注册表依赖 S7 私有 attr 走链——S7 升级暴露公开 API 时回头替换。