diff --git a/.trellis/tasks/08-08-production-deployment-execution/implement.md b/.trellis/tasks/08-08-production-deployment-execution/implement.md index d6300630..1a1e15a8 100644 --- a/.trellis/tasks/08-08-production-deployment-execution/implement.md +++ b/.trellis/tasks/08-08-production-deployment-execution/implement.md @@ -22,7 +22,7 @@ - [ ] **刻意次序调整:**本轮 target gate 不再是第一条生产命令;历史身份恢复、refresh exact probe、systemd contract/公网 origin 核对、远端 `POSTGRES_DB` 只读引导四步探测排在其之前。四步全程只读、逐步 fail-closed,任一失败均不得进入 target gate 或 Prisma status。 - [x] 从 `34181e3` 只读恢复历史 `DEPLOY_SERVER`、`REMOTE_DIR`,从 `5e2d03893826` 恢复首次显式冻结的 `COMPOSE_PROJECT_NAME`,并要求两份历史记录的 `REMOTE_DIR` 一致;仅保存在当前进程,不把值写入 task、日志或对话。 -- [ ] 无回显探测 `DEPLOY_REFRESH_SERVER`,要求 exact forced-command `probe` 唯一 PASS;多个候选或零候选均 PAUSED。 +- [x] 无回显探测 `DEPLOY_REFRESH_SERVER`,要求 exact forced-command `probe` 唯一 PASS;多个候选或零候选均 PAUSED。 - [x] 修改 production preflight:取消对合法 `trialrun` 命名的单独拒绝,增加部署目标、远端目录、Compose project、systemd contract、公网 origin 的精确身份对账;保留回环/零地址/local regression/staging/shadow/placeholder 防线。 - [x] 增加只读数据库身份 bootstrap:身份组匹配后读取远端 `.env` 的 `POSTGRES_DB`,在远端转换为 SHA-256 比较基线后仅在内存中传给 target gate;数据库名明文禁止离开远端、回显或落盘,读取失败或身份组不一致时不得进入 Prisma status。 - [x] 增加 synthetic fixture:合法 `hyb-oa-trialrun` 身份通过;错误目录/project/host/db、回环、staging、占位符和多 refresh 候选 fail-closed;断言 bootstrap 不泄露值且顺序早于 status。 @@ -96,3 +96,12 @@ - 历史提交 `34181e3` 的旧 `deploy.sh` 确有默认部署 target/目录,但当时尚未显式设置 Compose project;`5e2d03893826` 首次冻结 project 且沿用同一远端目录。两份证据共同证明该遗留命名与公网 origin 属于同一唯一运行环境,不能因 `trialrun` 字样单独拒绝。 - 现行 gate 尚未对 `DEPLOY_SERVER`、`REMOTE_DIR`、`COMPOSE_PROJECT_NAME` 与独立预期身份做精确对账;本节修订只允许先改部署/QA tooling,不改业务代码或生产数据。 - 修订后的第一条远端动作仍是只读身份 bootstrap;数据库名读取排在 exact identity 匹配之后,任何 bootstrap 或 target gate FAIL 都不得继续。 + +## Read-only Identity Bootstrap Evidence (2026-08-08) + +- tooling 提交 `f11e2f2` 已进入 `origin/main`;执行前 provenance 为 `published=true`、`remoteVerified=true`,工作区 clean。 +- 使用 `PRODUCTION_READ_ONLY_PREFLIGHT=1` 启动只读身份引导。历史 target/目录与首次显式 project 记录解析成功;refresh forced-command `probe` 恰好一个候选精确 PASS,候选身份未回显。 +- systemd deployment contract 读取成功且六项结构校验通过,但当前 `REMOTE_DIR` 与已批准历史精确基线不一致;稳定停止码为 `SYSTEMD_REMOTE_DIR_MISMATCH`。 +- 门禁在数据库身份引导前停止:未读取或生成 `POSTGRES_DB` 比较基线,未运行 13 项聚合体检、target gate、`prisma migrate status`、`_prisma_migrations` 对账或 `terminated` 行数查询,因此 rollback window 仍为 `UNKNOWN`,不得推断 OPEN/CLOSED。 +- 未调用 `deploy-existing.sh` 的 preflight/deploy 阶段,未进入 `deploy.sh`、rsync、`migrate deploy`、应用切换、refresh 或公网 smoke;生产 schema 写入与业务写入均为 0。 +- 失败后未改用当前 contract 自述覆盖历史预期、未跳过目录精确比较、未继续推进。后续必须先独立确认当前 contract 目录变更的来源与公网环境归属,再修订批准基线或恢复正确 contract。