Files
ai-contract-platform/docs/qa/multiscene-closeout-20260910/rc04-immutable-manifest-tool-v6.md
T

3.2 KiB
Raw Blame History

RC-04 干净 checkout 与跨平台字节边界修复 v6

结论

.3 增量修复的开发工作区回归为 43/43 通过,0 failure/error/skip。另在从 .2 commit 新建的分离工作树中,仅覆盖拟纳入 .3 的 6 个文件,不带任何原始 QA 未跟踪输出,同一 43 项也已通过。

这仍是预提交证据。最终接受必须等 .3 commit/tag 冻结后,在新的干净 detached checkout 重跑 43 项;通过后才能生成 .3 source manifest/archive。

失效候选

  • .1:2770d738185589c399c5740c4fc6cc25a4d65c2f / v2-multiscene-rc04-20260920.1,manifest 规则把 5 个合法 secret-custody 领域源码误判为密钥材料。
  • .2:62d7d4476c08c8d72419665c3c0e1a6b3ef1c0f9 / v2-multiscene-rc04-20260920.2,冻结后干净 checkout 回归 43 项中 1 项失败,暴露出原始 QA 输出隐式依赖。
  • .1 / .2 标签保持不可变,不移动、不重写、不构建、不部署。

.2 失败 JUnit 在外部发布证据目录保留:43 tests / 1 failure / 0 error / 0 skipped,SHA-256 a7c63342acce1ed098db855853ad921cbde1668f95d849a016a9bbe8dca3f561。

根因与修复

1. 外置原始证据

RC-03 v3 紧凑索引保留 50 项当前证据和 4 项已排除无效 lineage 的路径、大小和哈希。Ownership 规则将高基数原始 QA 输出保留在不可变发布源码之外;原测试却无条件打开这些工作区路径,因而被脏工作区掩盖。

修复后:

  • release_source_include / release_test_include 路径仍必须存在并验证;
  • generated_evidence_retain_exclude 在干净发布 checkout 中允许不存在;
  • 它们仍存在于开发工作区时,继续按记录大小、SHA-256 和 JSON 可解析性复验。

2. Windows checkout 换行

预提交干净副本又发现,Windows checkout 可将文本 Git blob 的 LF 物化为 CRLF。RC-03 索引本身来自工作区字节,其 OpenAPI 是 CRLF 记录,requirements 是 LF 记录;单纯比较某个 checkout 的原始字节不具跨平台性。

修复后,已纳入发布的文本路径从 HEAD:<path> 读取不可变 Git blob,仅允许同一 blob 的精确 LF/CRLF 物化与索引大小/哈希匹配。候选 source manifest 和 archive 仍严格绑定 Git blob 原始字节,没有放宽为任意文本变化。

安全边界未改变

.env*、私钥/keystore、credentials.json、service-account.json、非源码 secrets/credentials 以及源码树中 secret JSON/pyc/db 仍失败关闭。只有 src/tests/migrations 下的明确代码后缀才能作为 secret-domain 源码放行。

当前回归

  • JUnit:rc04-release-manifest-tools-v6.xml
  • Tests:43
  • Failures / errors / skipped:0 / 0 / 0
  • JUnit SHA-256:8d5aaf2f15ae4643d43608e72315022620a3ff5672858af91e9ff581298c441b
  • Test source SHA-256:f716e185c22d14e2db1245529c6600ca2bac1ae3f276a7f5c7b6029a925677d6
  • Ownership tool SHA-256:adfae22058e58285aa503a4836a4f474380af9c7f272ff6280fb8162f02b69be
  • 预提交分离工作树:恰好 6 个拟纳入改动,43/43 通过,未携带原始 QA 未跟踪输出。

边界

该收据不是冻结后 .3 收据,也不是 Linux 镜像、SBOM、漏洞扫描、安装或回退证据。内部试点和公众开放继续 NO_GO。