Skip to content

Latest commit

 

History

History
13 lines (7 loc) · 2.27 KB

File metadata and controls

13 lines (7 loc) · 2.27 KB

完整发行包安装布局与原工具锁路径绑定

对应 OpenSpec 5.3,正式安装未完成。

清单 1.2 的归档声明 install_tree_sha256;1.0/1.1 仍可解析,但不能以缺失字段猜测完整安装布局,raw 不声明完整树。当前 schema 支持三个版本,前一版本独立保留。绑定在已有工具/平台/版本/来源/入口/bundle 身份之上,要求锁入口精确为 <完整树摘要>.bundle/<包内入口>,可选锁 bundle 根精确为同一目录加显式包内根;空包内根指向内容寻址目录本身。锁路径不同就拒绝,不修改原锁。

inspect_distribution_layout 先验证冻结原包、入口和完整归档树,再核对整个安装树摘要及可选 bundle 子树。投影核验后只移动字节所有权并恢复原路径,完整树再次核对;没有 bundle 的归档也保留并核验整树。只读 DistributionLayout 返回完整树、精确入口/bundle 根及原锁/清单字节摘要;不授予来源批准或执行权限,不联网或写安装目录。

新增布局契约先因 API 缺失编译失败。实施后 5 项包/布局、14 项清单、23 项安装观察、8 项制品身份、5 项 crate 边界,共 55 项通过。固定 ZIP 的启动器、委托库、空目录和兄弟目录均保留。布局实际发布到本机临时缓存后,使用原工具锁调用既有 verify_locked_artifacts,入口摘要/基础可执行位与 bundle 摘要均匹配,锁未重写。另验证空包内根、没有 bundle 的完整包、错入口/根拒绝;即使为错误完整树摘要重新构造相符锁路径,bundle 外文件内容不符也返回 bundle_digest_mismatch,不能只验子树放过剩余内容。

schema 5 正例/7 反例验证旧版兼容、完整树/空根/无 bundle、缺/零/非法完整树摘要、旧版越界字段和 raw 非法树。all-target Clippy -D warnings 已通过;后续加强错误码断言后重跑该契约。

本轮实际发布/制品核验仅在本机 macOS 上执行。定位相符不证明清单可信、工具真的可启动或运行时/规则覆盖完整。正式 CLI 预览尚未输出这份完整布局,apply 不调用它安装;可信来源、实际下载、raw 定位及运行时安装、恢复/平台/宿主验收仍未完成,5.3 不勾选。全 workspace 未运行。