fix(agent): classify gitea sustained load pressure
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Failing after 2m10s
CD Pipeline / build-and-deploy (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Failing after 2m10s
CD Pipeline / build-and-deploy (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
## 2026-07-01 — 08:37 Host sustained-load AI controlled automation
|
||||
|
||||
**照主線修正的問題**:
|
||||
- 新增 `scripts/ops/host-sustained-load-controller.py`,把 `HostLoadAverageSustainedHigh` 從「SSH 看 top / 人工判斷」改成可機器讀取的 AI controlled packet:orphan browser / smoke load、合法 Gitea Actions / BuildKit saturation、memory / swap pressure、unknown sustained load 四類分流。
|
||||
- 新增 `scripts/ops/host-sustained-load-controller.py`,把 `HostLoadAverageSustainedHigh` 從「SSH 看 top / 人工判斷」改成可機器讀取的 AI controlled packet:orphan browser / smoke load、合法 Gitea Actions / BuildKit saturation、Gitea queue / hook backlog、memory / swap pressure、unknown sustained load 五類分流。
|
||||
- 新增 `scripts/ops/host-sustained-load-evidence.py`,unknown sustained load 不再回到 raw SSH top,而是產生脫敏 process-family / container evidence 給 source-specific PlayBook、KM、RAG 與後續 controller decision 使用;不輸出 raw command line、workspace path、URL 或 secret value。
|
||||
- `host-runaway-process-remediation.py` 的 apply gate 從 owner / maintenance-window 必填改成 controlled apply receipt 必填:`--controlled-apply-id`、`--evidence-ref`、`--post-apply-verifier`、`--confirm-apply`;owner / maintenance-window 只保留為可選 evidence。若目標 process group 已消失,回報 `already_exited` / `missing_process_group_count`,不再 traceback。
|
||||
- `ops/monitoring/alerts.yml` 與 `ops/monitoring/alerts-unified.yml` 將 sustained load 的 `auto_repair_action` 指向 controller,runbook 改為 AI controlled packet / dry-run / controlled SIGTERM / verifier;清掉 orphan browser 與 remediation authorization 告警中的人工批准語意。
|
||||
@@ -12,7 +12,7 @@
|
||||
- `PYTHONDONTWRITEBYTECODE=1 python3.11 -m pytest scripts/ops/tests/test_host_runaway_process_exporter.py -q --tb=short -p no:cacheprovider` 通過(16 passed)。
|
||||
- `DATABASE_URL=sqlite:///test.db PYTHONDONTWRITEBYTECODE=1 python3.11 -m pytest apps/api/tests/test_ai_agent_autonomous_runtime_control.py -q --tb=short -p no:cacheprovider` 通過(10 passed)。
|
||||
- `git diff --check` 通過。
|
||||
- 110 live readback:從 `http://192.168.0.110:9100/metrics` 只篩 `awoooi_host_*` 指標到 `/tmp/awoooi-host110-load.prom`;controller 回 `classification=blocked_unknown_sustained_load_requires_source_specific_playbook`、`load5_per_core=1.56`、`monitor_up=1`、active CI `0`、orphan rule `null`,並給出 `host-sustained-load-evidence.py --json` 只讀脫敏證據指令;本次未執行 host write / signal / restart。
|
||||
- 110 live readback:從 `http://192.168.0.110:9100/metrics` 只篩 `awoooi_host_*` / Docker CPU 指標;controller / evidence readback 顯示 `load5_per_core=2.563333`、active CI `0`、orphan group `0`、`gitea=3.4019` CPU cores,classification / recommendation 指向 `gitea_queue_or_hook_backlog`;本次未執行 host write / signal / restart。
|
||||
|
||||
**邊界**:本段只做 source / test / Prometheus rule / API readback 實作;未對 live host 送 SIGTERM;未讀 secret / token / `.env` / raw sessions / SQLite / auth;未使用 GitHub / `gh` / GitHub API;未 workflow_dispatch;未重啟主機,未 restart Docker / Nginx / K3s / DB / firewall,未恢復 legacy / generic runner label。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user