38 行
2.2 KiB
Markdown
38 行
2.2 KiB
Markdown
# 自动备份运行身份失败实施清单
|
||
|
||
## 1. Pre-fix
|
||
|
||
- [x] 确认 daily service 02:30 非零退出且告警类别为 `phase_runtime_identity_failed`。
|
||
- [x] 按 runner 的 Compose 选择逻辑确认唯一根因为附件宿主挂载不匹配。
|
||
- [x] 确认不是 symlink/realpath/inode 等价,其他五项 runtime identity 通过。
|
||
- [x] 确认最近成功恢复点约 11 小时,尚未超过 watchdog/dead-man 窗口。
|
||
- [x] 确认 07:10 `phase_stale_check_failed` 由 watchdog 复用同一 runtime identity 检查触发,不是独立的归档损坏结论。
|
||
- [x] 运行本地 `bash scripts/qa/run-automatic-backup-contract.sh`(73 项通过)。
|
||
|
||
## 2. Unit Refresh
|
||
|
||
- [x] 重新只读解析当前实际附件 mount source并验证安全边界。
|
||
- [x] 保存六个自动备份 unit 的 root-only 临时快照。
|
||
- [x] 沿用现有 unit 合同,仅替换实际附件宿主目录,调用安装器 `enable`。
|
||
- [x] 验证 daily/watchdog/drill timers enabled/active 和六项 runtime identity 全部匹配。
|
||
|
||
## 3. Recovery Backup
|
||
|
||
- [x] 手工启动 daily service;记录稳定 phase/result,不输出原始日志。
|
||
- [x] 验证新的 last-success 时间、项目/build 身份和 manifest 哈希格式。
|
||
- [x] 通过仅在 ARM finalize 成功后写入的 success state 验证新归档闭环;普通 ARM 账号无 archive 读取权限,未扩大权限取证。
|
||
- [x] 验证 alert state 为 `PASS_AUTOMATIC_BACKUP_COMPLETE`。
|
||
- [x] 用户确认群内只收到一条 `PASS_AUTOMATIC_BACKUP_COMPLETE / healthy` 恢复通知。
|
||
- [x] 验证应用健康 timer、备份 watchdog/drill 和 ARM dead-man/receiver 不受影响。
|
||
|
||
## 4. Cleanup and Governance
|
||
|
||
- [x] 删除临时 unit 快照;不删除旧目录、旧批次或失败证据。
|
||
- [x] 更新部署规约/checklist 的自动备份 unit 漂移门禁。
|
||
- [x] 运行 task validate、governance、sensitive、docs audit 和 `git diff --check`;全部无错误,docs audit 仅保留既有 22 项未登记文档 warning。
|
||
|
||
## 5. Rollback
|
||
|
||
- unit 刷新或 identity 复检失败:恢复六个 unit 快照并 daemon-reload,不补跑备份。
|
||
- 补跑在 paired/offhost phase 失败:保留已纠正 unit,依据安全 phase 诊断继续处理,不回退旧附件目录。
|