fix(release): 收紧分发热路径与事务边界
bat-rust / Build and test Rust (push) Canceled after 0s
bat-rust / Build and test Go API (push) Canceled after 0s

This commit is contained in:
2026-09-12 22:22:11 +08:00
parent f2c20367a6
commit 786b739f99
17 changed files with 835 additions and 124 deletions
+8 -5
View File
@@ -51,11 +51,14 @@ TextUnit scope、source history 和 approved review。worker、TM 复用、人
`localized.degraded`,只读检查不会自动回滚、删除或修复。双 release 的
`release.status/list/distribution/cleanup` 已由 Rust 从既有状态、manifest、文件系统和
CAS/reference 元数据统一生成,Go 仅 typed 转发。CAS repository 的对象文件、引用计数
和 GC 通过跨进程操作锁协调,release-local CAS 引用以 `(release, ordinal)` ownership
记录幂等释放;localized publish/rollback 通过 output-root 单写者锁和事务日志恢复
current、version-state、version 目录。localized release 还写入实际 bytes/BLAKE3 的
`localized-distribution-manifest.json``release.distribution` 使用轻量 metadata 选择,
支持按 destination 对单文件重新校验,不在分发热路径执行完整 release audit。
和 GC 通过跨进程操作锁协调,release-local CAS 引用以 `(ownership_id, ordinal)` ownership
记录幂等释放;新清单持久化 `ownership_id`,旧清单走不生成新 identity 的 legacy
cleanup pathlocalized publish/rollback 通过 output-root 单写者锁和事务日志恢复
current、version-state、version 目录,publish 只有最终 `verified` phase 才能恢复为已提交。
localized release 还写入实际 bytes/BLAKE3 的 `localized-distribution-manifest.json`
`release.distribution(destination=...)` 使用单条轻量 metadata lookup,返回 exactly one
entry 且不在分发热路径执行完整 release audit`release.cleanup execute` 与 official
sync 共用同一个 `.official-sync.lock`localized cleanup 继续使用 `.localized-release.lock`
---