文件
hyb-oa/.trellis/tasks/07-27-arm-app-health-rollout/implement.md
T

3.6 KiB

ARM 应用健康监控上线执行清单

1. Local Gates

  • 确认 HEAD 包含工作提交 bb5113c,三个部署源相对 HEAD 无未提交改动;允许当前 Trellis 任务记录保持未提交。
  • 运行应用健康专项 22 项和自动备份兼容回归 73 项。
  • 记录三个部署源文件的 SHA-256,不输出其他本地路径或配置。

2. Read-only ARM Preflight

  • 通过受控 alias 连接,确认非交互命令可用;首次 sudo 门禁停止,用户建立临时入口后复检通过。
  • 确认 Python 3、systemd、既有 off-host dead-man service/timer 和共用 helper 存在。
  • 在 ARM 内从 dead-man unit 解析 webhook 文件路径,并只返回 owner/mode/regular-file 布尔结果。
  • 确认公网 /ready 从 ARM 可达,且应用健康 unit、探测器和状态目录尚不存在;若存在则停止人工审查。
  • 记录既有 dead-man timer enabled/active 基线,后续只做对比,不主动执行。

3. Disabled Installation

  • 在 ARM 创建本次唯一临时目录,以 SCP 传输探测器、helper 和安装器并核对 SHA-256。
  • 用 root 运行安装器 install,webhook 路径只在远端 shell 变量中传递。
  • 确认 timer disabled/inactive、service inactive,unit 为 5 分钟、状态目录 0700、受管文件 root:root 0755。
  • 比较已安装探测器/helper 与提交源哈希一致。
  • 手工启动正式 service,确认健康、probe/alert state 为 0600 且没有发送恢复噪声。

4. Enable and Real Drill

  • 用同一提交源执行安装器 enable,确认 timer enabled/active。
  • 停止应用健康 timer;确认不影响备份 dead-man timer。
  • 确认选定 localhost 演练端口未监听。
  • 第一次直接失败探测:预期非零、consecutiveFailures=1、alert pending。
  • 第二次直接失败探测:预期非零、helper sent=true、alert state 为 FAIL_APP_HEALTH。
  • 第三次直接失败探测:预期非零、helper sent=false,证明相同类别降噪。
  • 运行正式 systemd service 恢复:预期成功、helper sent=true、alert state 为 PASS_APP_HEALTH_READY。
  • 再运行一次健康探测或等待 timer:预期 helper sent=false。
  • 重新启动 timer,确认 enabled/active、最近成功和下一次不超过 5 分钟。

5. Final Evidence and Cleanup

  • 确认既有备份 receiver/dead-man 文件和 timer 状态未改变。
  • 删除本次 ARM 临时传输目录和临时 sudoers 规则,不删除状态、helper、webhook 或备份能力。
  • 仅记录脱敏状态、类别、计数、哈希匹配和 timer 布尔证据。
  • 用户已确认群内实际收到一条故障告警和一条恢复通知。
  • 更新 PRD 验收项、运行 task validate、治理检查和 git diff --check。

6. Rollback Points

  • 首次 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