Safety-net records move to BUG-1358 through BUG-1361 because staging already uses BUG-1355 through BUG-1357 for capacity. Co-Authored-By: Grok (agent loop)
3.1 KiB
3.1 KiB
进度 · 内测安全网(2026-10-15)
- 分支:
codex/beta-safety-net-20261014 - 基线:开工时
origin/staging为71f7fac3a13f817f91755ff01b25b8706380ae19 - 前置:
09906cdc(发布通路)和4c3485bc、3893783e(#58)都已是这个基线的祖先。deploy/docker-compose.server.yml在加日志段之前没有 #58 留下的未合入冲突。 - 编号:本文件最大号是 BUG-1353。本单当时写成 BUG-1354(没有每日备份)、BUG-1355(没有探活和磁盘告警)、BUG-1356(日志不轮转、不能按请求编号查)。合并 staging 后 BUG-1354 已被更早的答题强度记录占用,三条顺延为 BUG-1355、BUG-1356、BUG-1357。2026-10-15 再次合并 staging 时,这三个号已被内测容量占用,最终编号是 BUG-1358、BUG-1359、BUG-1360。
做了什么
- 新增每日备份工作流。北京时间 04:00,只在
main上跑,调用现有的deploy/run-production-recovery.sh。产物默认留 14 天。主机上只清理超过 7 天、且文件名严格是production-daily-的加密备份和对应校验文件。 - 恢复脚本增加可选前缀。不设置时文件名仍是
production-pre-migration-。每日任务把它设为production-daily。加密、还原校验、锁和磁盘 70% 拒绝没有改。 - 探活、磁盘、错误汇总、飞书文本消息(可选签名)。没有 Webhook 时只写本机日志。
- 两个编排文件的每个服务加上相同的日志上限:json-file,20 MB,10 个文件。镜像、环境、端口、健康检查没改。
- 按 UUID 查 web / api / caddy 日志的只读脚本。拒绝其它写法。
- 恢复演练步骤和空白结果模板。安装步骤写在
deploy/README.md和BLOCKED.md。
跑过的检查
| 检查 | 命令 | 结果 |
|---|---|---|
| 安全网测试 | .venv\Scripts\python.exe -m pytest tests/test_beta_safety_net.py -q |
13 通过,退出码 0 |
| 隐私标记 | .venv\Scripts\python.exe -m pytest tests/test_repo_privacy_markers.py -q |
退出码 0 |
| 编排能否解析 | docker compose -f deploy/docker-compose.server.yml -f deploy/docker-compose.postgres.yml config --quiet |
退出码 0。本机没有真实环境文件,检查时用了临时空文件,没有提交 |
| shellcheck | 无 | 本机没有这条命令 |
| 前端 tsc / lint / 全量测试 | 未跑 | 没有改网页 |
| Python 快速门 | 未跑 | 按本轮约定不跑 |
| 数据库测试 | 未跑 | 没有改数据库 |
偏离
- 没有改现有的四个生产工作流,也没有把它们的 SSH 步骤抽成共用脚本。新工作流自己复制了同一套 SSH,并调用同一个恢复脚本。
- 没有往网页或接口日志里加新字段。现有观测记录已经有 requestId 和 errorCode。错误汇总会丢掉含有汉字、邮箱或第二个日期的整行,避免把对话带出去。因此中文报错不会进入计数。
- 探活外发不带提交号,只带错误码
commit_changed。提交号留在 runner 本机状态里。 - 本机没有生产主机,没有登录 runner,没有手动触发生产工作流。告警和定时备份要等产品安装,见
BLOCKED.md。