Task 17 环境预检:Phase I 证据门两处环境耦合缺口(实测记录)
日期:2026-08-22
执行环境:租用 4090 实例(js2.blockelite.cn,Ubuntu 22.04,driver 550.127.05 / CUDA 12.4,16 vCPU / 31G RAM),
uv + Python 3.12.14 / 3.13 对照,源码 = main db2cdfc(git archive tarball 上传)。
对照环境:Windows 11 本机(Python 3.13,numpy 2.4+),main 上 1079/1079 全绿。
发现 1:frozen/slotted 证据门在 Python 3.12 失败(3.13 通过)
- 失败测试(3.12 全部复现,纯核心 venv、无 torch 也复现,排除依赖干扰):
tests/test_selfproof_verifier.py::test_default_policy_and_all_public_records_are_frozen_and_slottedtests/test_selfproof_skill.py::test_policy_receipt_and_assessment_are_frozen_slotted_records(连带 m1_cli / m1_source_provenance / selfproof_replay / selfproof_packaging 中同类失败,共 9 项中 8 项)- 错误形态:
TypeError: super(type, obj): obj must be an instance or subtype of type。 - 归因:Python 3.12.14 与 3.13 的 dataclass frozen/slots 语义差异;Phase I 的冻结哈希与测试语义按 3.13 行为写死。
- 矛盾:
runtime/selfproof-runtime-lock.json与 ADR-0005 声明环境为 Python 3.12, 而证据门语义实际只在 3.13 成立——锁与环境语义自相矛盾。
发现 2:linear_probe byte-determinism 哈希是平台耦合的
tests/test_linear_probe.py::test_linear_probe_is_byte_deterministic_and_immutable在 Linux(3.12/3.13、numpy 2.4.x/2.5.2 均试过)失败,Windows 本机通过。- 错误形态:
EXPECTED_TOY_MODEL_HASH不匹配(toy 模型哈希 Linux=96bc5d…,冻结值=15d6d1…)。 - 归因:数值路径受平台/BLAS 差异影响;"byte deterministic" 实为"同平台确定性",跨平台不成立。
- 影响:在租用 Linux 实例上运行 Phase I 证据链时该门必红;跨平台 replay 的"独立读回" 也会被此门阻断。
附带发现 3:phase2-selfproof extra 未 pin torch,解析到 cu130
pyproject.toml的phase2-selfproof经 lerobot 0.6.1 拉到torch 2.11.0+cu130; 实例 driver 550(CUDA 12.4)下torch.cuda.is_available() == False。- 修正:从 pytorch cu128 索引强制重装 torch(进行中)。运行时锁声明的 cu128 需要 在 extra 中显式 pin,否则每次安装可能解析到更新 CUDA 构建。
建议处置(待业务所有者决定,不自行修门)
- 锁口径二选一:runtime lock 改 Python 3.13(与证据门语义一致),或修 dataclass 用法兼容 3.12;
- byte-determinism 门改为"平台内确定性 + 记录平台指纹",或将 EXPECTED_TOY_MODEL_HASH 按平台分档;
phase2-selfproofextra 显式 pin torch 的 cu128 构建。- 在上述决定前,Task 17 只执行 A1/A5 范围内的环境与数据动作;任何触发这两道门的正式证据运行暂停。
本记录只陈述实测事实,不构成对 Phase I 既有证据的推翻;1070/1079 在 Linux 通过, 9 项失败全部归因于上述两处环境耦合 + 无其他独立缺陷。