# 十月第二轮开发与审查（2026-10-03）

> 本文保留开发阶段证据。后续公开仓库、完整回归、CI 和包发布状态见
> [0.1.0 发布记录](RELEASE_0.1.0.md)。

## 【1. 总体评价】

信任验证核心与宿主传输/安装职责区分明确。本轮增加受信顶层制品清单差异、本地缓存同步计划两项能力。复用完整且未过期元数据链检查，拒绝用不完整或过期状态给出计划；输入缓存指纹是不可信宿主描述，不代表已验证实际缓存字节。

新功能独立模块实现，离线示例原文件和资料在 `docs/archive/20261003`。未修改签名、根轮换或委托算法。编译器既有迁移警告使用 CI 定向基线，外部最新 CI/公开仓库/Mooncakes 尚未完成，不能声明生产安全认证或赛事验收通过。

## 【2. 算法与性能分析】

- 清单差异：对旧列表建立路径映射，对新列表分类，对旧列表检测删除，期望 O(A+B) 条目操作，空间 O(A+B+变化结果)。描述符及字符串长度参与实际成本，哈希最坏情况不保证常数；max_results 限制每边，max_changes 限制结果。
- 缓存同步：完整清单验证后检查缓存数量，逐项验证路径/非负长度/64 字符小写十六进制指纹并拒绝重复；映射匹配当前、缺失和变化，命名空间内孤立条目仅提示。期望 O(T+C) 条目操作，空间 O(T+C)。编码指纹前先检查字符串长度，防止无意义的大字符串分配。
- 复用受信 TargetFile 与现有有效期校验，不重新解析或重验签名；各客户端按各自宿主可信时间检查。差异仅依据 payload 长度与 SHA-256，custom 变化不算内容变化，宿主负责同一仓库身份。
- 没有实现删除/下载或跨仓库授权：下载计划要继续通过 target 验证，委托目标仍需角色查找，不能从顶层目录推断授权。

## 【3. 具体优化步骤】

1. 新模块共用 top_level_inventory 的完整链、过期、路径和输出预算检查。
2. 以路径映射替代成对查找，避免构造 O(A×B) 比较循环。
3. 逐次检查变化预算；缓存先检测输入数量，再校验和去重。
4. 返回数组访问器复制容器，避免调用方清空报告改变内部状态。
5. 离线场景加入计划检查，并测试缓存类别、错误、过期链与边界。

## 【4. 推荐修改后的代码】

实现见 `client/inventory_diff.mbt`、`client/cache_sync.mbt`，宿主集成见 `examples/offline/main.mbt`。

```text
trusted = client.top_level_inventory(prefix, limit)
local = 宿主对实际缓存字节测得的 path/length/sha256
plan = client.plan_top_level_sync(local)
下载 missing/changed，再验证实际目标字节；宿主决定安装与保留孤立缓存
```

## 【5. 测试建议与已执行证据】

- 正常：同路径内容变化、路径迁移、新缺失缓存、相同指纹、长度不一致。
- 边界：0 变化预算允许完全相同清单、空缓存、命名空间边界、报告副本。
- 异常：重复缓存路径、越界路径、负长度、非法哈希、缓存数量超限、过期客户端、非法 prefix。
- 新增 `client/cache_sync_test.mbt` 3 项在 wasm、wasm-gc、js、native 均通过；完整 JS 测试 118 项通过。全后端 check/build 使用定向警告基线通过；本轮没有重新执行其他三个后端的全部历史测试。
- `moon run examples/offline --target js` 通过，演示桌面/插件/固件/模型/规则及多制品离线流程。
- 后续性能建议：在清单预算内分别测 1/100/1000 制品和冷/热缓存计划；真实网络和安装安全性需要宿主集成测试，本轮不作无依据的安全或速度结论。
