fix(web): align approvals with controlled automation language
Some checks failed
CD Pipeline / build-and-deploy (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / tests (push) Has been cancelled
Code Review / ai-code-review (push) Has been cancelled
Ansible / Reboot Recovery Contract / validate (push) Has been cancelled
Some checks failed
CD Pipeline / build-and-deploy (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / tests (push) Has been cancelled
Code Review / ai-code-review (push) Has been cancelled
Ansible / Reboot Recovery Contract / validate (push) Has been cancelled
This commit is contained in:
@@ -11618,22 +11618,22 @@
|
||||
"genericLoadFailed": "載入失敗"
|
||||
},
|
||||
"summary": {
|
||||
"pending": "待人工決策",
|
||||
"pendingDetail": "AwoooP {platform} / Legacy HITL {legacy}",
|
||||
"pending": "待 AI 受控決策",
|
||||
"pendingDetail": "AwoooP 受控佇列 {platform} / 舊 HITL 證據 {legacy}",
|
||||
"critical": "即將逾時",
|
||||
"criticalDetail": "5 分鐘內必須處置",
|
||||
"expired": "已逾時",
|
||||
"expiredDetail": "不得再自動恢復"
|
||||
"expiredDetail": "改排 AI retry / rollback / verifier,不預設人工結案"
|
||||
},
|
||||
"decisionRail": {
|
||||
"eyebrow": "審批決策 Rail",
|
||||
"title": "卡住的批准與人工接手判讀",
|
||||
"subtitle": "先把狀態鏈、MCP 證據、Gate 5 投影與 Legacy HITL 收斂成一個判讀面板;使用者先看卡點與下一個安全入口,再下鑽完整表格。",
|
||||
"boundary": "此面板只做審批判讀與安全導覽;不送 Telegram、不套用 PlayBook、不執行 Ansible、不重啟服務、不切換供應者,也不代表 runtime gate 已開。",
|
||||
"title": "卡住的批准與 AI 受控處置判讀",
|
||||
"subtitle": "先把狀態鏈、MCP 證據、Gate 5 投影與舊 HITL 證據收斂成一個判讀面板;使用者先看 AI 下一步、卡點與安全入口,再下鑽完整表格。",
|
||||
"boundary": "此面板只做受控處置判讀與安全導覽;Telegram、PlayBook、Ansible、重啟、供應者切換都必須走 allowlist、check-mode、verifier 與 rollback,不提供繞過路徑。",
|
||||
"conclusion": {
|
||||
"blocked": "有卡點需接手",
|
||||
"blocked": "有卡點需 AI 補齊",
|
||||
"degraded": "資料載入需復核",
|
||||
"watching": "等待人工決策",
|
||||
"watching": "等待 AI 受控決策",
|
||||
"clear": "目前無待審"
|
||||
},
|
||||
"status": {
|
||||
@@ -11653,11 +11653,11 @@
|
||||
},
|
||||
"decision": {
|
||||
"title": "決策",
|
||||
"detail": "需要人工或已逾時的審批"
|
||||
"detail": "需要 AI 補齊、retry、rollback 或 break-glass 的審批"
|
||||
},
|
||||
"handoff": {
|
||||
"title": "接手",
|
||||
"detail": "Gate 5、Legacy 與工作項接手"
|
||||
"detail": "Gate 5、舊 HITL 證據與 AI 工作項補齊"
|
||||
},
|
||||
"verifier": {
|
||||
"title": "驗證",
|
||||
@@ -11666,11 +11666,11 @@
|
||||
},
|
||||
"cards": {
|
||||
"stuck": {
|
||||
"title": "阻塞與人工閘門",
|
||||
"detail": "找出 learning_recorded、execution_failed、manual fix 或逾時的審批。",
|
||||
"title": "阻塞與 AI 受控隊列",
|
||||
"detail": "找出 learning_recorded、execution_failed、AI retry / rollback 或逾時的審批。",
|
||||
"cta": "查看卡點",
|
||||
"meta": {
|
||||
"needsHuman": "需要人工",
|
||||
"needsHuman": "需要 AI 補齊",
|
||||
"executionFailed": "執行失敗 / 降級",
|
||||
"learningRecorded": "卡在學習紀錄"
|
||||
}
|
||||
@@ -11686,18 +11686,18 @@
|
||||
}
|
||||
},
|
||||
"handoff": {
|
||||
"title": "接手包與工作項",
|
||||
"detail": "把 Gate 5 投影、Legacy HITL 與人工接手導回 Work Items。",
|
||||
"title": "AI 處置包與工作項",
|
||||
"detail": "把 Gate 5 投影、舊 HITL 證據與 AI 補齊任務導回 Work Items。",
|
||||
"cta": "查看工作項",
|
||||
"meta": {
|
||||
"gate5": "Gate 5 投影",
|
||||
"legacy": "Legacy HITL",
|
||||
"manual": "人工接手"
|
||||
"manual": "AI 補齊"
|
||||
}
|
||||
},
|
||||
"guardrail": {
|
||||
"title": "安全閘門仍關閉",
|
||||
"detail": "批准頁不等於執行頁;所有高風險動作仍需獨立 owner 與 verifier。",
|
||||
"title": "受控執行邊界",
|
||||
"detail": "批准頁不等於繞過執行;低 / 中 / 高風險走 allowlist、check-mode、controlled apply、verifier 與 rollback;critical 才 break-glass。",
|
||||
"cta": "查看治理",
|
||||
"meta": {
|
||||
"runtimeGate": "runtime gate",
|
||||
@@ -11708,7 +11708,7 @@
|
||||
}
|
||||
},
|
||||
"badges": {
|
||||
"humanGate": "人工閘門",
|
||||
"humanGate": "AI 受控閘門",
|
||||
"gate5Projection": "Gate 5 投影",
|
||||
"executorHandoffPending": "等待 executor handoff"
|
||||
},
|
||||
|
||||
@@ -11618,22 +11618,22 @@
|
||||
"genericLoadFailed": "載入失敗"
|
||||
},
|
||||
"summary": {
|
||||
"pending": "待人工決策",
|
||||
"pendingDetail": "AwoooP {platform} / Legacy HITL {legacy}",
|
||||
"pending": "待 AI 受控決策",
|
||||
"pendingDetail": "AwoooP 受控佇列 {platform} / 舊 HITL 證據 {legacy}",
|
||||
"critical": "即將逾時",
|
||||
"criticalDetail": "5 分鐘內必須處置",
|
||||
"expired": "已逾時",
|
||||
"expiredDetail": "不得再自動恢復"
|
||||
"expiredDetail": "改排 AI retry / rollback / verifier,不預設人工結案"
|
||||
},
|
||||
"decisionRail": {
|
||||
"eyebrow": "審批決策 Rail",
|
||||
"title": "卡住的批准與人工接手判讀",
|
||||
"subtitle": "先把狀態鏈、MCP 證據、Gate 5 投影與 Legacy HITL 收斂成一個判讀面板;使用者先看卡點與下一個安全入口,再下鑽完整表格。",
|
||||
"boundary": "此面板只做審批判讀與安全導覽;不送 Telegram、不套用 PlayBook、不執行 Ansible、不重啟服務、不切換供應者,也不代表 runtime gate 已開。",
|
||||
"title": "卡住的批准與 AI 受控處置判讀",
|
||||
"subtitle": "先把狀態鏈、MCP 證據、Gate 5 投影與舊 HITL 證據收斂成一個判讀面板;使用者先看 AI 下一步、卡點與安全入口,再下鑽完整表格。",
|
||||
"boundary": "此面板只做受控處置判讀與安全導覽;Telegram、PlayBook、Ansible、重啟、供應者切換都必須走 allowlist、check-mode、verifier 與 rollback,不提供繞過路徑。",
|
||||
"conclusion": {
|
||||
"blocked": "有卡點需接手",
|
||||
"blocked": "有卡點需 AI 補齊",
|
||||
"degraded": "資料載入需復核",
|
||||
"watching": "等待人工決策",
|
||||
"watching": "等待 AI 受控決策",
|
||||
"clear": "目前無待審"
|
||||
},
|
||||
"status": {
|
||||
@@ -11653,11 +11653,11 @@
|
||||
},
|
||||
"decision": {
|
||||
"title": "決策",
|
||||
"detail": "需要人工或已逾時的審批"
|
||||
"detail": "需要 AI 補齊、retry、rollback 或 break-glass 的審批"
|
||||
},
|
||||
"handoff": {
|
||||
"title": "接手",
|
||||
"detail": "Gate 5、Legacy 與工作項接手"
|
||||
"detail": "Gate 5、舊 HITL 證據與 AI 工作項補齊"
|
||||
},
|
||||
"verifier": {
|
||||
"title": "驗證",
|
||||
@@ -11666,11 +11666,11 @@
|
||||
},
|
||||
"cards": {
|
||||
"stuck": {
|
||||
"title": "阻塞與人工閘門",
|
||||
"detail": "找出 learning_recorded、execution_failed、manual fix 或逾時的審批。",
|
||||
"title": "阻塞與 AI 受控隊列",
|
||||
"detail": "找出 learning_recorded、execution_failed、AI retry / rollback 或逾時的審批。",
|
||||
"cta": "查看卡點",
|
||||
"meta": {
|
||||
"needsHuman": "需要人工",
|
||||
"needsHuman": "需要 AI 補齊",
|
||||
"executionFailed": "執行失敗 / 降級",
|
||||
"learningRecorded": "卡在學習紀錄"
|
||||
}
|
||||
@@ -11686,18 +11686,18 @@
|
||||
}
|
||||
},
|
||||
"handoff": {
|
||||
"title": "接手包與工作項",
|
||||
"detail": "把 Gate 5 投影、Legacy HITL 與人工接手導回 Work Items。",
|
||||
"title": "AI 處置包與工作項",
|
||||
"detail": "把 Gate 5 投影、舊 HITL 證據與 AI 補齊任務導回 Work Items。",
|
||||
"cta": "查看工作項",
|
||||
"meta": {
|
||||
"gate5": "Gate 5 投影",
|
||||
"legacy": "Legacy HITL",
|
||||
"manual": "人工接手"
|
||||
"manual": "AI 補齊"
|
||||
}
|
||||
},
|
||||
"guardrail": {
|
||||
"title": "安全閘門仍關閉",
|
||||
"detail": "批准頁不等於執行頁;所有高風險動作仍需獨立 owner 與 verifier。",
|
||||
"title": "受控執行邊界",
|
||||
"detail": "批准頁不等於繞過執行;低 / 中 / 高風險走 allowlist、check-mode、controlled apply、verifier 與 rollback;critical 才 break-glass。",
|
||||
"cta": "查看治理",
|
||||
"meta": {
|
||||
"runtimeGate": "runtime gate",
|
||||
@@ -11708,7 +11708,7 @@
|
||||
}
|
||||
},
|
||||
"badges": {
|
||||
"humanGate": "人工閘門",
|
||||
"humanGate": "AI 受控閘門",
|
||||
"gate5Projection": "Gate 5 投影",
|
||||
"executorHandoffPending": "等待 executor handoff"
|
||||
},
|
||||
|
||||
@@ -68,6 +68,71 @@
|
||||
| **🔴🔴🔴 IwoooS 資安治理** | **UI 可見 / AwoooP approval 當 runtime 授權** | **只讀證據 + allowlist + check-mode + controlled apply;critical 才 break-glass** | [→ IwoooS Security Governance](#iwooos-security-governance) |
|
||||
| **🔴🔴🔴 高價值配置** | **手改 Nginx / workflow / secret / runtime config 後直接 reload 或部署** | **source-of-truth + controlled gate + diff + rollback + verifier** | [→ High Value Config Control](#high-value-config-control) |
|
||||
| **🔴🔴🔴 AI Agent 執行** | **把告警丟回人工、或繞過 check-mode 亂寫** | **allowlist + check-mode + controlled apply + verifier + KM / PlayBook trust** | [→ AI Agent Controlled Runtime Authorization](#ai-agent-controlled-runtime-authorization) |
|
||||
| **🔴🔴🔴 Codex 額度 / 上下文** | **在舊長視窗反覆餵長 log / 多支線除錯** | **context_budget_gate + 短 handoff + New Chat 分流** | [→ Codex Context Budget](#codex-context-budget) |
|
||||
|
||||
---
|
||||
|
||||
## 🔴🔴🔴 Codex Context Budget
|
||||
|
||||
> 2026-06-27 統帥要求:避免 Codex Pro 20x 額度因「重複讀取長上下文」暴跌。所有專案都必須把上下文預算視為工程資源;長 log、舊對話、多支線 debug 不得混在同一工作視窗反覆讀取。
|
||||
|
||||
### 開工必跑 `context_budget_gate`
|
||||
|
||||
每個新任務、除錯支線、部署驗證或跨產品切換開始前,Codex 必須先列出:
|
||||
|
||||
```text
|
||||
context_budget_gate:
|
||||
- new_chat_recommended: true|false
|
||||
- reason: ...
|
||||
- long_context_risks: ...
|
||||
- token_spend_priority: goal_and_relevant_files_first
|
||||
- safe_next_action: ...
|
||||
- handoff_ready: true|false
|
||||
```
|
||||
|
||||
### 必須建議 New Chat 的情況
|
||||
|
||||
1. 任務已切換產品、服務、錯誤類型、部署層或資料層。
|
||||
2. 目前視窗已累積 Playwright、SSH、CI、K8s、browser HTML、stack trace 或重複錯誤 log。
|
||||
3. 需要讀取 / 貼入超過約 200 行 log、20KB 輸出,或同一錯誤已重試 3 輪以上。
|
||||
4. 需要重新建模問題,而不是延續同一個 patch。
|
||||
5. 同一視窗已有多條未關閉支線,且使用者只說「繼續」或「下一步」。
|
||||
|
||||
### 正確做法
|
||||
|
||||
1. 長 log 必須落地成檔案,用 `rg` / 精準搜尋讀關鍵段,不得整段貼入對話。
|
||||
2. New Chat handoff 必須控制在 20 行內,包含目標、cwd、已確認事實、已改檔案、驗證結果、blocker、下一步命令。
|
||||
3. 只同步 handoff、治理 snapshot、repo 檔案與明確指定 log 檔;禁止讀取、複製、同步 raw Codex / ChatGPT conversations、sessions、SQLite、auth、`.env`、runtime volumes。
|
||||
4. 若判斷不需 New Chat,必須明確說明原因:同一主題、上下文仍短、可用檔案精準搜尋延續。
|
||||
|
||||
### Token 花費優先順序
|
||||
|
||||
1. 第一優先:任務目標、成功條件、相關檔案路徑、精準錯誤摘要。
|
||||
2. 第二優先:必要程式碼片段、測試名稱、route / component / function 名稱、最小可重現命令。
|
||||
3. 第三優先:用 `rg` 找出的關鍵 log 段落、diff、失敗 stack trace 的最短關鍵段。
|
||||
4. 第四優先:大型文件、完整 CI 輸出、browser HTML、長截圖 OCR、全量 JSON。
|
||||
5. 禁止優先花 Token 在 raw conversation、完整 sessions、整份 SQLite、整段重複 log、無關 repo 掃描。
|
||||
|
||||
### 官方做法對應
|
||||
|
||||
1. `AGENTS.md` 保持短、穩定、可重用;細節文件需要時才讀。
|
||||
2. 複雜任務先 plan / scope,再讀檔、跑測試或修改。
|
||||
3. 只提供相關檔案、選取範圍與摘要;不要把整包歷史當上下文。
|
||||
4. 長內容先 chunk / summarize / preprocess,再餵必要片段。
|
||||
5. 使用 progressive disclosure:先索引、再摘要、最後才完整內容。
|
||||
6. 重複錯誤才升級成永久規則,避免規範膨脹吃掉上下文。
|
||||
7. 多小時任務用 `PLANS.md` / execution plan / handoff 承接。
|
||||
8. 小任務用低推理 / 輕量模型;高風險架構、資安、跨系統才升級推理力。
|
||||
|
||||
### 禁止
|
||||
|
||||
```text
|
||||
❌ 把 Playwright / SSH / CI / K8s 完整長 log 直接貼進同一視窗反覆分析
|
||||
❌ 為了接續任務讀 raw Codex sessions、ChatGPT conversations 或 SQLite
|
||||
❌ 多產品、多部署層、多錯誤型態混在同一視窗追到底
|
||||
❌ 沒有 handoff 就要求下一個視窗靠舊對話記憶
|
||||
❌ 把一次性任務細節塞進全域 AGENTS.md 造成每次開工都重複讀取
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user