修复(08-08-production-deployment-execution): 明确终止迁移回滚窗口依据
这个提交包含在:
@@ -151,3 +151,17 @@
|
||||
- preflight 仅从该候选派生 `BUILD_SHA=<完整 commit>` 与 `VITE_BUILD_SHA=<前 12 位>`,并传给远端 Compose;不使用 7 位 Git 默认短 hash。远端 helper 在 `docker compose config` 前校验完整/短 SHA 格式以及 `VITE_BUILD_SHA === BUILD_SHA.slice(0, 12)`。
|
||||
- 此处 `docker compose config` 验证的是候选发布后将生效的配置,不代表当前运行容器已经使用该 build SHA;运行态仍须由后续只读 runtime/SHA 检查独立证明。禁止用 `--no-interpolate` 绕过 Compose 的必填变量合同。
|
||||
- 聚焦测试保持 19/19 PASS,并新增候选完整/12 位注入、7 位短 SHA 拒绝、合法但不匹配 SHA 拒绝、禁止 HEAD fallback 的覆盖;Node/shell syntax 与 env contract PASS。
|
||||
|
||||
## Empty-Allowlist Migration Discovery Evidence (2026-08-08)
|
||||
|
||||
- 候选配置修复提交 `8b2ed5b` 已进入 `origin/main`;执行前 provenance 为 `published=true`、`remoteVerified=true`,工作区 clean。
|
||||
- 使用空 `EXPECTED_PENDING_MIGRATIONS` 重跑只读 pre-status:精确身份组、13 项聚合体检和 `.env` / `current_database()` / runtime `DATABASE_URL` 三方数据库身份均 PASS;脱敏 Prisma status 显示运行镜像包含 64 条 migration 且对自身为 `Database schema is up to date!`。
|
||||
- 候选 manifest 包含 65 条 migration;独立候选清单与生产 `_prisma_migrations` 差集发现唯一 pending 为 `20260807193000_contract_registry_termination_workspace`,因此稳定停止码为 `PROD_MIGRATION_PENDING_ALLOWLIST_MISMATCH`。这证明运行镜像 status 不能替代候选差集门禁。
|
||||
- 该 migration SQL 已复核为三个可空列、一个索引和一个 `ON DELETE RESTRICT` 外键,无 drop/truncate/delete 或数据改写;用户已明确批准把它加入下一次只读 pre-status 的 allowlist。
|
||||
- 空 allowlist 停止发生在窗口查询前,故 `terminated` count 未读取、rollback window 仍为 `UNKNOWN`;未进入 `deploy.sh`、rsync、migration、应用切换、refresh 或业务 API,生产 schema 写入与业务写入均为 0。
|
||||
|
||||
## Explicit Rollback-window Basis Repair Evidence (2026-08-08)
|
||||
|
||||
- termination migration 尚未应用时,终止能力不可能由本轮应用生效;helper 现以 `_prisma_migrations` applied set 走显式分支,不发送 `contract_registry` 状态查询,固定输出 `rollbackWindow=OPEN terminatedRows=0 basis=migration_not_applied`。
|
||||
- migration 已应用时继续执行真实 `status = 'terminated'` 计数,输出 `basis=terminated_status_count`;查询失败或结果不可解析分别返回固定错误,不使用 catch/default 把未知状态误报为 OPEN。
|
||||
- 聚焦 fixture 覆盖:未应用且状态查询被设置为必失败仍应 OPEN(证明未查询)、已应用 0 行 OPEN、已应用 2 行 CLOSED,以及已应用查询失败必须 `PROD_TERMINATED_COUNT_UNAVAILABLE`。聚焦测试 19/19 PASS。
|
||||
|
||||
在新工单中引用
屏蔽一个用户