docs(recovery): record current p0 reboot readback
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 7m14s
CD Pipeline / build-and-deploy (push) Failing after 22s
CD Pipeline / post-deploy-checks (push) Has been skipped
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 7m14s
CD Pipeline / build-and-deploy (push) Failing after 22s
CD Pipeline / post-deploy-checks (push) Has been skipped
This commit is contained in:
@@ -1,3 +1,13 @@
|
||||
## 2026-06-30 — current P0 readback after verified Gitea bundle
|
||||
|
||||
**目前不能宣稱完成的事實**:
|
||||
- Gitea main 已正常推到 `3b65f876246d4b4e3672088e6bc7246a9e588279`,但 AWOOOI production runtime readback 仍是 `7890778b83`,且 API 回 `runtime_build_readback_status=runtime_build_diverges_from_committed_deploy_readback`;不得宣稱 production 已最新。
|
||||
- StockPlatform public freshness / ingestion 仍為 `status=not_configured`、blocker `postgres_not_ready`;不得宣稱資料最新。
|
||||
- 最新 cold-start scorecard 回 `PASS=67 WARN=4 BLOCKED=5`,active blockers 收斂為 110 registry external `/v2`、110 SSH read-only check、K3s registry pull refused、AWOOOI internal API probe、SigNoz TLS/public route。
|
||||
- 110 node-exporter 可讀、22 port banner 正常;禁用 publickey 時立即 `Permission denied`,但 publickey auth path 在 offering key 後 timeout,server 未回 `accepts key`。下一步固定查 110 sshd publickey auth / authorized_keys / PAM / account lookup path。
|
||||
|
||||
**邊界**:本段只做 public HTTPS、node-exporter、SSH bounded debug 與 cold-start read-only scorecard;未重啟主機,未 restart Docker daemon / host Nginx / K3s / DB / Redis / firewall,未 restore / prune / DB write,未讀 secret / token / raw sessions / SQLite / `.env`,未使用 GitHub / `gh` / GitHub API。
|
||||
|
||||
## 2026-06-30 — 19:47 Gitea verified emergency bundle backup fallback integrated
|
||||
|
||||
**照主線修正的問題**:
|
||||
|
||||
@@ -25,14 +25,14 @@
|
||||
|
||||
| 類別 | 2026-06-30 讀回事實 | SOP 判讀 |
|
||||
|------|----------------------|----------|
|
||||
| AWOOOI production 版本 | Gitea `main=adc0d8816`,production readback 仍為 `7890778b83`;新 `stockplatform-public-api-controlled-recovery-preflight` route 在 production 回 404。 | 「產品都是最新版本」不可成立;必須先完成 deploy marker / runtime SHA / endpoint readback 三者一致。 |
|
||||
| Full-stack cold-start | `full-stack-cold-start-check.sh --monitor-read-only --no-color` 回 `PASS=64 WARN=6 BLOCKED=6`;110 registry / SSH、K3s registry pull refused、Harbor / Registry / SigNoz 502/TLS 為 blocker。 | 不可宣稱 10 分鐘全服務恢復;先修第一個 cold-start blocker,再重跑同一命令。 |
|
||||
| AWOOOI production 版本 | Gitea `main=3b65f8762`,production runtime readback 仍為 `7890778b83`,且 readback 顯示 `runtime_build_readback_status=runtime_build_diverges_from_committed_deploy_readback`。 | 「產品都是最新版本」不可成立;必須先完成 deploy marker / runtime SHA / endpoint readback 三者一致。 |
|
||||
| Full-stack cold-start | `full-stack-cold-start-check.sh --monitor-read-only --no-color` 回 `PASS=67 WARN=4 BLOCKED=5`;110 registry external `/v2`、110 SSH read-only check、K3s registry pull refused、AWOOOI internal API probe、SigNoz TLS/public route 為 blocker。 | 不可宣稱 10 分鐘全服務恢復;先修第一個 cold-start blocker,再重跑同一命令。 |
|
||||
| Tsenyang 502 | `www.tsenyang.com` / `tsenyang.com` 起初 HTTP 502;188 release `/home/ollama/tsenyang-website-releases/b369ed8` 有 source,但 `tsenyang-website:latest` image 缺失、container 未啟動。 | 使用者可見 502 是 P0;可用現有 release 做 bounded `docker build --quiet -t tsenyang-website:latest .` + `docker compose up -d --no-build`,再以 local 3000 與 public 200 驗證。 |
|
||||
| Tsenyang 修復結果 | image `sha256:e25e0acb...` 建成,container `tsenyang-website` running,local `127.0.0.1:3000`、`www.tsenyang.com`、`tsenyang.com` 均回 200。 | 下次若同樣 502,先查 image/container/release symlink,不先動 Nginx、DNS、DB 或 host reboot。 |
|
||||
| StockPlatform freshness | public `/healthz`、`/api/healthz` 回 200;`/api/v1/system/freshness` 與 `/api/v1/system/ingestion` 回 `status=not_configured`、blocker `postgres_not_ready`。 | service up 不等於資料最新;Stock 必須修 PostgreSQL schema/readiness 或資料 source readback,禁止 fake freshness、manual DB row、restore/prune。 |
|
||||
| 110 control path | ping / SSH port 可達,但 `wooo@192.168.0.110` SSH command timeout。 | 110 control path 是 P0 blocker;未恢復前不可宣稱 Stock DB/schema、Gitea dump、110 backup completeness 已現場驗證。 |
|
||||
| 110 control path | node-exporter 可讀、22 port banner 正常;禁用 publickey 時立即 `Permission denied`,但 publickey path 在送出 key 後 timeout、server 未回 `accepts key`。 | 110 control path 是 P0 blocker;下一步集中查 sshd publickey auth / authorized_keys / PAM / account lookup path,未恢復前不可宣稱 Stock DB/schema、Gitea dump、110 backup completeness 已現場驗證。 |
|
||||
| Gitea visibility | `https://gitea.wooo.work/api/v1/version` 回 200 / `1.25.5`;public repo search 只列 4 個 public repos;`stockplatform-v2` public page/API 404,但 direct internal Git remote `http://192.168.0.110:3001/wooo/stockplatform-v2.git` 可 `ls-remote`。 | 不能直接說 repo 全消失;要區分 public visibility、private/auth visibility、內網 Git remote、server-side storage 四層。 |
|
||||
| Gitea backup | 188 `/home/ollama/backup/110/gitea` 目前為空;舊 `backup_from_110` freshness 只證明 rsync 心跳,不證明 Gitea 子樹或 dump 完整。 | 備份監控必須新增 Gitea subtree freshness / sample count;空目錄是 P0 backup completeness blocker。 |
|
||||
| Gitea backup | 188 `/home/ollama/backup/110/gitea` 起初為空;verified emergency bundle 後,`gitea_repo_mirror_from_110` metric fresh `1`、snapshot_count `19`。 | 子樹 metric 已能看見 emergency bundle,但仍只代表部分 Git history;正式 `gitea dump`、private repo non-interactive backup、repo count 與 restore drill 仍是 P0 blocker。 |
|
||||
| Gitea emergency bundle | 188 已建立 verified emergency Git bundle snapshot `/home/ollama/backup/110/gitea/git-bundles/20260630-190931`,`awoooi`、`ewoooc`、`2026FIFAWorldCup`、`agent-bounty-protocol` bundle verify + `.sha256` 成功;`AwoooGo`、`stockplatform-v2`、`vibework` 因 private repo 需要非互動 credential 而 fail-closed。 | 這只保住部分 repo Git history,不等於 `gitea dump`;Gitea DB、settings、issues、packages、secrets、LFS、private repo completeness 與 restore drill 仍是 P0 blocker。 |
|
||||
|
||||
本次事故後新增固定判讀:
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
|
||||
| 優先 | 狀態 | 工作項 | 2026-06-30 證據 | 下一步 / 完成條件 |
|
||||
|------|------|--------|------------------|-------------------|
|
||||
| P0-1 | BLOCKED | 全主機 cold-start / 10 分鐘自動恢復 SLO | `full-stack-cold-start-check.sh --monitor-read-only --no-color` 回 `PASS=64 WARN=6 BLOCKED=6`;110 registry / SSH、K3s registry pull refused、Harbor / Registry / SigNoz 502/TLS 仍 blocked。 | 先修第一個 cold-start blocker,重跑同一 scorecard 到 `BLOCKED=0`;不可只用 route 200 宣稱恢復。 |
|
||||
| P0-1 | BLOCKED | 全主機 cold-start / 10 分鐘自動恢復 SLO | 最新 `full-stack-cold-start-check.sh --monitor-read-only --no-color` 回 `PASS=67 WARN=4 BLOCKED=5`;110 registry external `/v2`、110 SSH read-only check、K3s registry pull refused、AWOOOI internal API probe、SigNoz TLS/public route 仍 blocked。 | 先修第一個 cold-start blocker,重跑同一 scorecard 到 `BLOCKED=0`;不可只用 route 200 宣稱恢復。 |
|
||||
| P0-2 | DONE_THIS_INCIDENT | 使用者可見 502:Tsenyang | `www.tsenyang.com` / `tsenyang.com` 由 502 恢復為 200;188 `tsenyang-website` container running;local `127.0.0.1:3000` 回 200。 | 下次同類 502 先查 release symlink / image / container;不先動 Nginx、DNS、DB、主機重啟。 |
|
||||
| P0-3 | BLOCKED | StockPlatform data freshness | public `/healthz`、`/api/healthz` 回 200;freshness / ingestion 回 `not_configured`、`postgres_not_ready`。 | 恢復 110 control path 後,read-only 查 `/home/wooo/stockplatform-v2` compose / DB schema / migration status;禁止 fake freshness、manual DB rows、restore/prune。 |
|
||||
| P0-4 | BLOCKED | AWOOOI production 版本最新性 | source/Gitea `main=adc0d8816`;production readback 仍為 `7890778b83`;新 Stock preflight endpoint production 404。 | 補 deploy marker / runtime SHA / endpoint readback 一致;未一致前不可宣稱 AWOOOI 最新。 |
|
||||
| P0-5 | BLOCKED | 110 control path | ping / SSH port 可達,但 SSH command timeout。 | 恢復 SSH read-only command path;完成後才能驗證 Stock DB、Gitea dump、110 backup completeness。 |
|
||||
| P0-4 | BLOCKED | AWOOOI production 版本最新性 | source/Gitea `main=3b65f8762`;production runtime readback 仍為 `7890778b83`,`runtime_build_readback_status=runtime_build_diverges_from_committed_deploy_readback`。 | 補 deploy marker / runtime SHA / endpoint readback 一致;未一致前不可宣稱 AWOOOI 最新。 |
|
||||
| P0-5 | BLOCKED | 110 control path | node-exporter 可讀、22 port banner 正常;禁用 publickey 時立即 `Permission denied`,但 publickey path 在送出 key 後 timeout、server 未回 `accepts key`。 | 集中查 110 sshd publickey auth / authorized_keys / PAM / account lookup path;恢復 SSH read-only command path 後才能驗證 Stock DB、Gitea dump、110 backup completeness。 |
|
||||
| P0-6 | BLOCKED_BACKUP_COMPLETENESS | Gitea repo visibility 與完整備份 | Gitea version API 200;public repo search 只列 4 個 public repo;`stockplatform-v2` public page/API 404,但 internal `git ls-remote` 成功;188 `/home/ollama/backup/110/gitea` 起初為空。已建立 verified emergency bundle `/home/ollama/backup/110/gitea/git-bundles/20260630-190931`:4 個 public/internal repo bundle verify + checksum 成功,`AwoooGo`、`stockplatform-v2`、`vibework` 因 private auth fail-closed。 | 188 `gitea_repo_mirror_from_110` subtree metric / alert 已補;下一步仍是恢復 110 SSH command path 後跑正式 `gitea dump`、private repo 非互動備份、repo count 與 restore drill readback。 |
|
||||
| P0-7 | SOURCE_READY_RUNTIME_BLOCKED | 99 VMware / VM autostart | repo 已有 `windows99-vmware-autostart.ps1`,但 99 SSH/WinRM 尚未可用;VM host 111 仍不可達。 | 恢復 99 可控通道或由 console 套用腳本;完成後讀回 111/188/120/121/112 boot evidence。 |
|
||||
| P0-8 | SOURCE_READY_RUNTIME_BLOCKED | 502 maintenance fallback / Telegram / backup alert | L0/L1 fallback runbook、Nginx snippet、reboot / backup alert rules 已在 source;runtime 尚需部署與外部 L1 provider readback。 | L0 以測試 vhost 驗證 `X-AWOOOI-Fallback`;L1 需外部雲端/CDN probe;Telegram 以脫敏 alert receipt 驗證。 |
|
||||
|
||||
Reference in New Issue
Block a user