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-14 06:39:47 +08:00
parent c17904ee1c
commit 13b0bd5b45
39 changed files with 1590 additions and 228 deletions
+23 -10
View File
@@ -62,7 +62,8 @@
* manifest entry 是否存在;
* 文件 size 是否匹配。
虽然 Rust 已有完整的发布状态、BLAKE3 校验与 release integrity 语义,但 Go 当前并未完整继承这一健康状态。
虽然 Rust 已有完整的发布状态、BLAKE3 校验与 release integrity 语义,但 Go 当前需要继承
一个轻量、带代际绑定和 freshness 的 current official health proof,而不是触发重型历史扫描。
因此可能出现:
@@ -76,9 +77,9 @@
建立统一的:
```text
Rust release health
Rust current release attestation
Go ReleaseIndex
Go ReleaseIndex(保留 release/publication/manifest identity
readiness / bootstrap
@@ -93,6 +94,13 @@ CDN distribution gate
* bootstrap 不应报告 distributable
* CDN 不应继续从该 release 分发任意文件。
`release.attestation` 必须由 Rust 维护 publication anchor、manifest identity、
verification generation、verified_at、integrity/status code 和 diagnostics;轻量读取
只检查 current、anchor、manifest 元数据和 freshness,不遍历历史 release,不计算资源
文件 BLAKE3。`resource.manifest` 请求绑定 attested `release_id`
`publication_identity``manifest_identity`,每页返回相同代际信息;Go 逐页验证
release/root/identity/version/total/offset/limit,任何混页都丢弃候选快照。
保持现有:
* GET
@@ -143,10 +151,12 @@ B 同大小内容损坏,Rust health=false
## 完成记录
Rust `release.status.official_distribution_ready` 已接入 Go refresh snapshot
`readyz`、bootstrap、release summary 和普通 current CDN 共用 whole-release
distribution gate。刷新失败会清空旧 index,恢复后重新建立快照;显式
official/localized/historical 分发仍经 Rust `release.distribution`
当前已完成 Rust current attestation、manifest 代际绑定、Go typed mirror、分页一致性和
A→B 切换 fail-closed 测试;`readyz`、bootstrap、release summary 和普通 current CDN
共用 `attestation ready + exact manifest generation + complete local snapshot` gate。
刷新失败会清空旧 index,恢复后重新建立快照;显式 official/localized/historical 分发
仍经 Rust `release.distribution``make ci-check``make test-go-api`
`make check-docs` 均已通过。
---
@@ -544,14 +554,17 @@ CI 检查必须:
* 不修改源码;
* 明确报告每项 gate
* required tool 缺失时不应伪装成全部通过;
* optional gate 明确标记 optional
* required tool 缺失或版本不匹配必须失败
* 与实际 Gitea CI 尽量保持一致。
## 完成记录
`make format` / `make fmt` 保留为显式写入命令,`make ci-check` 和兼容的
`make ci` 只执行 read-only required gatesGo lint 在工具缺失时明确输出
optional skippedOpenAPI、RPC contract 和文档一致性由 `make check-docs` 纳入。
`make ci` 只执行 read-only required gates`golangci-lint 2.12.2`
`scripts/ci-versions.sh` 固定,缺失或版本不匹配失败;OpenAPI、RPC contract 和文档
一致性由 `make check-docs` 纳入。Gitea self-hosted runner 执行相同的 required
Rust/Go/docs 语义,不添加 GitHub Actions。`make ci-check``make test-go-api`
`make check-docs` 均已通过。
建议统一覆盖: