结果(全部实测数字)
- vendor 体积:22 crates / 970 文件——未压缩 10,674,351 B、tar 13,832,192 B、xz 1,125,136 B ≈ 1.07 MiB(xz 版本敏感 ±0.1%,漂移门设容差;未压缩/tar 两口径逐字节可复现)≫ 低于 CRAN 5 MB 指导线 → 依赖预算不触发收缩(ADR 0002)。
-
offline / CRAN 模式:
CARGO_NET_OFFLINE=truevendor 构建绿;Makevars vendor.tar.xz 接线 R CMD INSTALL(-j 2 --offline --release+ rust_clean)stable 与 1.71 双工具链全通,安装后library(msuiter)加载 OK。产物不入库,发布期tools/vendor.sh再生成(ADR 0002 §3.3)。 - MSRV 1.71 证明:基线失败——matrixmultiply 0.3.11 声明 rust-version 1.75.0(确切错误已录 ADR 0002 §4.1)→ lock 钉版 0.3.9(不放宽 MSRV)→ 1.71 冷构建 + CRAN 模式全绿。维护约束:Cargo.lock 保持 v3(v4 需 cargo ≥1.78);钉版保护进 CI。
-
twobit 两案裁决:crate 0.2.2(MIT、零运行时依赖、内建大端反 magic 检测、
TwoBitFile::from_buf(&mmap)即Cursor<Mmap>形态)vs 自研 244 行原型——7 条测试:{LE,BE}×{crate,自研}×独立真值逐位 + 双 reader 互检 + 真实 mmap + 坏 magic 拒绝,stable 1.97.1 与 1.71.0 双跑全绿 → 裁决选 crate(ADR 0001;synthesis §4 末条”默认倾向 crate”被证据确认)。实验 crate 入库tools/spike/twobit-spike/(独立[workspace]隔离、无嵌套 .git、.Rbuildignore排除出 R tarball)。 - 依赖预算变化:twobit 0.2.2 入 workspace + catalog manifest(D7 预留位经 ADR 解锁,其余预算不动)。
关键决策(契约引用)
- D7 两案裁决落地;MSRV 1.71 成立(D4/§2,代价 = 一条 lock 钉版);byte-swap/大端验证口径 = 同一逻辑内容的 LE/BE 双布局文件被逐位一致解析(大端主机正确性的可检验代理,BE 夹具为真实字节翻转文件而非开关)。
- 实验中发现的语义修正:UCSC 2bit 索引
nameSize= 1 字节(非 u32)——crate 实现正确、夹具初版有误已修正,留痕 ADR 0001 §3。
验收(【工程】逐条)
ADR ×2 落盘含可复现数据;offline 构建证明;1.71 构建结论明确(含失败路径与钉版);双端逐位测试通过;spike 后 workspace cargo test/clippy/deny 全绿。
审核(3 轮,与 U-M0-01 联合)
终轮 PASS。审核员独立复现全部数字(vendor 三口径、7/7 spike 测试双工具链、CRAN 模式安装);指出并已修:ADR 0002 测试计数笔误(7/7→1 passed)、criterion dev-dep 声明失实(已删,spike 实无 dev-deps)、自研行数三处统一 244、spike 嵌套 .git 已除。
遗留
- rustc 1.71 × Linux/Windows 构建证明 → U-M0-07 CI 矩阵(ADR 0002 §5 显式残留)。
- paste(RUSTSEC-2024-0421,经 extendr-api 传递)复查钩子 → U-M0-08 CONTRIBUTING 升级检查单。
- 本机复现坑:
~/.Renviron注入 conda PATH 使 R 子进程内 cargo 1.92 遮蔽 1.71 工具链(MSRV 验证需R_ENVIRON_USER覆盖 + 工具链 PATH 前置);CI 镜像无此问题(ADR 0002 §4.4)。 - 本单元全部工作未 git commit(等用户指示)。