docs(governance): prioritize commander inserted requirements
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 58s
CD Pipeline / build-and-deploy (push) Successful in 4m15s
CD Pipeline / post-deploy-checks (push) Has been cancelled

This commit is contained in:
ogt
2026-07-02 13:08:43 +08:00
parent 53cdf9b7fd
commit 2a478ad18c
4 changed files with 113 additions and 0 deletions

View File

@@ -54,6 +54,25 @@
**下一步**
- commit / push Gitea `main`,讀回 CDCD 成功後接續 Stock/Postgres hot query / backup export playbook而不是再回到 Gitea 泛查。
## 2026-07-02 — 13:04 統帥插入需求主線優先序台帳落地
**完成內容**
- 新增 `docs/workplans/2026-07-02-commander-inserted-requirements-priority-ledger.md`把本輪使用者插入的「只推目前唯一目標」、「不要偏離」、「我要看到實作結果」、「Gitea / repo 恢復」、「GitHub appeal 前先做其他工作」、「MCP / RAG / KM / PlayBook / LOG 整合」、「全部工作優先序」等要求收斂成 P0 / P1 / P2 / P3 工作項。
- 台帳明確把 GitHub 全產品推送轉成 freeze 狀態下的 deferred P3不得執行 GitHub / `gh` / GitHub API / GitHub Actions。
- 台帳明確標示聊天中出現過敏感值,但不記錄、不重印、不保存任何 token、密碼或 key後續只走 hidden prompt、rotation / revoke checklist 或 metadata verifier。
- `.gitea/workflows/cd.yaml``ops/runner/test_cd_controlled_runtime_profile.py` 已將此台帳納入 controlled-runtime allowlist避免治理文件更新誤跑 B5 Docker socket。
**驗證**
- `PYTHONDONTWRITEBYTECODE=1 python3.11 -m pytest -p no:cacheprovider ops/runner/test_cd_controlled_runtime_profile.py -q``43 passed`
- `PYTHONDONTWRITEBYTECODE=1 python3 ops/runner/guard-gitea-runner-pressure.py --root .``GITEA_RUNNER_PRESSURE_GUARD_OK workflow_files=12 scheduled_workflows=4 auto_branch_events_on_110=0 generic_runner_labels=0`
- `node scripts/ci/check-gitea-step-env-secrets.js``no Gitea run/with secrets or legacy Telegram routes`
- `bash -n .gitea/workflows/cd.yaml ops/runner/check-awoooi-110-controlled-cd-lane-readiness.sh ops/runner/register-awoooi-110-controlled-cd-lane-drain.sh`:通過。
- `git diff --check`:通過。
**邊界**
- 未使用 GitHub / `gh` / GitHub API未讀 secret / token / `.env` / raw sessions / SQLite / auth未讀 `.runner` 內容。
- 未重啟主機,未 restart Docker / Nginx / K3s / DB / firewall未 workflow_dispatch未 force push。
## 2026-07-02 — 12:50 110 Gitea CPU 壓力 check-mode playbook 實作
**完成內容**

View File

@@ -0,0 +1,91 @@
# 統帥插入需求主線優先序台帳
> 建立時間2026-07-02 13:04 CST
> 範圍:本輪 AWOOOI / Gitea / Product Governance 工作中,使用者在主線推進期間插入的要求。
> 目的:把插入要求轉成可排序、可驗證、可接續的工作項目,避免後續 Codex 把它們當成聊天雜訊或另開支線。
## 判讀規則
1. 「批准」、「繼續」、「只推進目前唯一目標」、「不要偏離」全部解讀為:沿目前 P0 主線往下一個可驗證工作項推進,不開 GitHub、不開新產品支線、不做未授權高風險操作。
2. 「我要看到實作結果」解讀為:每個主線工作項必須產出至少一種 evidence優先順序為 commit / Gitea run / production readback / runner readback / queue readback / verifier output。
3. 「全面授權」只打開非事故級 controlled apply。secret 明文、raw session / SQLite、force push、repo / refs 破壞、reboot、node drain、destructive DB、Docker daemon restart、外部攻擊型 scan、付費 provider 切換仍維持 break-glass。
4. 使用者曾在聊天中貼入敏感值。台帳只記「敏感值已出現」這個事實,不記錄、不重印、不保存任何 token、密碼或 key。
5. GitHub account safety freeze 維持有效。GitHub 相關需求不刪除,轉為「停用狀態下的治理記錄與未來風險評估」,不得直接執行 GitHub / gh / GitHub API / GitHub Actions。
## 優先序定義
| 優先序 | 定義 | 可做 | 不可做 |
| --- | --- | --- | --- |
| P0 | 會直接影響 Gitea source truth、推版能力、repo identity、secret safety、runner / CD 連續性的事項 | 受控修正、正常 push、CD readback、runner metadata verifier、LOGBOOK / PlayBook / KM 記錄 | force push、repo / refs 破壞、讀 secret、重啟 Docker / host、GitHub 操作 |
| P1 | 會影響跨產品治理、工作排序、內部 KM / PlayBook / RAG / MCP / log 整合的事項 | 文件 / snapshot / API / UI read model、controlled apply packet、verifier / rollback 補齊 | 宣稱已完成 runtime closure、跳過 verifier |
| P2 | 會影響後續效率或觀測品質,但不阻擋當前推版主線的事項 | 優化 queue readback、SignOz / observability 分流、報表整理 | 把 P2 當成 P0 攔路 |
| P3 | 等外部狀態改變後才可恢復的事項 | 風險評估、未來恢復條件草案 | 在 freeze 期間嘗試外部操作 |
## 主線工作項目
| 順序 | ID | 優先序 | 使用者插入要求 | 正規化工作項 | 目前狀態 | 下一個可驗證動作 |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | CIR-P0-001 | P0 | 「不要偏離」、「只推進目前唯一目標」、「照順序推進」 | 建立單一主線執行規則:任何插入需求都先歸入本台帳,再依 P0/P1/P2/P3 排序 | 已建立本台帳 | 後續每次回報引用 current P0 / action / evidence / next action |
| 2 | CIR-P0-002 | P0 | 「我要看到實作結果」 | 主線工作必須回報 commit、Gitea CD run、production readback 或 verifier output不能只回覆規劃 | 已落地:建立時基準 CD `#4373` Successdeploy marker `ab748b1a` | 新變更也必須正常 push、CD readback、必要時 production readback |
| 3 | CIR-P0-003 | P0 | 「GitHub 我已申訴了,你先做其他工作」 | GitHub freeze 下,所有 GitHub 需求暫停執行,工作轉回 Gitea / local / production truth | GitHub 停用有效 | 只維持 stopped / do_not_use 記錄;未來若要恢復,先出風險評估 |
| 4 | CIR-P0-004 | P0 | 「為什麼還沒把全部專案推上 GitHub」 | 不執行 GitHub 推送;改成全產品 Gitea repo identity、backup health、source-control readiness 台帳 | Gitea 9 expected repos 已回讀 OKGitHub 不做 | 把全產品 source truth 優先對齊 Gitea / Gitea SSH / backup health |
| 5 | CIR-P0-005 | P0 | 「你做了什麼讓帳號 suspended」 | 建立 account safety 事故邊界:不再碰 GitHub避免任何 read-only / write 操作造成二次風險 | GitHub freeze 已在規則中 | 不要求 token、不讀 suspension 細節、不碰 GitHub API |
| 6 | CIR-P0-006 | P0 | 使用者貼入 runner token / 密碼類敏感值,並說「授權你直接操作」 | 敏感值不入檔、不重印、不保存runner registration 只允許互動 hidden prompt 或 metadata verifier已出現的敏感值後續應視為需輪替 / 廢止評估 | 已遵守:未保存 tokenregistration script token-safe | 建立 secret exposure follow-up不含任何明文值需要時只列 rotate / revoke checklist |
| 7 | CIR-P0-007 | P0 | 「我沒辦法複製貼上 token」 | Runner 註冊流程要支援使用者在遠端 TTY hidden prompt 輸入,不要求把 token 貼給 Codex | 已完成 source`register-awoooi-110-controlled-cd-lane-drain.sh` token-safe | live 110 lane 仍需 staging artifacts / registration metadata不能讀 `.runner` 內容 |
| 8 | CIR-P0-008 | P0 | 「Gitea 恢復正常」、「所有專案儲存庫恢復」、「原本儲存庫不是新增」 | 儲存庫恢復以原 Gitea repo identity / SSH heads / backup health 為準,不建立替代 repo 來假裝恢復 | 已有 handoff truth9 expected repos SSH heads OK、backup health missing=0 | 若再出現 404先判斷 private visibility / auth不宣稱 history 消失 |
| 9 | CIR-P0-009 | P0 | 「所有專案都沒辦法推版」 | 先保 AWOOOI Gitea CD 主線 green再逐產品恢復 dev/prod CI baseline不能把 GitHub 當解法 | 建立時基準 AWOOOI CD `#4373` Success後續需以 Gitea queue / deploy marker readback 刷新 | 下一步按 product governance matrix 推 Gitea-only baseline |
| 10 | CIR-P0-010 | P0 | 「趕快修復 Gitea」、「不要開 legacy runner」相關壓力事故 | 188 non-110 runner 為主 CD lane110 legacy / generic runner 維持 fail-closed110 drain lane 只在 guardrails 全綠時 controlled enable | 188 ready110 live verifier 仍顯示 config / registration / staging blockers | 補 110 drain staging artifacts 後只跑 readiness verifier不直接開服務 |
| 11 | CIR-P0-011 | P0 | 「所有已開始、進行中、已完成工作全部看清楚」 | 工作狀態必須拆成 Done / In Progress / Blocked / Next不再用單句「差不多完成」 | 本台帳補齊主線插入需求 | 後續 LOGBOOK 每次新增狀態要帶 status 與 evidence |
| 12 | CIR-P0-012 | P0 | 「所有主線工作持續推進」 | 主線推進順序固定Gitea source truth → CD / runner → production readback → product governance → KM / PlayBook / RAG integration | 正在執行 | 不因支線問題改做 GitHub、Wazuh、host reboot 或未授權 console |
| 13 | CIR-P0-013 | P0 | 「這些安全硬閘哪裡來的」、「全部打開」 | 建立 gate taxonomy非事故 gate 轉 evidence / ledger事故 gate 保留 break-glass | 規則已整理於本台帳 | 後續 UI / API 需顯示 gate source、可自動處理方式、不可越線項 |
| 14 | CIR-P0-014 | P0 | 「批准/繼續會不會讓你誤會」 | 將簡短批准語句解讀規則文件化:批准等於沿目前排序繼續,不等於開新支線或解除事故級 hard gate | 已建立判讀規則 | 後續回覆避免把批准解讀成 GitHub、secret、force push 授權 |
| 15 | CIR-P0-015 | P0 | 「為什麼搞成這麼亂」 | 收斂亂象來源:多視窗、長上下文、重複 gate、GitHub freeze、Gitea recovery、runner pressure 必須進同一台帳 | 本台帳為收斂入口 | 新任務先看本台帳與 LOGBOOK不再靠散落聊天句子 |
| 16 | CIR-P1-001 | P1 | 「為什麼沒有整合到 MCP、RAG、KM、PLAYBOOK、LOG」 | 內部治理資料要沉澱到 KM / PlayBook / RAG / MCP / log而不是只存在對話 | 待實作 | 定義 `work_item_id`、evidence source、verifier、rollback、trust writeback 欄位 |
| 17 | CIR-P1-002 | P1 | 「所有工作的優先順序你都不知道嗎」 | 建立跨產品 priority matrix區分 AWOOOI P0、Gitea/source-control P0、product governance P1、UI/UX P2 | 部分已有 scorecard本台帳補 current thread | 將本台帳映射到 existing product runtime governance dashboard |
| 18 | CIR-P1-003 | P1 | 「所有儲存庫都不重要?」 | repo identity / backup health / private visibility 要成為 product governance 第一層,不再只看單一 AWOOOI repo | Gitea P0 恢復 truth 已有 9 repos OK | 補全產品 source-control readback rows標示 canonical repo / branch / backup evidence |
| 19 | CIR-P1-004 | P1 | 「是你打開瀏覽器連 Gitea 嗎,需要 token 嗎」 | Gitea 操作要區分 public HTML readback、API token readback、SSH git readback、runner token registration | 已區分public HTML 可讀API 未登入 401SSH push 可用 | 建立 runbook何時需要 token、何時不需要、不得要求貼 token |
| 20 | CIR-P1-005 | P1 | 「用 VMware Console 去 192.168.0.99 操作 110」 | VMware console 是 break-glass / local console lane只能在 SSH/Gitea control path 無法修復且有明確目標時使用 | 未作為本輪主線執行 | 若需要,先列 non-secret console checklist不輸入或保存密碼 |
| 21 | CIR-P1-006 | P1 | 「sudo 為什麼不能用密碼」 | sudo / account / SSH auth 行為只做 metadata audit不要求或記錄密碼若需修復用 authorized console SOP | 未在本輪 runtime 修改 | 補一份 sudo / auth metadata check playbook禁止收密碼 |
| 22 | CIR-P1-007 | P1 | 「先做其他工作」 | GitHub blocked 時不得原地等待,改推 Gitea / CD / product governance / backup / KM mainline | 已照做Gitea CD 已 success | 下個 P0 仍照排序,不等待 GitHub appeal |
| 23 | CIR-P2-001 | P2 | 「為什麼會偏離工作目標」 | 將每輪回報固定成 current P0 / action taken / evidence / next action | 待持續執行 | final / handoff 必須先列結果,再列下一步 |
| 24 | CIR-P2-002 | P2 | production health readback 顯示 degraded | SignOz component down 不阻擋本次 CD success但要分流到 observability lane | 已觀察到 `signoz` connection refused | 排入 Observability P2不在本輪重啟服務 |
| 25 | CIR-P3-001 | P3 | GitHub appeal 後的未來恢復 | 只有使用者未來明確要求恢復 GitHub才先做風險評估與人工確認 | 等外部狀態 | 未確認前維持 freeze |
## 目前 Done / In Progress / Blocked
### Done
| 項目 | Evidence |
| --- | --- |
| AWOOOI Gitea main 可正常推進 | `f426610d``f41f77cf` 已進 remote history |
| CD controlled-runtime 誤判已修 | `#4373` tests log 顯示 `B5 effective test profile=controlled-runtime`B5 skipped |
| 建立時基準主線 CD 成功 | Gitea CD `#4373 Success` |
| Production rollout 成功 | ArgoCD `Synced` / `Healthy`API / Web / Worker rollout success |
| Production deploy readback matched | `631fc785fa` matched runtime / desired image tag |
| Playwright smoke 成功 | `5 passed` |
| 建立時基準同步到 Gitea truth | local `main...origin/main` clean at deploy marker `ab748b1a` |
### In Progress
| 項目 | 目前狀態 | 下一步 |
| --- | --- | --- |
| 110 controlled drain lane | live verifier 仍不能宣稱 ready需 staging artifacts / registration metadata / service guardrails 全綠 | 補 staging artifacts 後只跑 readiness verifier |
| 全產品 source-control governance | 9 expected Gitea repos OK但跨產品 dev/prod CI baseline 尚未全綠 | 以 Gitea / Gitea SSH / backup health 為 source truth |
| KM / PlayBook / RAG / MCP 整合 | 已被列為 P1不再遺漏 | 建立 work item schema 與 trust writeback 欄位 |
### Blocked / Deferred
| 項目 | 原因 | 處理方式 |
| --- | --- | --- |
| GitHub 全產品 push / mirror | GitHub account safety freeze不得用 GitHub / gh / API | 保持 stopped / do_not_use未來需風險評估 |
| 直接使用聊天中貼出的敏感值 | secret safety hard gate | 不記錄、不重印、不保存;以 rotate / revoke / hidden prompt 取代 |
| VMware console / sudo 密碼路徑 | 屬 break-glass / local console lane | 只有控制路徑不可用且目標明確時才開 non-secret SOP |
## 下一輪固定執行順序
1. 先確認 Gitea `main` / CD / production readback 是否仍與最新 truth 一致。
2. 繼續補 110 controlled drain lane 的 staging / verifier不恢復 generic runner。
3. 把全產品 repo identity / backup health / private visibility / dev-prod CI baseline 接到 product governance matrix。
4. 把本台帳的 P0/P1 工作項映射進 KM / PlayBook / RAG / MCP / LOG不讓需求只留在聊天。
5. SignOz degraded 分流到 Observability P2不阻擋 Gitea/CD 主線。
6. GitHub appeal 前不做任何 GitHub 操作appeal 後若使用者明確要求,先做風險評估。