fix(reboot): detect public maintenance edge drift
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 3m22s
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled

This commit is contained in:
Your Name
2026-07-03 14:50:11 +08:00
parent 7eb2d9beda
commit ff9e086e2e
10 changed files with 421 additions and 12 deletions

View File

@@ -20,7 +20,7 @@
| 優先 | 狀態 | 工作項 | 最新證據 | 下一步 / 完成條件 |
|------|------|--------|----------|-------------------|
| P0-1 | BLOCKED_HOST_WINDOWS | 全主機 reboot auto-detection / auto-trigger / 10 分鐘恢復 SLO | 2026-07-03 10:44 production scorecard`status=blocked_reboot_auto_recovery_slo_not_ready``active_blocker_count=10``readiness_percent=60`、active blockers 仍含 reboot event / host unreachable / 99+111+Windows99 VMX / guest power且新增 `windows99_vmware_autostart_config_not_ready``windows99_update_no_auto_reboot_policy_not_ready`。no-write artifact `/tmp/awoooi-reboot-continue-20260703-085205`111 socket probe 仍 timeout / unreachable99 RDP / VMConnect reachable 但 uptime unknown188 socket probe reachable前次 host probe 仍為 `systemd_state=degraded` / `startup_active=failed`。 | 先收斂 99 / Windows99 / VMware 與 111恢復 no-secret management channel 或取得 validator 可接受的完整 console Verify stdout讀回 VMX / VM power / host uptime再 rerun host probe + reboot-event detector不得 reboot、不得 VM power change、不得讀 Windows 密碼,不得用 RDP clipboard 片段當完成證據。 |
| P0-2 | BLOCKED_EDGE_PRIVILEGED_APPLY | Deploy / reboot 期間 public 502 維護頁與外部 fallback | Gitea CD `#4519` 已推 deploy marker `3aca484 -> a94ddd5`,但 marker 後 public probe 仍讀到 `https://awoooi.wooo.work/api/v1/health` raw `502`、fallback header/body 空;live 188 `/etc/nginx/sites-enabled/awoooi.wooo.work.conf`maintenance fallback`/var/www/maintenance/maintenance.html` 缺失,`ollama@188` 無 passwordless sudo。 | 先跑 `scripts/reboot-recovery/public-maintenance-edge-fallback-apply.sh --check` 留 drift receipt具備 privileged channel 後執行 `--apply`,要求 backup、`nginx -t`、reload、public route probe 全綠。不得讀密碼、不得用 app restart 掩蓋 edge fallback drift。 |
| P0-2 | SOURCE_READY_RUNTIME_EDGE_DRIFT_BLOCKED | Deploy / reboot 期間 public 502 維護頁與外部 fallback | 2026-07-03 最新 main `3ebeeeb4b` Gitea CD `#4592` 已推 deploy marker `ee0da93` 且 deploy readback matched但 deploy window 期間 AWOOOI API health / SLO route 仍出現 raw `502`fallback header/bodylive 188 edge check 固定 drift`LIVE_CONF_HAS_INTERCEPT=0``LIVE_CONF_HAS_ERROR_PAGE_503=0``LIVE_CONF_HAS_FALLBACK_HEADER=0``LIVE_CONF_HAS_INTERNAL_LOCATION=0``MAINTENANCE_FILE_PRESENT=0``SUDO_N_READY=0``EDGE_FALLBACK_READY=0`。source 已新增 `edge_public_maintenance_live_config_drift` scorecard blocker、`awoooi_public_maintenance_edge_fallback_ready` metric 與 `PublicMaintenanceEdgeFallbackConfigDrift` alert rule。 | 部署新版 exporter / API 後110 textfile 與 production scorecard 必須主動顯示 edge fallback drift blocker具備 privileged channel 後才可執行受控 `public-maintenance-edge-fallback-apply.sh --apply`,要求 backup、`nginx -t`、reload、public header verifier 全綠;或完成 L1 external cloud/CDN fallback。不得讀密碼、不得用 app / Docker / host restart 掩蓋 edge fallback drift。 |
| P0-3 | PARTIAL_GREEN_DEPLOYED_SOURCE | 所有產品 / 網站版本與資料最新性 | Gitea `main=bc8d3af3f chore(cd): deploy dacdd90 [skip ci]`CD `#4558` log 顯示 API/Web build/push wrapper 全部 `rc=0`、deploy marker `dacdd90`、production deploy readback matched。Production SLO route 已讀回最新 API 行為:`runtime_metric_runtime_readback_added_blockers=["windows99_vmware_autostart_config_not_ready","windows99_update_no_auto_reboot_policy_not_ready"]``windows99_update_no_auto_reboot_ready=false`。Stock freshness 仍為 `status=ok``latest_trading_date=2026-07-02`、blockers `[]`。 | 版本層已補到 AWOOOI production完成整體 P0 仍需收斂 Windows99 VMX / service / policy / power 與 host reboot-event blockers。後續每個 public product 仍要維持 source SHA、deploy marker、runtime endpoint、public route watch、freshness 四層一致。 |
| P0-4 | BLOCKED_WINDOWS99_AUTOSTART | 192.168.0.99 VMware 自動啟動與 VM guest 111 / 188 / 120 / 121 / 112 | 10:44 production readback 已把 nested Windows99 evidence 上卷到 active blockers`windows99_vmware_vmx_missing``windows99_vmware_guest_power_not_ready``windows99_vmware_autostart_config_not_ready``windows99_update_no_auto_reboot_policy_not_ready``runtime_metric_runtime_readback_added_blockers` 含 config / policy 兩項,`windows99_update_no_auto_reboot_ready=false`。09:53 no-secret management probe99 reachable、RDP / Hyper-V VMConnect reachableWinRM timeoutMac vantage collector 仍為 `ssh_batchmode_auth_ready=0` / `blocked_ssh_publickey_auth_missing`completion 仍取決於 VMX / service / policy / power 全綠。 | 先修 111 VMX source 與 VMware service / policy readback使 check-mode package 能解釋 powered-off aliases不得從 scorecard 直接重啟 Windows service、改 registry、啟動 / 關閉 VM 或 host reboot。完成條件是 VMX config ready、guest power ready、99 uptime known、all required host reachable且 active blocker matrix 顯示 service / policy / VMX / power 分開收斂。 |
| P0-5 | RUNTIME_READY_BACKUP_RECEIPT_GAP | Gitea / 主機 / DB / 網站 / 服務 / 套件 / 工具 / log 備份監控告警 | Gitea repo bundle readback readyexpected `12`、rows `12`、missing `0`、failed `0`、sample restore dry-run okbackup core green。2026-07-03 source / runtime 已部署 `awoooi_backup_alert_receipt_*` 指標與 Prometheus rules110 exporter 讀回 88 個 stage requirement、188 讀回 12 個 stage requirement`BackupAlertReceiptMetricMissing*` inactive`BackupAlertReceiptStageMissing` 已修成每 `host / receipt_channel` 聚合 pending110 一條、188 一條。 | 補 `/backup/alert-receipts/*.last_success` 脫敏 marker下一層仍要補 Gitea full dump、DB/settings/issues/packages/LFS、所有工具與 log 全量備份監控。 |