# AI 合同平台:后期上线任务规划与执行总表 版本:`v1.2` 制定日期:`2026-09-21` 计划状态:`ACTIVE` 适用范围:唯一冻结候选完成后的 `BUILD`、`RC05-RUN`、`RC06-UAT`、`RC07-RECOVERY`、`RC08-PRODUCTION` 机器可读台账:[`release-closeout-execution-register-20260921.json`](../docs/qa/multiscene-closeout-20260910/release-closeout-execution-register-20260921.json) > 本文是冻结后的执行控制计划和滚动状态索引,不是冻结候选的一部分,不修改既有 tag、manifest 或源码字节,也不构成部署、迁移、真实凭据使用、法律批准、风险接受或生产切流授权。 ## 一、执行结论 后续工作只允许沿以下主线逐项完成: `FREEZE(已完成) → BUILD(执行中) → RC05-RUN → RC06-UAT → RC07-RECOVERY → RC08-PRODUCTION` 固定规则: 1. 首发范围保持 **60 个资产、14 个 Prompt 模块、144 个正式评测场景、8 个核心 UI 旅程**,覆盖个人、企业、律师事务所三类用户,不缩减为采购单场景。 2. 不再新增 RC、TP、模板批次、模型供应商、云基础设施或非阻断功能阶段。 3. `BUILD-00~04` 已通过;`BUILD-03` Attempt 001 及 `BUILD-04` Attempt 001~005 均已 fail-closed 且原样保留,`BUILD-04` Attempt 006 已通过 Stage 1、Stage 2、独立终审和持久证据索引闭合;当前唯一下一任务为 `BUILD-05`,状态为 `READY`、尚未开始。 4. 内部受控试点在 `RC07-06` 前保持 `NO_GO`;公众开放在 `RC08-06` 前保持 `NO_GO`,公众注册继续 fail-closed。 5. 外部材料从现在并行准备,但外部等待不得改写为新的开发任务。 6. AI 负责自动执行、检查、证据整理和质量判断;法律生效、风险接受、生产迁移及最终切流仍须相应具名责任人批准。 ## 二、唯一候选与证据基线 | 项目 | 当前权威值 | | --- | --- | | Branch | `codex/multiscene-rc04-20260920` | | Commit | `5f4f0d7f64e3a6ff7d62fdbd252da3ffe6fb0035` | | Tree | `045ba80e72eacd7f4c111834f941a0ed978222f4` | | Annotated tag | `v2-multiscene-rc04-20260921.3` | | Tag object | `f4342b4d4be0d7431807b7274028a69a7d9577a8` | | 候选 manifest | `D:\yuqei-build-artifacts\ai-contract-platform\post-freeze-5f4f0d7f\FREEZE-RECOVERY\freeze-recovery-20260921T204615+0800\candidate-manifest-final-5f4f0d7f.json` | | Manifest SHA-256 | `d24471d735d54aa4e46b4c515c431c1dc8799c8c585dced0ba9b7b75169471b9` | | Manifest payload SHA-256 | `64f4dcbaa3b9b7b277c120c9642898985505844342795fb24de51903929639a8` | | Content-index SHA-256 | `6ba1c2d141559cdf7e88b571d5c0a61efc8a54804a4a41e294425cc57ce0eb84` | | Active source archive | `D:\yuqei-build-artifacts\ai-contract-platform\post-freeze-5f4f0d7f\FREEZE-RECOVERY\freeze-recovery-20260921T204615+0800\canonical-source-5f4f0d7f-autocrlf-false.tar` | | Active source archive SHA-256 | `74a93ce8c489f75169cc2cf14ee28ca44bc55a36e5ac46cf505dfe5a660d8c3b` | | Rejected historical archive | `D:\yuqei-build-artifacts\ai-contract-platform\freeze-20260921-precommit\ai-contract-platform-v2-multiscene-rc04-20260921.1-c4af0c78.tar`;SHA `5e304c...f8fc60`;仅保留审计,禁止构建 | | Secret scan SHA-256 | `c829814521ec00ddcb2f551faa944d80fd032885e40fdd74aff01323812a3cb6`(1705 个跟踪文件,0 个新命中,0 个陈旧基线项) | | 干净候选工作树 | `D:\yq-b02-src3` | | BUILD-02 正式收据 | `D:\yuqei-build-artifacts\ai-contract-platform\post-freeze-5f4f0d7f\BUILD-02\build02-20260921T205102+0800\build02-formal-receipt.json`;SHA `ea0acad737d99877fac0b9ee97ee3bfd143f6dd8443e6dab9b83db5e4c0ec4b7` | | BUILD-03 Attempt 001 被拒绝的技术收据 | `D:\yuqei-build-artifacts\ai-contract-platform\post-freeze-5f4f0d7f\BUILD-03\build03-20260921T231150+0800\build03-formal-receipt.json`;SHA `df294410900633381b76ff58d95cc2b9a63abcc04279b50fda0257d361f62a4f`;其自报 `PASSED` 结论已被独立治理复核否决,不是 BUILD-03 放行证据 | 执行边界: - 所有构建必须来自以上 tag、干净 checkout 或已核验源码包,禁止从当前脏工作树构建。 - `.1` 的 CRLF archive 失败、`.1` 的必填 Compose 环境缺口和 `.2` 的 `ai-redis` inventory 缺口均永久保留;三者都在镜像生成前 fail-closed。仅修复候选绑定的构建门禁后重新生成并核验 `.3` 的 commit/tag/manifest/archive,`.1/.2` 已标记 `SUPERSEDED`,不得再用于构建或拼接证据。 - `docs/architecture/local-development.md` 和 `start-dev.ps1` 的冻结基线字节已在候选中,但当前工作树中的用户未提交修改不在候选;未跟踪的 `stop-dev.ps1` 完全不在候选。三者当前本地内容均继续保护,不覆盖、不清理。 - 本文和滚动台账是冻结后新增的本地管理材料,不能被描述为已经存在于冻结 tag 中。 - UAT 通过的镜像直接晋级,生产前禁止重新构建“等价”镜像。 - 旧 `remaining-closure-register-20260919.json` 是历史快照,已被本计划的机器台账取代,不能继续作为当前状态源。 ## 三、状态、证据和变更规则 ### 3.1 状态定义 | 状态 | 含义 | | --- | --- | | `BLOCKED` | 前置任务、输入或授权尚未满足,禁止执行正式动作 | | `READY` | 输入、依赖和权限齐备,可以开始 | | `IN_PROGRESS` | 正在执行且尚未形成终态 | | `PASSED` | 所有退出条件都有绑定候选的可核验证据 | | `FAILED` | 本次尝试失败;必须保留记录,不得覆盖或改写成通过 | | `SUPERSEDED` | 候选或任务已被后续候选取代,属于不可恢复终态 | 允许的正常转换:`BLOCKED → READY → IN_PROGRESS → PASSED/FAILED`。候选失效时,任一状态都可转为 `SUPERSEDED`;失败重试允许 `FAILED → IN_PROGRESS`,但必须新增唯一 attempt 并保留全部旧 attempt 及证据,禁止把旧失败改写为通过。 ### 3.2 缺陷分级 - `P0`:越权、跨租户泄露、数据丢失或静默覆盖、关键合同事实错误、正常主旅程不可用、无法安装/恢复/回退、密钥泄漏、公众注册误开放。发现即停止下游任务并使当前候选失效。 - `P1`:有明确业务影响且没有安全替代路径。由发布负责人一次性裁定是否阻断。 - `P2/P3`:样式、重构、额外措辞、性能微调和非核心增强,进入上线后 backlog,不得打断本计划。 ### 3.3 证据规则 - 原始 JSON、JUnit、逐案例输出、镜像、SBOM、扫描报告和诊断放在仓库外持久目录:`D:\yuqei-build-artifacts\ai-contract-platform\post-freeze-5f4f0d7f\\`;历史 `.1/.2` 证据保留原路径,不迁名、不覆盖。 - Git 工作树只保存本计划、机器台账、必要摘要、索引和 SHA-256;临时 UAT 主机 `192.168.3.62` 不能成为唯一证据或备份保存点。 - 每份正式证据必须至少记录:任务 ID、commit、tag、manifest SHA、image digest(生成后)、时间、执行主机、结果、边界及证据 SHA。 - commit、tag、manifest、Prompt、Schema、runner、source pin 或 image digest 任一不一致时,证据不得拼接使用。 ## 四、总状态与依赖 | 工作包 | 当前状态 | 前置条件 | 完成后的放行面 | | --- | --- | --- | --- | | `FREEZE-01` | `PASSED` | 无 | 允许构建唯一候选 | | `BUILD` | `IN_PROGRESS` | `FREEZE-01`;`BUILD-00~04 PASSED`,`BUILD-05 READY` | 仅允许执行 BUILD-05 安装、升级、回退包及离线核验,不放行 UAT 或试点 | | `RC05-RUN` | `BLOCKED` | `BUILD-06 PASSED` | 允许正式隔离发布和 UAT | | `RC06-UAT` | `BLOCKED` | `RC05-06 PASSED` | 允许恢复与回退演练 | | `RC07-RECOVERY` | `BLOCKED` | `RC06-09 PASSED` | 可独立决定内部受控试点 GO/NO_GO | | `RC08-PRODUCTION` | `BLOCKED` | `RC07-06` 已完成且内部决定明确为 `GO`,并且全部外部输入完成 | 可决定公众开放 GO/NO_GO | ## 五、BUILD:同候选可安装产物 时间盒:`最长 0.5 个有效工程日`。首次基础镜像拉取和环境修复单独计入等待时间,不得用等待扩张工程时间盒。唯一交付物是与冻结候选绑定的四个 Linux 镜像、SBOM、安全扫描及安装/升级/回退包。 | ID | 工作与唯一交付物 | 通过条件 | 停止条件 | | --- | --- | --- | --- | | `BUILD-00` | 15 分钟 Linux builder 环境预检收据 | 网络、磁盘、Docker、时钟、缓存和仓外产物盘满足要求 | 空间、daemon、网络、时钟任一不合格 | | `BUILD-01` | 候选来源与构建计划收据 | commit/tag/manifest/archive 全部匹配且候选只读 | 任一 provenance 或 SHA 不一致 | | `BUILD-02` | Web、Contract API、AI API、worker 四个镜像 digest | 只从冻结源码构建;每镜像 digest 唯一且可追溯 | 构建使用脏工作树、源码漂移或镜像无法生成 | | `BUILD-03` | 每镜像 SBOM、漏洞和许可证报告 | 无未处置 P0/P1;例外有具名、限时、补偿控制记录 | secret、不可接受高危或依赖身份不符 | | `BUILD-04` | Linux 导入、启动、健康及迁移文件可读收据 | 四镜像均按实际 digest 运行且健康;不触碰真实库 | 无法启动/健康或 digest 漂移 | | `BUILD-05` | 安装、升级、回退包及离线核验收据 | 包自包含,hash 与候选/镜像一致,回退入口可验证 | 包不完整、hash 不一致或回退入口不可用 | | `BUILD-06` | BUILD 总结与 Go/No-Go | `BUILD-01~05` 全部通过;RC05 才能转为 READY | 任一阻断未关闭 | BUILD 期间补齐一个尚未完整闭合的候选证据:在 Linux 候选环境对 Contract 全量套件执行一次隔离分片认证,确认此前三个陈旧测试假设的修复没有遗留失败。其他已经绑定当前候选并全绿的长套件不重复运行。 ## 六、RC05-RUN:真实模型质量与耗时 时间盒:`1 个后台窗口`;最多 2 并发时预留 `8~12 小时`,如并发稳定性不足则串行夜跑 `12~14 小时`。内部测试配置固定为 `codex_cli / gpt-5.6-sol / medium / 300 秒 / fallback=false`;该配置不冒充未来公众生产 Provider。 | ID | 工作与唯一交付物 | 通过条件 | 停止条件 | | --- | --- | --- | --- | | `RC05-00` | Provider、身份、脱敏材料和额度预检收据 | Provider 可用;配置与冻结要求一致;真实凭据不落证据 | Provider 不可用、配置漂移、使用真实客户材料 | | `RC05-01` | 由当前候选重新生成的 144 任务冻结计划及 SHA | source pins、Prompt、Schema、runner、候选身份均一致 | 复用旧 working plan 或指纹不闭合 | | `RC05-02` | 仓外 authoritative registry、campaign、历史用量收据和 ledger | 执行前从实际 ledger 重算已用/剩余额度;总调用不超过 280 | 历史分母、registry 身份或预算无法核实 | | `RC05-03` | 矩阵首批 canary 结果 | 代表起草/复核及四个过期模板无系统性失败、0 静默 retry/fallback | 同类稳定失败、预算风险、证据无法被当前候选消费 | | `RC05-04` | 144 场景完整后台运行 ledger | 最多 2 并发;只派发未触碰项;失败、取消、超时、降级、接管全部进分母 | 同类系统性失败、即将超预算或 source pin 改变 | | `RC05-05` | 质量、错误及按 operation 的 p50/p95/timeout 报告 | 144 项都有终态,`unknown=0`;关键主体、金额、日期、角色和事实无静默丢失或造值 | 终态不完整、正常主链存在未解决阻断 | | `RC05-06` | RC05 Go/No-Go | 所有退出条件满足,才允许 RC06 正式动作 | 任一 P0/P1 阻断未关闭 | ### 6.1 四个证据过期模板 以下历史证据绑定旧正文,必须真实重评,禁止重写旧 hash 冒充通过: - `TPL-COMMISSION-MARKETING-001` - `TPL-COOPERATION-LIVESTREAM-MARKETING-001` - `TPL-SERVICE-EQUIPMENT-MAINTENANCE-001` - `TPL-TRANSPORT-COLD-CHAIN-001` 每模板使用 `normal`、`missing-key-fact`、`opposite-adversarial` 三种变体,共 12 个案例;每例执行 `draft + specialist_review`,计划最多 24 次真实调用。这些案例必须属于 144 矩阵并计入 280 次全局上限,不是额外预算。 案例 ID 固定为 `scene----`,operation 固定为 `draft` 和 `specialist_review`。首次 Provider 调用前必须核对 12 个 case ID 和 24 个 operation key 均已存在于冻结计划,缺一即停止;canary 的关闭条件是 12/12 案例完成、全部计划调用有终态、`failed/cancelled/unknown/fallback/silent-retry = 0`,且当前模板、Prompt、Schema、runner、源码和镜像身份完全匹配。若系统必须修改 tracked catalog 才能消费新证据,应立即停止并按 P0/P1 分类;不得原地修改冻结 tag。 ## 七、RC06-UAT:隔离部署、发布和多角色验收 时间盒:`最长 1 个有效工作日`。环境和账号等待单独记账;只读准备可在 RC05 后台运行期间进行,迁移、发布和正式 UAT 必须等 `RC05-06 PASSED`。 | ID | 工作与唯一交付物 | 通过条件 | 停止条件 | | --- | --- | --- | --- | | `RC06-00` | UAT 输入预检收据 | `192.168.3.62`、管理员+2 普通成员、2 工作区、发布负责人、端口和空间齐备 | 缺主机、账号、权限或正式动作授权 | | `RC06-01` | 部署前备份、两库当前版本和现有 digest | 备份可校验且在 UAT 主机外有持久副本 | 无备份或备份不可验证 | | `RC06-02` | 安装、两库迁移、同一 BUILD 镜像部署和健康收据 | 禁止重建镜像;两库达到预期 head;服务健康 | 迁移异常、健康失败或 digest 不符 | | `RC06-03` | 60 资产+14 Prompt 的发布批次、preview/dry-run 和批准记录 | 每项有适用的具名批准,或仅限内部试点的具名、限时风险接受及补偿控制 | 无批准、无边界或用 AI 质量冒充法律批准 | | `RC06-04` | Apply 收据、74 项 online hash、14→9 Prompt 运行映射和 1 个起草+8 个复核运行快照 | 60/60 资产和 14/14 模块 hash 与批准批次一致;6/6 起草模块全部进入唯一 `contract_drafting` 组合快照;8/8 审查模块各自进入对应运行快照 | 缺项、映射不完整、漂移或状态错误 | | `RC06-05` | 身份、租户、PostgreSQL 和反向代理复验 | server-bound actor 有效;普通成员不能发布或跨工作区;service key 不进浏览器 | 越权、跨租户、客户端持有 service key | | `RC06-06` | 60 场景 API 正常链收据 | 选择、事实、草稿、AI、diff、明确保存、下载和适用撤回全部通过 | 主旅程不可用、事实错误或静默覆盖 | | `RC06-07` | 8 个核心 UI 浏览器验收证据 | 管理员+2 成员、2 工作区覆盖个人/企业/律所;截图与 API 收据对应 | 角色或场景覆盖不完整 | | `RC06-08` | 失败恢复专项收据 | 重复提交、取消、幂等、关页续接、worker 重启、网络未知、人工接管、原稿不覆盖全部通过 | 重复采纳、孤儿任务、静默覆盖或错误归属 | | `RC06-09` | RC06 Go/No-Go 与完整证据索引 | 发布、60 API、8 UI、身份和恢复证据全部闭合 | 任一 P0 或未解释缺口 | 法律文书按实际 `document_kind` 进入适用流程,不强制套用双边合同签署步骤。UAT 只使用合成或脱敏数据,不把测试环境描述成生产或法律批准。 14→9 运行映射必须使用以下冻结模块身份:起草模块 `draft_intake`、`template_match`、`missing_facts_questions`、`clause_assembly_plan`、`draft_consistency_check`、`candidate_revision_explanation` 共同组成一个 `contract_drafting` 运行快照;审查模块 `contract_review_trade_procurement`、`contract_review_services`、`contract_review_transport_warehousing`、`contract_review_manufacturing`、`contract_review_construction`、`contract_review_marketing`、`contract_review_consumer_services`、`contract_review_notices_amendments` 分别形成八个运行快照。映射收据必须记录模块版本、payload hash、组合顺序及最终运行 Prompt hash。 ## 八、RC07-RECOVERY:恢复、回退与内部试点决策 时间盒:`最长 0.5 个有效工程日`。外部授权或材料等待单独计时。 | ID | 工作与唯一交付物 | 通过条件 | 停止条件 | | --- | --- | --- | --- | | `RC07-00` | 演练授权和材料预检 | 当前/前序包、独立恢复 namespace、组织根公钥、当前 keyring payload pin、minimum epoch、两名独立审批人及责任人齐备 | 缺材料、隔离空间、职责分离或授权 | | `RC07-01` | 当前 RC 的异地备份 artifact | digest、大小、完成时间可核验;不是 UAT 主机唯一副本 | 备份缺失、不可读或不可验证 | | `RC07-02` | 独立 namespace 隔离恢复收据 | Schema、版本、关键记录、60/14 hash 和审计数据一致 | 源库被修改或恢复数据不一致 | | `RC07-03` | rollback → forward 真实演练收据 | 前序和当前包双向健康,数据兼容,证据链未被改写 | 回退/前进失败或数据损坏 | | `RC07-04` | 实测 RPO/RTO 和主旅程复探 | 达到事先批准阈值;恢复后核心旅程健康 | 未达阈值或复探失败 | | `RC07-05` | 安装、升级、运维、回退说明,发布清单、已知限制、双人批准和证据索引 | 所有 hash 可追溯到唯一候选和晋级镜像;两名独立审批人的批准签名时间均晚于备份完成、恢复测试和兼容性评估 | 文档不可执行、证据无法追溯、审批人不独立或签名时序不满足 | | `RC07-06` | 内部受控试点 Go/No-Go | 具名发布负责人依据 RC05~RC07 证据作出并记录决定;只有结果明确为 `GO` 才能解锁 RC08 工程动作 | 未具名、材料不全或任何阻断未处置 | `RC07-06` 任务可以因“决策过程和证据已完成”而记为 `PASSED`,但其结果仍可能是 `NO_GO`。只有 `RC07-06.decision_outcome=GO` 且机器台账中的 `release_decision.internal_controlled_pilot=GO` 时才允许执行 `RC08-01`;内部 `GO` 也只代表白名单试点可用,公众开放仍保持 `NO_GO`。 ## 九、RC08-PRODUCTION:公众生产放行 外部准备从现在并行;工程执行必须在 `RC07-06` 后。外部等待不计入工程时间,材料齐备后的工程时间盒约 `1 个有效工程日`。 ### 9.1 并行外部输入 | ID | 外部输入 | 完成定义 | | --- | --- | --- | | `RC08-X01` | 四份正式政策和同意证据 | 正式版本、具名批准、生效时间、consent 版本和留存机制齐备 | | `RC08-X02` | AI 合规适用性、备案/登记和标识 | 具名适用性结论;适用时使用真实编号;显式/隐式标识抽验通过,无占位值 | | `RC08-X03` | 生产模型 Provider | 正式模型、超时、额度、数据边界、manifest 和当前镜像验收;会员订阅不冒充生产 API 授权 | | `RC08-X04` | 域名、TLS、密钥、双 Redis、监控告警和反滥用 | 真实配置和告警接收人齐备;Redis 持久化或具名限时接受限制;service key 不下发客户端 | | `RC08-X05` | 生产目标、维护窗口和责任链 | 主机、备份权限、切流负责人、回退负责人和审批人明确 | ### 9.2 生产工程动作 | ID | 工作与唯一交付物 | 通过条件 | 停止条件 | | --- | --- | --- | --- | | `RC08-01` | 当前 release/image/model/env 的只读生产 preflight | `RC07-06.decision_outcome=GO`;`failure=0`;warning 仅允许具名登记接受 | 内部决定不是 `GO`、占位值、缺凭据、失败项或未接受 warning | | `RC08-02` | 新鲜备份、精确切流与回退计划 | 备份可验证;阈值、步骤、责任人和窗口明确 | 无新鲜备份或回退不可执行 | | `RC08-03` | 不开放公众的切流/回退演练收据 | TLS、health、告警、限流和注册 fail-closed 全部有效 | 监控盲区、回退失败或注册误开放 | | `RC08-04` | 暗流量/白名单部署授权 | 发布负责人明确授权本次 release、digest、窗口、暗流量范围和回退方案;不授权公众流量或公众注册 | 当前计划或历史授权被误当作本次授权 | | `RC08-05` | 暗流量/白名单部署、核心 smoke、观察和回退决定 | 只使用通过 UAT 的 digest;指标在阈值内;公众流量与公众注册继续关闭;异常按预案回退 | 公众提前开放、命中回退阈值或证据链断裂 | | `RC08-06` | 最终公众授权、受控开放和最终证据索引 | blocker=0;发布负责人明确作出公众 `GO`;之后才启用批准范围内的公众流量/注册并完成 smoke;实际策略与决定一致 | 未获得公众 `GO`、任一材料缺失或开放后触发回退阈值时保持/恢复公众 `NO_GO` 和注册 fail-closed | ## 十、并行策略与时间安排 | 时间窗口 | 主线工作 | 允许并行 | 禁止事项 | | --- | --- | --- | --- | | 第 1 天 | BUILD | RC06 账号/环境只读准备;RC08-X01~X05 收集 | 提前迁移、发布或模型全矩阵 | | BUILD 绿后 | RC05 canary 和 144 后台矩阵 | UAT 预拉镜像、准备备份目录;外部材料 | 频繁轮询、修改候选、拆分两个 runner 拼接证据 | | RC05 绿后 | RC06 正式部署与 UAT | 准备独立恢复 namespace | 提前作内部 GO 或使用重建镜像 | | RC06 绿后 | RC07 恢复与回退 | RC08 材料核对 | 在原 UAT 库做破坏性恢复演练 | | RC07 内部决定后 | RC08 生产门禁 | 无阻塞运营准备 | 无最终授权切流、提前开放公众注册 | 在环境、账号、额度和授权按时具备且未发现新 P0 的前提下,按强制时间盒形成内部受控试点决定的目标约为 `3 个有效工程日`;模型后台窗口、首次镜像拉取、环境修复和外部等待分别记账。公众开放时间由外部材料决定,不作无依据日期承诺。 ## 十一、每项任务的固定执行协议 每个任务开始和结束都按以下规则执行: 1. 开始前更新机器台账:唯一交付物、owner、前置条件、时间盒、当前 attempt。 2. 执行 15 分钟环境预检;预检失败不进入正式动作。 3. 将任务状态改为 `IN_PROGRESS`,原始输出写入独立 run ID 的仓外目录。 4. 同一阻断连续出现两次后停止重跑,先做根因分析;等待时间与工程时间分别记录。 5. 只有所有退出条件都有 SHA 证据时才能改为 `PASSED`;失败 attempt 永久保留。 6. 任务完成时只报告:候选 SHA、通过/失败、剩余 blocker、责任人、下一项必要动作。 7. 不自动发明下一阶段;只将机器台账中的唯一 `mainline_next_task_id` 转为 `READY`。 8. 涉及生产、迁移、真实凭据、风险接受或切流时,计划中的角色要求不等于授权,执行前仍需取得对应具名授权。 ## 十二、计划完成定义 ### 12.1 内部受控试点完成 以下条件同时满足才可标记内部受控试点 `GO`: - `BUILD-06`、`RC05-06`、`RC06-09`、`RC07-06` 全部 `PASSED`; - 真实模型、UAT、恢复和回退证据绑定同一 commit 与 image digest; - 没有未处置 P0/P1;已知限制、owner、期限和补偿控制完整; - 具名发布负责人作出内部白名单试点决定,且决定结果明确为 `GO`。 ### 12.2 公众正式上线完成 以下条件同时满足才可将本计划标记为完全落地: - 内部受控试点已 `GO`; - `RC08-X01~X05` 和 `RC08-01~06` 全部 `PASSED`; - 政策、同意、AI 标识、生产 Provider、TLS、密钥、监控、反滥用、备份和回退均有当前有效证据; - 最终具名生产授权、切流、核心 smoke 和观察期结果完成; - 公众 blocker 为 0,注册状态与最终决定一致; - 机器台账、最终证据索引和运维交接材料关闭,且无自动新增的后续阶段。 ## 十三、本轮明确排除的事项 以下事项不阻塞本计划,统一进入上线后 backlog:C 批新增 30 场景、10 名用户研究、双云 KMS、外部不可变见证、超大关系图、额外运营看板、新模板/Prompt 批次、新模型供应商、非阻断 UI 优化和匿名自助注册。 ## 十四、当前下一任务卡 **任务 ID:`BUILD-05`** **状态:`READY`(尚未开始,开始前须完成具名分派)** **唯一交付物:** 形成与冻结候选、四个固定镜像 digest 及既有证据绑定的安装包、升级包、回退包和离线核验收据。 **当前边界:** 仅允许在隔离构建环境组装和验证发布包;不得执行 UAT、真实数据库迁移、内部试点、生产部署、公众开放或公众注册。 **当前动作:** 本轮不自动启动 BUILD-05;下一次执行先完成具名分派,并复核冻结候选、镜像 digest、BUILD-04 闭合收据和持久产物空间,再开始包构建。 **通过条件:** 包自包含;包内 hash 与冻结源码和镜像 digest 一致;离线核验可复现;回退入口可验证;原始状态与证据继续保存在源码工作树之外。 **通过后下一任务:** `BUILD-06`。 **失败时:** 保留本次 attempt 的收据和日志并停止下游任务;包不完整、hash 不一致或回退入口不可验证时不得进入 BUILD-06。内部试点和公众开放继续 `NO_GO`,公众注册继续关闭。 ### 14.1 `BUILD-00` 完成记录 - 状态:`PASSED`(收据结果为 `pass_with_warnings`)。 - 执行主机:`192.168.3.62`;执行时间:`2026-09-21T18:35:48+08:00` 至 `18:55:30+08:00`。 - 正式收据:`D:\yuqei-build-artifacts\ai-contract-platform\post-freeze-c4af0c78\BUILD-00\build00-20260921T183548+0800\build00-preflight-receipt.json`。 - 收据 SHA-256:`28c10f1f32ce5c26480ead9e9629baae137c0843ade00272d8ab271d9dfe348a`。 - 结论:平台、固定工具版本、BuildKit 身份、网络、NTP、磁盘/inode 和仓外产物目录硬检查全部通过;48.87 GiB 空间、2 vCPU/约 5.3 GiB 内存、并存旧 UAT 容器和陈旧 Trivy DB 已作为后续约束记录。 - 边界:未构建镜像、未迁移数据库、未部署服务、未停止或删除既有 UAT 容器,未改变内部试点或公众开放 `NO_GO`。 ### 14.2 `BUILD-01` 完成记录 - 最终状态:`PASSED`,同时永久保留首次失败 attempt。 - Attempt 01:原 archive `5e304c...f8fc60` 与 manifest 不匹配;1705 个文件中有 1688 个为 Windows CRLF 物化字节,首个错误为 `.dockerignore` `332 vs 300 bytes`。原文件未覆盖、未删除,状态为 `REJECTED_FOR_BUILD`。 - Attempt 02:从同一 commit 生成 canonical Git-byte archive `4d11ff...42f4a`,大小 `22,343,680` bytes;Linux 独立再生成结果逐字节相同。 - Linux checkout:固定 tag object `9b837c22...ead3`、commit `c4af0c78...8887e`、tree `ad5a008f...a8aa`;工作树干净、无 replace refs,`git fsck` 通过。 - 只读机制:repo 和 inputs 使用内核级 `ro` bind mount;root 写探针返回只读文件系统,验证前后 bundle/archive/manifest SHA 不变。 - 正式计划:`D:\yuqei-build-artifacts\ai-contract-platform\post-freeze-c4af0c78\BUILD-01\build01-20260921T191436+0800\linux-build-plan-readonly.json`,SHA-256 `c8f991cfc4a19d77133bd5997a5b35c60f7b335df8179017d72facf6f1ae45e9`。 - 正式收据:`D:\yuqei-build-artifacts\ai-contract-platform\post-freeze-c4af0c78\BUILD-01\build01-20260921T191436+0800\build01-provenance-receipt.json`,SHA-256 `f06abc9084528c81f890dd47d0a58e19290ea10b92f65c9d328a832e793a4856`。 - 环境诊断:默认 Python 3.6.8 不能解析候选 runner,已改用主机已有 Python 3.12.14;未安装软件、未修改候选。 - 边界:plan 明确记录 `execution=false`、`network_or_builder_tools_invoked=false`;未构建镜像、未访问数据库、未迁移、未部署、未执行 UAT 或模型调用,内部试点及公众开放继续 `NO_GO`。 ### 14.3 候选构建门禁恢复记录 - `.1`(`c4af0c78...8887e`)在 BUILD-02 Attempt 001 的首个 Compose gate 因缺少 `BACKEND_TLS_TRUSTED_CA_FILE` 失败,镜像产出数为 0,未晋级输出。 - `.2`(`5688dd13...c89c`)补齐必填环境后,在 BUILD-02 Attempt 002 因 validator 未登记 `ai-redis` 失败,镜像产出数仍为 0,未晋级输出。 - `.3`(`5f4f0d7f...0035`)仅包含上述构建门禁及回归测试修复;8 个在线/离线 Compose 组合已真实 dry-run 全部通过。`.1/.2` tag、失败 journal 和 status 均保留,状态为 `SUPERSEDED`,没有删除、移动或重打 tag。 - `.3` 重新形成独立 manifest、canonical archive、bundle、Linux 只读计划和 tracked-source secret scan;源码 secret 扫描覆盖 1705 个跟踪文件,0 个新命中、0 个陈旧基线项。 - 当前权威候选已切换到 `.3`;该恢复不增加产品功能,也不构成 BUILD-03、UAT 或发布放行。 ### 14.4 `BUILD-02` 完成记录 - 最终状态:`PASSED`;正式执行时间 `2026-09-21T12:51:09Z` 至 `13:52:16Z`,构建主机 `192.168.3.62`,四镜像严格串行。 - 首项动态预检已重新覆盖磁盘、Docker/BuildKit、国内镜像/PyPI/npm 网络、NTP、只读 repo/input 挂载、写探针和资源占用;全部硬检查通过,构建全程未触发 40 GiB 磁盘、768 MiB 内存或持续高负载停止线。 - 固定 manifest digest: - `contract-web`:`sha256:ad28e2e4b8ea3a61c529291b4d6685ec2fce867128097affe96f6b4912ef0433` - `contract-api`:`sha256:f9f6361c27fe5259bd126eaaee7deb79bae570e7035272ad7ff05ba5ab348b91` - `ai-platform-api`:`sha256:c29ea37c62f2071b044ba7127f9682324dbf28abcf49468cb36fc2169093c10d` - `ai-worker`:`sha256:da038a4f5b6eaa32cb1a97c3ad6434ae6ef099d8b8127577131f80ea28bbecd1` - 四个 digest 互异;Linux 构建机和 Windows 持久副本各执行一次候选自带的只读严格验证,均确认精确 23 个文件、全部 SHA/size、OCI/Docker config identity、候选标签、SBOM、Trivy 与安全 gate 一致。 - 原始构建收据:`D:\yuqei-build-artifacts\ai-contract-platform\post-freeze-5f4f0d7f\BUILD-02\build02-20260921T205102+0800\release-output\build-receipt.json`,SHA-256 `556ff6b0d02456766cbc8384b2feb2b26e58a0c4a2b4bc92c105e35c10022b9f`。 - 正式外层收据:`D:\yuqei-build-artifacts\ai-contract-platform\post-freeze-5f4f0d7f\BUILD-02\build02-20260921T205102+0800\build02-formal-receipt.json`,SHA-256 `ea0acad737d99877fac0b9ee97ee3bfd143f6dd8443e6dab9b83db5e4c0ec4b7`。 - 持久副本内容索引:同目录 `build02-content-index.json`,SHA-256 `d8dd2fd329dc21770fdc38e5a27a2eab41f143e1d0311afb710550e4f3ce1329`;临时 Linux 主机不再是唯一副本。 - runner 安全 gate 为 pass:未豁免 HIGH/CRITICAL 均为 0;但存在 132 个受同一限时策略豁免的 HIGH 命中,豁免截止 `2026-10-20T00:00:00Z`。这不等于 BUILD-03 已通过,许可证、image-secret 与独立风险判定仍待完成。 - 为构建暂停的 18 个 UAT 无状态容器已全部恢复为运行且健康;PostgreSQL、Redis、MinIO 等有状态容器未重启。 - 边界:未部署新镜像、未迁移数据库、未执行 BUILD-03/04、未完成 UAT、未开放内部试点或公众注册;两者继续 `NO_GO`。 ### 14.5 `BUILD-03` Attempt 001 失败关闭记录 - Attempt ID:`build03-attempt-001-5f4f0d7f`;权威结果:`FAILED_CLOSED`。原自报 `PASSED_WITH_TIME_LIMITED_EXCEPTIONS` 的收据原样保留用于审计,但已被独立复核否决,不是放行证据。 - 技术事实:四镜像与 BUILD-02 固定 digest 的身份绑定通过;四份 image-secret 报告总命中为 0;未豁免 HIGH/CRITICAL 为 0/0;三个 Python 镜像共 132 个 HIGH 与原 44 项限时白名单精确匹配;许可证 hard-deny/forbidden 为 0。 - 失败阻断:缺少真实具名风险责任人;555 个许可证 `UNKNOWN` 通过过宽上下文规则批量放行,未形成逐项精确清单;Node/Python runtime `NOASSERTION` 未全部绑定到各镜像内精确许可证路径和内容哈希。 - 权威失败处置:`D:\yuqei-build-artifacts\ai-contract-platform\post-freeze-5f4f0d7f\BUILD-03\build03-20260921T231150+0800\independent-audit\build03-attempt-001-disposition.json`,SHA-256 `41e24dbffbe967c8031d8f210f43e25eafa1d8bc9716c31191d4a6742989d757`。 - 可读失败摘要:同目录 `build03-attempt-001-failure-summary.md`,SHA-256 `48a79f34b4ac7d7d3a19974a814fab62ee62b3bd1caa883ca5ed64c4405bca3e`。 - 失败尝试完整索引:同一 run 根目录 `build03-attempt-001-failure-index.json`,SHA-256 `33c1e7d256bf246aa89ddd810ab2b7c1f44c8186fa512e09ef8b803895b96df4`;索引覆盖 31 个既有证据文件,内容集合 SHA-256 `66419522e732c8da9a21f05a6e6d533f50e9ecebcdfeb99c612aa296ef46adf4`。 - 自动补救准备(不改变失败状态):555/555 个 `UNKNOWN` 已形成无通配精确清单和 v2 保守分类包;其中 136 项可由 SPDX 3.29 精确识别,419 项保持 `unresolved-risk` 并只能由具名责任人限时接受。v2 包 SHA-256 `2396caa0b96d87b09ae63fb3a21c4a1c8d83f85a6f2f7ca3d387bbff6cc94d85`,验证收据 SHA-256 `d6d7ae910ca583e8918df84948bd643369f95d83fa6f6ec9ee8c78d36f7e2009`。 - runtime 补救准备:Node、Next、CPython、pip 均已绑定镜像内精确许可证路径与哈希;distlib 0.3.9 通过镜像内 `vendor.txt`、官方 PyPI sdist SHA、外部许可证文本及三个镜像中 18 个 launcher 的逐字节匹配闭合,且未把外部文本伪称为镜像内文件。证据 SHA-256 `cc4cb9c52a769019e8aa19faaddda27276e092b740f2ad88a1241fc624845453`,12 文件索引 SHA-256 `cc602579315bd409967bd471cce160bb3e19cc11357eb2c7cc0ae5f5cfa727ff`。 - 具名批准 v2 模板已准备但保持 `PENDING / NONE`,并锁定上述 runtime 证据和 distlib 外部来源边界:JSON SHA-256 `39e6a936d12d372dc0d7cda6331e676a9561cf18e5d1f9b366c8d1d0b17c0718`,中文模板 SHA-256 `dd8b11279871c9cc6cedb77c13c32562b7fdb667fb4589e026245c2c86957673`,自校验收据 SHA-256 `9389bb2e2924caa0b9b300ea2a9d669e5f1283fba9366af3f09b45140ad4f995`;四项批准人身份字段为空时不得产生任何放行效力,v1 模板仅保留为来源链。 - Attempt 001 失败关闭记录形成时的状态边界:冻结候选和四个镜像 digest 未失效;当时 `BUILD-03` 为 `FAILED`、`BUILD-04` 为 `BLOCKED`;内部受控试点及公众开放为 `NO_GO`,公众注册关闭。 ### 14.6 `BUILD-03` Attempt 002 启动记录 - 具名批准人:陈钰麒;职务:总经理;批准编号:`BUILD03-RA-20260922T051547-41BB5342CB5A`;批准时间:`2026-09-22T05:15:47.517+08:00`。 - 正式批准记录:`D:\yuqei-build-artifacts\ai-contract-platform\post-freeze-5f4f0d7f\BUILD-03\named-risk-approval-20260922T051547+0800\named-risk-approval-record.json`,SHA-256 `f758319590ced915b71ea38a548476ccba3826e7757e4f232ff61e7eb585c1bc`。 - 批准收据:同目录 `named-risk-approval-receipt.json`,SHA-256 `36dc6ddea63700f3337e80184b3d0c5929da2bf4b61a7d8c87650df62dd22c3b`;该记录未伪造密码学签名,授权来源为本任务用户消息。 - 授权边界:仅在 BUILD-03 Attempt 002 全部严格门禁通过后,允许四个固定 digest 进入 BUILD-04 隔离合成数据测试;不授权生产、分发、数据库迁移、UAT、内部试点、公众发布或公众注册。 - Attempt 002 启动时状态:`IN_PROGRESS`;远程只读预检发现默认 Trivy DB 已过期,已改用全新 task-local DB。因现有三套 UAT 的基线负载持续高于初始安全线,裸扫描已停止且未启动任何镜像扫描;后续仅以低优先级、硬 CPU/内存配额严格串行执行四份 fresh vulnerability 扫描,license 与 image-secret 复用已验证的不可变报告。当时 `BUILD-04` 为 `BLOCKED`;最终状态以 14.7 完成记录为准。 ### 14.7 `BUILD-03` Attempt 002 完成记录 - Attempt 002 权威结果:`PASSED_WITH_EXACT_NAMED_TIME_LIMITED_EXCEPTIONS`;`BUILD-03` 状态更新为 `PASSED`,Attempt 001 的 `FAILED_CLOSED` 记录、失败索引和全部原始证据保持不变。 - 四镜像 fresh vulnerability 扫描结果为 HIGH `0/44/44/44`、CRITICAL `0/0/0/0`;132 个 HIGH 与固定白名单逐项精确一致,未豁免 HIGH/CRITICAL 为 `0/0`。image-secret 命中为 `0`;license UNKNOWN `555/555` 精确匹配且无通配或缺漏;runtime unresolved 为 `0`。 - 正式输出目录:`D:\yuqei-build-artifacts\ai-contract-platform\post-freeze-5f4f0d7f\BUILD-03\build03-attempt-002-formal-20260922T080347+0800`。 - 正式收据 SHA-256:`f1ac58535d5d76f1e1227e02c59c51937f076d8e24c8e76a57626d2f3cbd2192`;内容索引 SHA-256:`eb94919b50e58ae356242380b0a65cf5d5cd60d179583fc1ddf08d834a8dc467`;最终 `COMMITTED.json` SHA-256:`8f14d0e78b94a81df35455661607550f7ad484554f0fba8fc46202b97ff626a3`。 - 独立只读复核验证了 11/11 索引项、六份决定、70 项输入快照、Attempt 001 固定锚和最后提交标志,结论为 `PASS`,无 P0/P1 阻断。 - 授权最大效果严格保持 `BUILD04_ISOLATED_TEST_ONLY`;三个例外统一到期时间为 `2026-10-20T00:00:00Z`。该结论不是法律意见、分发许可、UAT、试点、生产或公众发布授权。 - 当前唯一下一任务切换为 `BUILD-04`,状态 `READY`、尚未开始;内部受控试点和公众开放继续 `NO_GO`,公众注册继续关闭。 ### 14.8 `BUILD-04` Attempt 001 启动记录 - 启动时间:`2026-09-22T08:40:44.241+08:00`;执行责任人:Codex release executor。 - 执行边界:只允许在隔离 Linux 命名空间中使用合成数据导入、启动、健康检查、迁移文件只读解析及 Contract 全套测试;禁止执行数据库迁移、访问真实客户数据、分发镜像、开展 UAT、内部试点、生产部署、公众开放或公众注册。 - 当前阶段:只读环境与执行计划预检。任何容器、网络或临时存储变更都必须在候选 archive、manifest、镜像 config identity、主机资源和现有 UAT 不受影响的检查通过后开始。 - 专用隔离 harness 不得直接执行候选 production compose,避免触发其中的迁移、Prompt 导入、镜像拉取或 digest 漂移;迁移检查仅验证文件可读性、revision 图和 heads,不得执行 `upgrade`。 - 内部受控试点与公众开放继续 `NO_GO`,公众注册继续关闭。 ### 14.9 `BUILD-04` Attempt 001 失败关闭与 Attempt 002 启动 - Attempt 001 于 `2026-09-22T09:34:38+08:00` 开始、`2026-09-22T09:34:41+08:00` 失败关闭。失败发生在首份 UAT 基线快照:历史已退出容器没有 Docker `Health` 字段,旧取证模板将缺失字段误作模板错误。 - 失败前未导入候选镜像,未创建或启动 BUILD-04 容器、网络、卷或临时数据库,未连接真实数据库,也未执行迁移。当前 27 个 UAT 运行容器的健康状态另行复核,不以失败快照中的 `uat_unchanged=false` 伪称 UAT 发生变更。 - Attempt 001 原始结果 SHA-256:`db6bbd4de1c082b8c1426addb2c39ae5af2b80bba172ee26e3a25717c15e4778`;控制台日志 SHA-256:`ff8d495906bc0e2e19cdfd2c556130a57d25ace66a917fa68826d0693cf79f29`。持久副本位于 `D:\yuqei-build-artifacts\ai-contract-platform\post-freeze-5f4f0d7f\BUILD-04\build04-attempt-001-20260922T085523+0800\remote-evidence`。 - Attempt 002 于 `2026-09-22T09:37:03.503+08:00` 启动;仅修复缺失健康字段的只读取证兼容逻辑,并更换唯一 attempt、远端根目录、容器名和网络名。授权边界、候选身份、资源阈值和 `NO_GO` 决定均未扩大。 ### 14.10 `BUILD-04` Attempt 002 失败关闭与 Attempt 003 启动 - Attempt 002 的 Stage 1 于 `2026-09-22T09:46:54+08:00` 至 `09:55:19+08:00` 完成并通过:四个固定镜像身份、隔离启动、合成配置、健康和迁移图只读检查全部成功;未执行数据库迁移、未连接真实数据库、未发布主机端口,结束后 UAT 仍为 27/27 健康且隔离容器/网络残留为 0。Stage 1 收据 SHA-256 为 `0e13bb4a7e95491049c8e19392709412395252e45582a8f43a76693995959d70`。 - Stage 2 于 `2026-09-22T10:32:54+08:00` 启动,在全量测试节点收集时 fail-closed,于 `10:35:28+08:00` 结束。两个冻结测试模块导入顶层 `test_support`,而隔离测试 `PYTHONPATH` 漏了 `/candidate`,因此收集退出码为 2;四个测试分片均未开始,容器未 OOM。 - Attempt 002 Stage 2 失败收据 SHA-256 为 `973c83bd41de54003a24667c5a3423c4dafd56293e3180d4594d2d49955efd71`;收据明确记录 `FAILED`、`uat_unchanged=true`、未连接真实数据库、未执行数据库迁移。完整持久证据位于 `D:\yuqei-build-artifacts\ai-contract-platform\post-freeze-5f4f0d7f\BUILD-04\build04-attempt-002-20260922T093703+0800\remote-evidence`,不得覆盖或提升为通过证据。 - Attempt 003 于 `2026-09-22T10:37:54.641+08:00` 启动;唯一功能性修正是将冻结源码根 `/candidate` 加入隔离测试 `PYTHONPATH`,并使用全新的 attempt、远端根目录、容器名和网络名重新执行全部门禁,不复用 Attempt 002 的 Stage 1 通过来绕过重跑。 - 内部受控试点、UAT、生产和公众开放继续 `NO_GO`,公众注册继续关闭。 ### 14.11 `BUILD-04` Attempt 003 失败关闭与 Attempt 004 启动 - Attempt 003 Stage 1 于 `2026-09-22T10:43:49+08:00` 至 `10:50:11+08:00` 再次通过,收据 SHA-256 为 `bee1694beb9c9ef49f85af848f0c164ef89184e6565277c8fc9629f57be0ab12`;无真实数据库连接、迁移或主机端口,UAT 保持 27/27 健康。 - Stage 2 于 `10:57:24+08:00` 启动,节点收集通过并进入第 1 分片;第 1 分片在 `11:18:16+08:00` 以 8 个失败结束,后续三片未启动。8 个堆栈均在业务断言前失败:测试按正常本地语义向服务工作目录下的 `.runtime/contract-files` 或 `.runtime/ai-platform-objects` 写入临时文件,但冻结候选挂载为只读。容器未 OOM,UAT 前后快照一致。 - Attempt 003 Stage 2 失败收据 SHA-256 为 `991ca0ad2fce38d4823a5dfbe8695eb6c7452c3f61f35b6d5db388c87500944c`;完整持久证据位于 `D:\yuqei-build-artifacts\ai-contract-platform\post-freeze-5f4f0d7f\BUILD-04\build04-attempt-003-20260922T103754+0800\remote-evidence`,不得覆盖或提升为通过证据。 - Attempt 004 于 `2026-09-22T11:20:48.699+08:00` 启动;唯一运行语义修正是将 `services/contract-api/.runtime` 挂为每个测试容器独立、退出即销毁、无网络、`nosuid,nodev,noexec`、上限 256 MiB 的 tmpfs,同时显式验证 `/candidate` 其余区域仍不可写并关闭无关的 pytest cache 写入。产品源码、测试断言、允许跳过项和发布边界均不改变。 - 内部受控试点、UAT、生产和公众开放继续 `NO_GO`,公众注册继续关闭。 ### 14.12 `BUILD-04` Attempt 004 失败关闭与 Attempt 005 启动 - Attempt 004 Stage 1 于 `2026-09-26T20:37:23+08:00` 至 `20:43:46+08:00` 全部通过,收据 SHA-256 为 `57d43ee5a2810ccb282253bf4f8fb82a5c114635e171cfc80296b367e66f8801`;四镜像身份、隔离启动、健康及迁移图只读检查成功,UAT 前后快照一致,未执行数据库迁移、未连接真实数据库、未发布主机端口。 - Stage 2 于 `20:52:24+08:00` 启动,在 Contract 收集和四分片之前 fail-closed:Docker 返回 125,因 `/candidate` 已只读且解压源码中不存在 `.runtime`,运行时无法为嵌套 tmpfs 自动创建挂载点。Stage 2 失败收据 SHA-256 为 `8be239153cb2400d4776c9ed00493f865b20a8e253d37ddb3956507f76f20eeb`;测试分片执行数为 0,UAT 前后快照 SHA 一致且无 attempt 容器残留。 - 独立最小反例已验证:只在独立仓外源副本中预建空 `.runtime` 目录后,同一无网络、只读源码、cap-drop、tmpfs 挂载可写探针退出 0,同时 `/candidate` 其余路径写入仍被拒绝。该动作不增加、删除或改写候选的 1,705 个 manifest 文件。 - Attempt 005 于 `2026-09-26T20:58:08+08:00` 启动;唯一新增修正是在首次 1,705 文件/哈希验证后,于 attempt-local 解压副本预建空 `.runtime` 挂载点,并在全部测试后断言该宿主目录仍为空。产品源码、测试断言、四分片、精确 8 个允许跳过和发布边界均不改变;Stage 1 仍必须全量重跑。 - 内部受控试点、UAT、生产和公众开放继续 `NO_GO`,公众注册继续关闭。 ### 14.13 `BUILD-04` Attempt 005 失败关闭与 Attempt 006 通过闭合 - Attempt 005 Stage 1 于 `2026-09-26T21:05:12+08:00` 至 `21:11:34+08:00` 全部通过,收据 SHA-256 为 `223758f279e946f9f97e1be1c1caa15ba7722b76eaffeae7d05a4d9e716bda32`;四镜像身份、隔离启动、健康及迁移图只读检查成功,UAT 未改变,无真实数据库、迁移、Provider 或宿主端口。 - Stage 2 于 `21:17:01+08:00` 至 `22:02:27+08:00` 失败关闭:collection 1,643 项、退出 0;第 1 分片 `612 passed`、退出 0;第 2 分片 `276 passed / 3 skipped / 2 failed`、退出 1;第 3、4 分片及 evaluator 未启动。Stage 2 失败收据 SHA-256 为 `c631ad8d4b53d84818ae2500a34cbce7fa046d62b3666a2d97780d9a1f44877b`。 - 两个失败是容器内未继承外层 `umask 077`,导致测试授权文件为 `0644`,产品 CLI 按 owner-only 规则正确拒绝;第三个 skip 及四个未收集的真实收据回放用例源于冻结时已分离的 QA 材料未在隔离作业中恢复。未证实产品 P0/P1,但完整 Contract 门禁仍为硬阻断。 - Attempt 005 的失败处置 SHA-256 为 `6d00144aaee85a84d3602e677ad50913a9c80b6bfcbb9f3ace72c6bcec406f04`;可读摘要 SHA-256 为 `82f3e475e9d9a914695e40652ada0862b75802280cd9aa733a572a9d42564c5f`;187 文件持久内容索引 SHA-256 为 `a84406e963ac860f6c7f7724aac6fff158406a0da3ff9c43b988eba159d86ff5`。完整副本位于 `D:\yuqei-build-artifacts\ai-contract-platform\post-freeze-5f4f0d7f\BUILD-04\build04-attempt-005-20260926T205808+0800`。 - Attempt 006 于 `2026-09-26T22:19:18+08:00` 启动。相对 Attempt 005 仅在每个 pytest 容器内执行 `umask 077` 并验证新文件模式为 `0600`,同时从 freeze evidence archive 精确恢复四个 SHA 固定的外部 QA 文件,以只读嵌套挂载注入并启用缺失即失败;产品源码、测试断言、四镜像 digest 和精确 8 个允许跳过均未改变。 - 直接反例原始包装因错误要求 `session.json` 只能有两个字段而保留为 `FAILED`;其 pytest、reports 和 JUnit 实际一致为 `7 passed / 0 skipped / 0 failed`、退出 0、未 OOM。独立误判裁定 SHA-256 为 `ca0bd05a6b95190257c2ef9c9fc0fa60c98162d5af671e9e766eb11fb135149f`,且原失败收据未覆盖;独立复核结论为 `GO`,无需重跑直接反例。 - Attempt 006 终版初始控制清单为 24/24,SHA-256 `a4e2809e0708aa5c5979163b089a0bc4277d58551859cdc05b9a4e0576c4796b`。Stage 1 于 `2026-09-26T22:41:52+08:00` 至 `22:48:12+08:00` 通过,收据 SHA-256 为 `ce47b31b3bf2b27bec28fadb0d767cfbb1f33ba8847a6f8ba78244b4c3265f51`;四镜像身份、隔离启动、健康、迁移文件可读性、清理及候选后置校验均通过,UAT 前后快照 SHA-256 均为 `6f2197e74823921000eabf2dc6a07ac3b98df66a3bcb19f4b722bdce9229c6f4`,残留 attempt 容器/网络均为 0。 - 新 Stage 1 收据 SHA 已同步写入 Stage 2 与 host guard,重新生成后的 24 项控制清单 SHA-256 为 `2fae149faa34f606c958a172b2cce02465ecf5b335d277d1265daefbcf027dae`;远端 24/24 哈希、两份 Bash 语法及四份 Python AST 已复核通过。当时正式 Stage 2 仍等待独立 `GO`,未因 Stage 1 通过而提前启动或提升 `BUILD-04` 状态。 - 独立复核于正式启动前给出 `GO`,确认新 Stage 1 收据、双点绑定、24/24 清单、四份冻结外部 QA 输入、只读边界和失败关闭语义均成立;未发现 P0/P1。Stage 2 于 `2026-09-26T22:55:26+08:00` 使用精确批准的控制清单 SHA 启动,从零执行 collection 与四分片,任何分片失败均停止后续派发。 - Stage 2 于 `2026-09-27T00:11:13+08:00` 完成并返回 0;收据 SHA-256 为 `330946dd3a9e33cdd4abe420c37a94728a3c5195c95a2985caf259f58f6ebadb`,评估 SHA-256 为 `c199555fed15ad04a12df9ec5e3009e2b428f8ae0fd9f15b92765248995089bc`。共收集 `1,647` 项,`1,639 passed / 8 allowlisted skipped / 0 failed / 0 errors`;四分片覆盖完整且无重叠,1,705 个 manifested source files 前后验证 SHA-256 均为 `e3662d452d18668a185eb4557ea22dbe9a61c65f6867701a41b8a59f801d4b5b`,UAT 前后 SHA-256 均为 `6a7279aaf8a47d1cfa692135f63f983b1ffd448535c4090c831faa3badd90965`,无真实数据库、迁移、Provider、宿主端口或残留 attempt 容器/网络。 - 完整 Stage 2 证据已复制到 Attempt 006 本机持久目录。独立技术及证据终审结论为 `GO`,P0 为 0、P1 产品缺陷为 0;技术处置 SHA-256 为 `2d8e5700c9ea4b1f6bd14750a6ae04c221efd22adedaa5eaf2f8227ea2dcf9c3`,可读摘要 SHA-256 为 `102951cac27c0050f34d9461b727205917266cb604386cf19597302bf954dc7c`。 - 持久证据内容索引核验 `249/249` 个文件、`25,130,494` 字节,路径逃逸、大小或哈希不匹配及大小写重复均为 0;索引 SHA-256 为 `9305816d11c92d99888cd79e3a0f156ecf7f56fdd167e8a9b7d6242395fb7ff8`。索引明确排除随后写入的闭合收据及 `preflight-discarded-pycache/**` 下四个非证据缓存文件,未删除既有材料。 - Attempt 006 于 `2026-09-27T00:28:30+08:00` 正式闭合为 `PASSED`;闭合收据 SHA-256 为 `aa044fb5131238ccef22010fce8efa5d1373def4ffa8361e6ccd1105f8954d09`。因此 `BUILD-04` 转为 `PASSED`,当前唯一下一任务为 `BUILD-05 / READY`、尚未开始;`BUILD-06` 仍为 `BLOCKED`。 - 内部受控试点、UAT、生产和公众开放继续 `NO_GO`,公众注册继续关闭。 ## 十五、计划维护规则 - 日常执行只更新机器台账中的状态、attempt、证据索引、blocker、owner 和时间;本文的范围、顺序和完成定义不得在执行中随意扩张。 - 如需改变范围、候选、发布标准或公众上线条件,必须由用户/发布负责人明确决定,并创建新版本文档;旧版本保留,不覆盖历史。 - 状态优先级为:**真实冻结/运行收据 > 本计划机器台账 > 历史方案状态段**。 - 本计划全部落地后,将状态改为 `COMPLETED`,记录最终 release、镜像 digest、上线决定和证据索引;不自动开启新阶段。