Devlog · U-M0-04 引擎注册表 + 契约测试套件(2026-09-28,W3 轮)
Source:vignettes/articles/devlog-2026-09-28-M0-04.qmd
做了什么
-
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()(对齐 hardhatrequired_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 时回头替换。