记录真实运行恢复只读基线(07-26-internal-ops-recovery-baseline)
ci-e2e / e2e (push) Waiting to run
ci-minimal / check-minimal (push) Waiting to run

这个提交包含在:
2026-07-26 20:58:12 +08:00
父节点 706941eb5c
当前提交 7658051321
共修改 4 个文件,包含 82 行新增和 2 行删除
@@ -9,7 +9,8 @@
- [x] 增加隔离合成数据演练,覆盖成功往返及关键负向场景。
- [x] 更新 runbook/checklist 和部署规约,区分普通备份、影子演练和真实事故恢复。
- [x] 运行任务测试计划和 Trellis 治理门禁;按实际结果记录本地 RTO,不伪造 `/ready` 或异机证据。
- [ ] 在单独授权后再执行真实运行来源、职责分离、异机副本和 `/ready` 验收。
- [x] 在单独授权后完成真实运行来源、职责分离、异机副本和 `/ready` 的只读核查,并如实记录 `NO_GO` 缺口。
- [ ] 经后续明确授权完成提交发布、成对异机备份、真实职责分配、部署/迁移和真实格式影子恢复后复验。
## 推荐文件边界
@@ -70,6 +70,14 @@
- 演练覆盖 manifest/校验和、错误确认、正式风格库名、损坏 DB、损坏 tar、非空附件目录、默认试运行附件目录和危险 tar 路径拒绝。
- 该证据不包含真实业务数据、真实运行实例、异机副本或部署后 `/ready`,因此最后一项验收保持未完成。
## Live Read-Only Evidence
- 获批只读核查结果见 `research/live-read-only-baseline.md`,结论为 `NO_GO_FOR_FORMAL_INTERNAL_USE`。
- 公开 HTTPS、TLS、HSTS 和 `/ready` 当前可用,但运行环境没有后端/前端构建标识,且远端迁移少于本地当前基线。
- 真实角色只有一个活跃账号,财务和付款复核候选均为 0,不满足 maker-checker。
- 历史 DB/附件备份约 55 天未更新、无 manifest,且与运行数据位于同一设备;不能证明 RPO、异机副本或可恢复性。
- 当前本地提交尚未进入 upstream;未执行生产备份、角色修改、部署、迁移或恢复,因此最后一项验收继续保持未勾选。
## Notes
- Keep `prd.md` focused on requirements, constraints, and acceptance criteria.
@@ -0,0 +1,71 @@
# 真实内部实例只读基线
## 边界
- 核查日期:2026-07-26。
- 已获得只读核查授权。
- 未修改远程文件、环境变量、数据库、角色、容器、反向代理或企微配置;未执行备份、恢复、部署和业务写入。
- 证据只记录布尔值、数量、时间和短构建标识状态,不保存主机名、IP、SSH 别名、Secret、连接串、账号标识或业务正文。
## 公开入口
| 检查 | 结果 | 判断 |
| --- | --- | --- |
| HTTPS 首页 | `200` | 可访问 |
| TLS 证书 | 存在,截止 2026-10-19 | 当前有效,需纳入到期提醒 |
| HSTS | 存在 | 通过 |
| CSP | 未发现 | 非本批 P0,但公网继续使用时列入后续安全任务 |
| `/ready` | `data.ok=true` | 当前进程与基础依赖可用 |
| `/ready` 构建标识 | 缺失 | 无法由公开接口追溯运行 commit |
## 运行来源与迁移
| 检查 | 结果 | 判断 |
| --- | --- | --- |
| 容器 | server/db 正在运行,容器内 `/ready=true` | 运行中 |
| 运行端口 | 仍使用历史宿主端口基线 | 与当前 Compose 基线不一致 |
| `BUILD_SHA` | 容器未配置 | 无法证明运行来源 |
| 前端 build marker | 缺失 | 无法从静态资源证明运行来源 |
| Prisma migration | 远端已应用 58,本地当前 61;最新项不匹配 | 远端落后,禁止直接宣称当前版本已部署 |
| 本地来源门禁 | `commit_not_in_upstream` | 当前本地提交尚未进入 upstream,标准部署前必须先发布提交 |
## 角色和付款职责
只读聚合结果:
- 活跃员工账号:1。
- 活跃角色只有 `admin` 和 `employee`,属于同一账号的组合。
- 财务处理角色数量:0。
- `manager`/`ceo` 付款复核候选数量:0。
- 可形成不同自然人的制单/复核组合:否。
- 远端旧 schema 尚无当前 `system_admin` 角色值。
结论:当前真实角色配置不满足付款 maker-checker,也不满足“系统管理员与业务审批职责分开”的当前规约。不得启用真实付款闭环。
## 备份和恢复
| 检查 | 结果 | 判断 |
| --- | --- | --- |
| DB dump | 7 份 | 有历史产物 |
| 附件 tar | 7 份 | 数量上可配对,但无 manifest 证明批次关系 |
| manifest | 0 | 不符合新成对备份合同 |
| 最新产物年龄 | 约 1316 小时(约 55 天) | 明显过期 |
| 备份介质 | 与 DB 数据和附件目录位于同一设备 | 不构成异机/异盘副本 |
| 目录权限 | `755` | 备份目录可读范围偏宽,后续应按运维账号收紧 |
| 真实恢复证据 | 无 | 本地 6 秒合成演练不能替代真实格式影子恢复和 `/ready` |
结论:当前历史备份不能证明满足 RPO 24 小时、异机副本或可恢复性,不得作为正式启用依据。
## Go / No-Go
结论:`NO_GO_FOR_FORMAL_INTERNAL_USE`。
服务当前可访问不等于运行与恢复底线通过。进入下一步前必须按顺序完成:
1. 将当前获批代码提交进入 upstream,确保部署来源门禁可通过。
2. 在任何部署前,用新成对备份合同生成 DB + 附件 + manifest,并复制到异机/异盘。
3. 明确至少一名财务处理人和另一名 `manager`/`ceo` 付款复核人;系统管理职责单独分配,应急 `admin` 独立托管。
4. 通过获批部署任务升级代码和 3 项迁移,验证 `BUILD_SHA`、前端 marker、`/ready`、权限矩阵和回滚点。
5. 在独立影子目标恢复同一批次 DB/附件,验证应用 `/ready` 和关键附件引用,记录真实 RPO/RTO。
以上动作分别涉及发布、远程备份、真实角色写入、部署和影子恢复,必须继续取得明确授权,不能由本次只读批准推导。
@@ -32,6 +32,6 @@
"server/README.md",
".trellis/spec/hyb-oa/deployment-trialrun.md"
],
"notes": "本地阶段完成:成对备份、脱敏 manifest、影子库/空目录恢复门禁和合成数据演练已通过,最近本地参考 RTO 6 秒;真实运行来源、职责分离、异机副本和部署后 /ready 仍待单独授权。",
"notes": "本地安全基线已提交;获批真实环境只读核查结论 NO_GO:运行 commit 不可追溯、迁移落后、无财务/复核职责分离、备份约55天且同设备无manifest。提交发布、成对异机备份、角色写入、部署/迁移和影子恢复仍需另行授权。",
"meta": {}
}