Expired daily files are pruned before a new backup, a verify older than 36 hours raises an alert, and the host monitors call sudo with the production env file. The Linux 0600 check is on the staging quick list. Co-Authored-By: Grok (agent loop)
3.0 KiB
3.0 KiB
进度 · 内测安全网修复单 2(2026-10-15)
- 分支:
codex/beta-safety-net-20261014 - 任务书:
docs/tasks/TASK-beta-safety-net-fix2-20261015.md - 被打回的提交:
5c0d895391b5d0806c98de669a2e9cdcd61e3335 - 先合并最新
origin/staging(32b238cf),没有改写已经推送的提交。
做了什么
- 合并时安全网旧编号和内测容量撞号。容量保留 BUG-1355~1357。安全网顺延为 BUG-1358~1361。这次三条例外是 BUG-1362、BUG-1363、BUG-1364。
- 飞书测试写完环境文件后改成 0600。脚本里「Linux 上必须是 0600」的检查没改。这个测试文件加进 staging 自动门禁的 quick 清单。
- 每日工作流先清理过期的每日备份,再做新备份。磁盘到 70% 时仍会拒绝备份,但旧的每日文件不会因此永远留着。70% 这条拒绝本身没改。
- 生产主机上的磁盘检查同时看
daily-backup-latest.env的VERIFIED_AT。缺失,或比现在早超过 36 小时,告警一次;重新变新后再发一次已恢复。探活模式不读这份文件。 - 错误汇总和按请求查日志改为
sudo -n docker,并显式传入生产编排和../.env.production.database。 - 飞书请求加了
--fail,响应里的code必须是 0。失败时不写入已发送记录。同一服务、同一路由、同一错误码 30 分钟内不重复发。 - 容器日志先去掉行首的服务名前缀,再按时间排序。
- 上一轮「每日备份不改当前恢复点」没有重做。四个已有生产工作流、staging 工作流、
gated-paths.txt、is-docs-only-range.sh没改。
跑过的检查
| 检查 | 命令 | 结果 |
|---|---|---|
| 安全网 | .venv\Scripts\python.exe -m pytest tests/test_beta_safety_net.py -q |
20 通过,退出码 0 |
| 隐私标记 | .venv\Scripts\python.exe -m pytest tests/test_repo_privacy_markers.py -q |
62 通过,退出码 0 |
| 前端 tsc / lint | 未跑 | 没有改网页 |
| Python 快速门 | 未跑 | 按本轮约定不跑 |
| 数据库测试 | 未跑 | 没有改数据库 |
| shellcheck | 未跑 | 本机没有这条命令 |
断言变更
| 位置 | 原值 | 新值 | 原因 |
|---|---|---|---|
| 飞书测试桩的响应正文 | ok |
{"code":0} |
发送方现在要求飞书 code 为 0。请求体字段断言没改 |
| 磁盘测试的准备数据 | 不提供每日核对记录 | 提供一份核对时间等于当前时间的记录 | 磁盘模式会同时检查核对时间。没有记录会多一条告警。磁盘告警原文断言没改 |
偏离
- 任务书写
verified_at。上一轮文件里的键是VERIFIED_AT。这次读这个键,没有改名。 - 本机
os.chmod(path, 0o600)之后,stat仍是0o666。Windows 存不下 Unix 权限。0600 相等断言只在 POSIX 上执行;chmod每次都会调用。Linux 上的脚本检查保持原样。 - 没有在这台 Windows 上安装到生产,没有点任何生产按钮。主机安装和恢复演练仍留给产品。