# W2 增量账本、历史引用与目录回执

W2 把“重新得到相同假名”与“可信复用已验证对象”分开。缓存键绑定项目命名空间、来源域、源字节摘要、对象级身份映射摘要、策略、规则账本和实际运行时；缓存记录状态为 `Converted`，永远不会自动变成 `Reviewed`、`Published` 或 `Acknowledged`。命中时重新检查私有记录、源身份归属、输出文件、审计文件、权限、链接数和摘要；缺失、篡改或绑定冲突会失败关闭。

私有库由 `tools/store_admin.py migrate --store 旧库 --destination 迁移前备份` 迁移。迁移在独占锁内先写出可验证快照，再在 SQLite 事务中创建账本版本标记；未知未来版本拒绝打开。回退只能把迁移前快照恢复到新的受控目录，避免覆盖正在运行的库。缓存不属于备份的身份映射；迁移后缓存缺载荷会明确失效并可用 `cache-invalidate` 或 `cache-cleanup-orphans` 清理，不能把数据库命中当成成功。

历史引用只接受同项目、同来源域和同目标交付域中已重新核验的 `Acknowledged` 对象。记录绑定源 UID、源内容摘要、患者归属、SOP Class、映射 UID、假名、目标对象摘要、审计摘要和回执摘要。仅 `Reserved`、`Converted` 或只有公开 manifest 的对象不会作为历史目标；目标文件删除、替换、错误 SOP Class 或跨域都会阻断引用。

目录目的地通过 `history_outbox.py` 维护不可变 outbox。创建时保存不可变包 ID、目的地身份、授权绑定和逐对象摘要；每次确认都重新读取实际目标文件和审计文件，再写入认证账本状态 `Acknowledged`。丢失回执可以按相同 outbox ID 重建，回执或目标对象被改写则拒绝。该协议只覆盖受控本地目录，不能推导任意远程 PACS 的 exactly-once。

W2 的合成验收见 `docs/evidence/w2-incremental.json` 与 `tools/verify_incremental.py`；它验证重复命中、程序指纹变化、源/归属冲突、缓存篡改、迁移备份与恢复、历史未确认阻断、逐对象回执和目标篡改拒绝。没有真实患者、真实操作者、真实接收方或独立临床审查证据时，发布状态仍保持未授权。

> 文档核对：本文说明已与当前维护代码和实际入口核对；不扩大医疗/生产保证。见[文档账本](DOCUMENTATION_STATUS.zh-CN.md)；正式申报由韩桢本人完成。
