# ARM 应用健康监控上线执行清单 ## 1. Local Gates - [x] 确认 `HEAD` 包含工作提交 `bb5113c`,三个部署源相对 `HEAD` 无未提交改动;允许当前 Trellis 任务记录保持未提交。 - [x] 运行应用健康专项 22 项和自动备份兼容回归 73 项。 - [x] 记录三个部署源文件的 SHA-256,不输出其他本地路径或配置。 ## 2. Read-only ARM Preflight - [x] 通过受控 alias 连接,确认非交互命令可用;首次 sudo 门禁停止,用户建立临时入口后复检通过。 - [x] 确认 Python 3、systemd、既有 off-host dead-man service/timer 和共用 helper 存在。 - [x] 在 ARM 内从 dead-man unit 解析 webhook 文件路径,并只返回 owner/mode/regular-file 布尔结果。 - [x] 确认公网 `/ready` 从 ARM 可达,且应用健康 unit、探测器和状态目录尚不存在;若存在则停止人工审查。 - [x] 记录既有 dead-man timer enabled/active 基线,后续只做对比,不主动执行。 ## 3. Disabled Installation - [x] 在 ARM 创建本次唯一临时目录,以 SCP 传输探测器、helper 和安装器并核对 SHA-256。 - [x] 用 root 运行安装器 `install`,webhook 路径只在远端 shell 变量中传递。 - [x] 确认 timer disabled/inactive、service inactive,unit 为 5 分钟、状态目录 0700、受管文件 root:root 0755。 - [x] 比较已安装探测器/helper 与提交源哈希一致。 - [x] 手工启动正式 service,确认健康、probe/alert state 为 0600 且没有发送恢复噪声。 ## 4. Enable and Real Drill - [x] 用同一提交源执行安装器 `enable`,确认 timer enabled/active。 - [x] 停止应用健康 timer;确认不影响备份 dead-man timer。 - [x] 确认选定 localhost 演练端口未监听。 - [x] 第一次直接失败探测:预期非零、`consecutiveFailures=1`、alert pending。 - [x] 第二次直接失败探测:预期非零、helper `sent=true`、alert state 为 `FAIL_APP_HEALTH`。 - [x] 第三次直接失败探测:预期非零、helper `sent=false`,证明相同类别降噪。 - [x] 运行正式 systemd service 恢复:预期成功、helper `sent=true`、alert state 为 `PASS_APP_HEALTH_READY`。 - [x] 再运行一次健康探测或等待 timer:预期 helper `sent=false`。 - [x] 重新启动 timer,确认 enabled/active、最近成功和下一次不超过 5 分钟。 ## 5. Final Evidence and Cleanup - [x] 确认既有备份 receiver/dead-man 文件和 timer 状态未改变。 - [x] 删除本次 ARM 临时传输目录和临时 sudoers 规则,不删除状态、helper、webhook 或备份能力。 - [x] 仅记录脱敏状态、类别、计数、哈希匹配和 timer 布尔证据。 - [x] 用户已确认群内实际收到一条故障告警和一条恢复通知。 - [ ] 更新 PRD 验收项、运行 task validate、治理检查和 `git diff --check`。 ## 6. Rollback Points - [x] 首次 sudo 预检失败时未进入写阶段;用户建立受控临时入口后重新从完整预检开始。 - [ ] 安装后、故障告警前失败:disable/stop 后 `uninstall`,保留状态和共用能力。 - [ ] 故障告警后失败:优先正式健康探测关闭告警;无法恢复则保持 timer 停用并明确报告未闭环。 - [ ] 回滚后复核备份 dead-man timer 与归档仍在,不主动触发 dead-man。 ## 7. Commands to Validate - `bash scripts/qa/run-app-health-monitor-contract.sh` - `bash scripts/qa/run-automatic-backup-contract.sh` - `python3 ./.trellis/scripts/task.py validate 07-27-arm-app-health-rollout` - `node scripts/qa/check-trellis-governance.mjs` - `node scripts/qa/check-sensitive-content.mjs` - `git diff --check`