记录(08-08-production-deployment-execution): 暂停于预状态错误码遮蔽
这个提交包含在:
@@ -20,7 +20,7 @@
|
||||
|
||||
## 1.1 拓扑校准与 tooling 修订(生产前)
|
||||
|
||||
- [ ] **刻意次序调整:**本轮 target gate 不再是第一条生产命令;历史身份恢复、refresh exact probe、systemd contract/公网 origin 核对、远端 `POSTGRES_DB` 只读引导四步探测排在其之前。四步全程只读、逐步 fail-closed,任一失败均不得进入 target gate 或 Prisma status。
|
||||
- [x] **刻意次序调整:**本轮 target gate 不再是第一条生产命令;历史身份恢复、refresh exact probe、systemd contract/公网 origin 核对、远端 `POSTGRES_DB` 只读引导四步探测排在其之前。四步全程只读、逐步 fail-closed,任一失败均不得进入 target gate 或 Prisma status。
|
||||
- [x] 从 `34181e3` 只读恢复历史 `DEPLOY_SERVER`,从 `5e2d03893826` 恢复首次显式冻结的 `COMPOSE_PROJECT_NAME`;确认历史 `REMOTE_DIR` 只是未验证 fallback,不作为身份基线。值仅保存在当前进程,不写入 task、日志或对话。
|
||||
- [x] 无回显探测 `DEPLOY_REFRESH_SERVER`,要求 exact forced-command `probe` 唯一 PASS;多个候选或零候选均 PAUSED。
|
||||
- [x] 修改 production preflight:取消对合法 `trialrun` 命名的单独拒绝,增加部署目标、远端目录、Compose project、systemd contract、公网 origin 的精确身份对账;保留回环/零地址/local regression/staging/shadow/placeholder 防线。
|
||||
@@ -29,12 +29,12 @@
|
||||
- [x] 增加 synthetic fixture:合法 `hyb-oa-trialrun` 身份通过;错误目录/project/host/db、回环、staging、占位符和多 refresh 候选 fail-closed;断言 bootstrap 不泄露值且顺序早于 status。
|
||||
- [x] 增加 `PRODUCTION_READ_ONLY_PREFLIGHT=1` 停止点:完成 target/pre-status 与回滚窗口后、进入 `deploy.sh` 前退出;只读证据复核通过前不得运行写入路径。
|
||||
- [x] 增加 `PRODUCTION_IDENTITY_ONLY=1` 停止点:以 contract 定位远端 `.env`/容器并完成 origin 双取样后,冻结 contract `REMOTE_DIR` 为进程内精确基线并立即退出;不得读取数据库名、运行 13 项体检或 Prisma。
|
||||
- [ ] 重新运行部署安全测试、shell/Node syntax、task/governance/sensitive/diff 门禁,提交并推送新的候选后重新通过 provenance。
|
||||
- [x] 重新运行部署安全测试、shell/Node syntax、task/governance/sensitive/diff 门禁,提交并推送新的候选后重新通过 provenance。
|
||||
|
||||
## 2. 生产 preflight(全部只读)
|
||||
|
||||
- [ ] 在同一进程内加载现行 OPS7 origin、历史身份恢复结果、exact refresh identity、只读 DB bootstrap 结果和 `EXPECTED_PENDING_MIGRATIONS`;不把任何值写入仓库或对话。
|
||||
- [ ] 先运行 `check-existing-deployment.sh`,记录 13 项真实 PASS/FAIL 数字;任何 FAIL 停止。
|
||||
- [x] 在同一进程内加载现行 OPS7 origin、历史身份恢复结果、exact refresh identity、只读 DB bootstrap 结果和 `EXPECTED_PENDING_MIGRATIONS`;不把任何值写入仓库或对话。
|
||||
- [x] 先运行 `check-existing-deployment.sh`,记录 13 项真实 PASS/FAIL 数字;任何 FAIL 停止。
|
||||
- [ ] 运行 `deploy-existing.sh` 内置的 source/target/preflight,或按同一 wrapper 的只读阶段执行;人工阅读 target gate 原始输出和 Prisma status marker 原文。
|
||||
- [ ] 核对 candidate migration manifest、`_prisma_migrations` applied/异常/pending 集合和批准 allowlist;未知 pending、failed、rolled-back、unfinished、diverged 或目标身份不确定均 `PAUSED`。
|
||||
- [ ] 同一只读窗口查询 `terminated` 行数,记录 `rollbackWindow=OPEN|CLOSED`、实际 count 和读取时间;确认这是部署前快照。
|
||||
@@ -117,3 +117,14 @@
|
||||
- 只有上述 origin 双取样通过后,当前 systemd contract 的 `REMOTE_DIR` 才被冻结为本进程 `EXPECTED_REMOTE_DIR`;目录字面值未回显、未写入 task、日志或证据文件。
|
||||
- identity-only 在目录基线冻结后立即退出:未读取 `POSTGRES_DB`、未生成 DB hash、未运行 13 项聚合体检、target gate、`prisma migrate status`、迁移表对账或 `terminated` 行数查询,rollback window 仍为 `UNKNOWN`。
|
||||
- 未调用 `deploy-existing.sh`、`deploy.sh`、rsync、`migrate deploy`、应用切换、refresh 或公网 smoke;生产 schema 写入与业务写入均为 0。进入数据库身份和 pre-status 前仍需用户复核本节证据。
|
||||
|
||||
## Read-only Pre-status Attempt Evidence (2026-08-08)
|
||||
|
||||
- 责任边界记录提交 `bf23664` 已进入 `origin/main`;执行前 provenance 为 `published=true`、`remoteVerified=true`,工作区 clean。
|
||||
- 使用 `PRODUCTION_READ_ONLY_PREFLIGHT=1` 执行。历史 target/project、refresh exact probe、origin 双取样、contract 目录冻结和远端 DB hash 引导通过,稳定输出 `exact_identity_group`;数据库名、目标、路径均未回显。
|
||||
- `check-existing-deployment.sh` 的 13 项全部真实 PASS:`PASS=13 FAIL=0`,包括部署身份、六项 contract、仓库/环境/数据目录、唯一 runtime、build、storage/PGDATA mount、backup build 和 refresh program。
|
||||
- production preflight 在 Prisma status marker 产生前停止,外层稳定码为 `PRISMA_STATUS_OUTPUT_MISSING`;脱敏 `preflight-output.txt` 为空,未生成 `prisma-migrate-status.txt`。因此没有可审查的 status 原文,不能判定 pending、applied、failed、diverged 或 schema up to date。
|
||||
- 代码复核确认 `production-preflight.mjs` 先在 `rawStatus == null` 时抛 `PRISMA_STATUS_OUTPUT_MISSING`,之后才在 `result.status !== 0` 分支解析远端 stderr 安全码;本次真实远端停止码被该顺序遮蔽,不能从现存 evidence 恢复,也不得猜测。
|
||||
- DB hash 引导成功只证明远端 `.env` 数据库名已形成比较基线,不证明后续 `.env` / `current_database()` / runtime `DATABASE_URL` 三方一致性;远端 preflight 未输出 `target_identity_and_database_identity` PASS,故该验收项保持未通过。
|
||||
- 未获得 migration reconciliation、pending allowlist 对账或 `terminated` count;rollback window 仍为 `UNKNOWN`,不得写作 OPEN/CLOSED。
|
||||
- `PRODUCTION_READ_ONLY_PREFLIGHT=1` 未进入 `deploy.sh`;未执行 rsync、`migrate deploy`、应用切换、contract refresh 或业务 API,生产 schema 写入与业务写入均为 0。失败后未重跑、未跳过门禁。
|
||||
|
||||
在新工单中引用
屏蔽一个用户