# AI 合同平台 V2 生产外部门禁闭环 日期:2026-08-11 ## 当前结论 六项外部门禁已收敛为一个必须由真实自然人完成的入口:具名法务本人对精确技术包和产品黄金套件作出批准并使用本人控制的 Ed25519 私钥签名。AI 不得代签,也不得把技术通过写成法务批准。 在该签名到位前,正式生产保持 No-Go:`yuqei-v2-production` 容器数为 0,`api.contact.yuqei.com` 根路径返回 503,未切换 DNS 或业务流量。签名到位后,余下 finalize、receipt pin、production preflight、备份恢复、双节点 canary、撤销和 kill switch 演练均已有确定命令和基础设施,不再需要新增产品代码。 ## 六项状态 | 门禁 | 状态 | 已完成证据 | 剩余动作 | | --- | --- | --- | --- | | 1. 具名法务签署 | 外部阻塞 | 固定包 SHA-256 `ed1830430e8049397800cc75e9c24bac85a093a268bb669cf9d8db862adac9f2`;18 条 Provider 结果、10 张知识卡、31 条合同生成/条款推荐黄金用例均完成技术对账;离线签署/验签工具和 runbook 已完成 | 法务本人提供真实身份字段,审阅并亲自签名 | | 2. acceptance receipt / promotion | 等待门禁 1 | receipt Ed25519 私钥只保存在共享预发布主机,公钥 keyring 已放入 production 验证目录;AI 镜像 digest 已固定 | 运行 `finalize`,生成真实 `acceptance_run_id`、receipt v2 和 promotion bundle | | 3. production env / TLS / DNS / 备份 | 准备完成,等待 receipt | `api.contact.yuqei.com` DNS 有效;专用 Let's Encrypt 证书有效至 2026-11-09;production env draft 权限 `0600`;preflight `21/24`,仅 receipt 三项失败;Compose config 通过;阿里云 NFSv4 异地挂载 70GB 可用 | 写入 receipt 和 SHA pin,将 draft 原子提升为正式 env;启动后执行首份备份及隔离恢复演练 | | 4. 双节点 canary | 准备完成,等待 receipt 和主节点 | `192.168.3.90` 与阿里云 `47.94.178.212` 为两个独立主机,通过 WireGuard 互联;第二节点已按 digest 拉取 Contract API 和 AI API 镜像并注销 Registry 凭据 | 主节点迁移完成后启动第二节点只读 AI canary,运行统一指纹、撤销 SLA 和 kill switch 验证 | | 5. support access | 生产首发闭环为禁用 | 运行 OpenAPI 中 `support-access`、`support_access`、`execute` 路径为 0;执行器恒为 false,默认 kill switch 为 true;无破坏性身份写 API | 首发不开放该能力。未来启用必须另行接入真实 IdP/MFA/会话设备绑定并取得隐私和法务具名批准 | | 6. 容量 | 完成 | 两轮只清理未引用 build cache;BuildKit 可回收量为 0;生产 PostgreSQL、MinIO、合同文件卷绑定到 `/home` 独立 LV(198GB 可用);异地备份 70GB 可用 | 上线后纳入磁盘告警;不得清理业务卷或 Registry 包 | ## 已发布的不可变镜像 - Contract API:`git.yuqei.com/yuqei/ai-contract-platform-contract-api@sha256:a6969d90680f866232f1ad2c09607fd63f226476028b6c0f34c3175e7407549f` - AI Platform API:`git.yuqei.com/yuqei/ai-contract-platform-ai-api@sha256:2924e68c337bc59be6bc45e6183f8dcf239d80151c4ca076ace4feee644f5d67` - AI worker:`git.yuqei.com/yuqei/ai-contract-platform-worker@sha256:a72d40a5a000e525c1b1d30fb2f2a214db8a32492308198783323be0817dbecc` - Contract Web:`git.yuqei.com/yuqei/ai-contract-platform-web@sha256:8132c515502668b9348a16dbb2c56154a65582af5c4c8efbae887538f0b59e33` - Release ID:`c24f7a4f1ee041d92feca96bf147e423e58da17c` 生产必须按 digest 拉取,不得只使用 tag 或本地 image ID。 ## 法务 evidence 公开只读地址: `https://api.contact.yuqei.com/provider/legal/provider-legal-review-evidence.json` - HTTP 200 - TLS 验证通过 - 重定向数 0 - 精确大小 33,582 bytes - SHA-256 `d3affadde5f3665a619c0424cc9e80c1cc9ee9af4eb157cba3cd558dabbbd7e4` 公网重新下载的文件与本地 canonical evidence 逐字节哈希一致。公开 evidence 只证明技术材料固定,不表示已经取得法务批准。 ## 用户最小配合项 请提供一位实际承担审批责任的法务人员的: 1. 真实姓名; 2. 稳定的工作 ID,优先使用工作邮箱; 3. 职务; 4. 组织全称; 5. 法务公钥 `key_id`,建议 `provider-legal-2026q3`; 6. 批准有效窗口,最长 30 天。 法务本人需在受控电脑上生成并保管 Ed25519 私钥,按 `V2-named-legal-offline-signing-runbook-2026-08-11.md` 审阅、签署。私钥和口令不得上传仓库、聊天、共享预发布或 CI artifact。安全/运维只接收法务公钥并将其加入 trusted keyring。 ## 签名后的固定自动顺序 1. 验证法务签名、trusted keyring 和公网 evidence exact hash。 2. 在共享预发布执行 `finalize`,生成真实 `acceptance_run_id`、receipt v2 和 promotion bundle。 3. 将 receipt、公钥 keyring 和 receipt SHA-256 pin 安装到 production,保持 kill switch 为 true 运行正式 preflight。 4. preflight 全通过后拉取镜像,启动主节点但不接公网流量,完成迁移、备份和隔离恢复演练。 5. 启动阿里云第二只读节点,验证两节点同一 release/image/receipt/key 指纹。 6. 演练 receipt 撤销传播 SLA 和 kill switch;随后恢复到 fail-closed 状态。 7. 由用户单独授权后才修改 API 上游和切换流量;support access 和身份 execute API 继续关闭。 ## 2026-08-12 执行补录 具名法务审批、共享预发布 `finalize`、production receipt pin、production preflight、备份恢复和双节点只读验证已按上述顺序完成。真实验收运行 ID 为 `provider-acceptance-41663d1022d3f656769ed757`,receipt 为 `provider-receipt-de755dae13b02c79bdce5302`,receipt SHA-256 为 `6602584347833b389c1d714a4ce08ccffdcbbc8c289657d2d9bd3bff5c6e70c7`。 现场演练结果:receipt 公钥撤销在两个节点于 `2.64s` 内传播;临时关闭 kill switch 后两节点均以 `ready`、`release_allowed=true` 和相同 release/receipt/key/image 指纹通过 canary;随后两节点均恢复为 kill switch `true`、`blocked`、`release_allowed=false`。完整证据和文件 SHA-256 见 [V2-provider-promotion-field-evidence-2026-08-12.md](V2-provider-promotion-field-evidence-2026-08-12.md)。 本补录只关闭 Provider promotion 的现场门禁,不代表公网流量切换已获准。`edge` 未启动,DNS/业务流量未改变,support access、身份执行器和破坏性身份写 API 继续关闭。