From 3d0c3cc8e25ca411c71503bc68500b45954dd452 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 15 Jun 2026 19:10:26 +0800 Subject: [PATCH] =?UTF-8?q?docs(iwooos):=20=E8=A8=98=E9=8C=84=20AI=20provi?= =?UTF-8?q?der=20=E9=A9=97=E6=94=B6=20gate=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/LOGBOOK.md | 52 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index cd4a04fe3..2be71cf19 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -1,3 +1,55 @@ +## 2026-06-15|AI provider / model routing owner response 驗收 Gate + +**背景**:AI provider、Ollama proxy、fallback 順序、成本預算、隱私資料外送與 Agent replacement 都屬高價值配置;不能因為模型卡、前台健康卡或供應商名稱可見,就誤判為 provider 切換、外部呼叫、付費呼叫、prompt 送出或 runtime gate 已授權。本階段補上 AI provider owner response acceptance,只建立只讀候選、必填欄位、reviewer checks、outcome lanes、blocked actions、模型卡脫敏與前台可視化;不切 provider、不打外部模型、不送 prompt、不做 benchmark live call、不安裝 SDK、不下載模型、不改 Nginx / env / deploy、不碰 host。 + +**完成項目**: +- 新增 `scripts/security/ai-provider-owner-response-acceptance.py` 與 `docs/security/ai-provider-owner-response-acceptance.snapshot.json`。 +- 新增 `docs/security/AI-PROVIDER-OWNER-RESPONSE-ACCEPTANCE.md`,把 provider policy、Ollama proxy、fallback / circuit breaker、cost quota、privacy egress、benchmark dry-run、model card / version inventory 與 agent replacement runtime boundary 固定成只讀驗收候選。 +- AI provider owner response acceptance 固定為 candidates `8`、write-capable candidates `5`、paid-provider related `5`、data-egress related `6`、live-evidence required `6`、acceptance fields `37`、required owner fields `24`、reviewer checks `24`、outcome lanes `10`、blocked actions `38`。 +- 所有 owner response received / accepted、provider switch、external call、paid provider call、prompt send、live endpoint probe、secret collection、runtime gate 與 action button 仍為 `0 / false`。 +- `ai_provider_model_routing` 只讀成熟度從 `60%` 推進到 `64%`,狀態為 `owner_response_acceptance_ready_needs_provider_owner_evidence`。 +- 高價值配置平均成熟度維持 `70%`;needs-live-evidence 類別維持 `10`。 +- `docs/ai/AI-MODEL-CARDS.md` 已改成只保存治理 metadata,端點以 `host:*` alias 表示;不保存內網位址、secret、API key、raw prompt / log 或 live URL。 +- `/zh-TW/iwooos` 前台高價值配置卡片更新為:Docker / systemd 主機服務 `62%`、SSH / network / firewall `62%`、AI provider / model routing `64%`、K8s / ArgoCD GitOps `64%`;`en.json` 維持繁中鏡像。 + +**本地驗證**: +- JSON parse 驗證 `docs/security/ai-provider-owner-response-acceptance.snapshot.json`、`docs/security/high-value-config-control-coverage.snapshot.json`、`docs/security/iwooos-posture-projection.snapshot.json`、`docs/schemas/iwooos_posture_projection_v1.schema.json`、`apps/web/messages/zh-TW.json`、`apps/web/messages/en.json` 通過。 +- `python3 -m py_compile scripts/security/ai-provider-owner-response-acceptance.py scripts/security/high-value-config-control-coverage.py scripts/security/iwooos-config-control-guard.py scripts/security/security-mirror-progress-guard.py` 通過。 +- `python3 scripts/security/iwooos-config-control-guard.py --root .` → `IWOOOS_CONFIG_CONTROL_GUARD_OK`。 +- `python3 scripts/security/security-mirror-progress-guard.py --root .` → `SECURITY_MIRROR_PROGRESS_GUARD_OK`。 +- `python3 scripts/security/public-frontend-env-guard.py --root .` → `OK public frontend sensitive surface guard files=225 patterns=12 allowlisted=2 violations=0 runtime_gate=0`。 +- `python3 scripts/security/source-control-owner-response-guard.py --root .` → `SOURCE_CONTROL_OWNER_RESPONSE_GUARD_OK`。 +- `python3 scripts/security/package-supply-chain-owner-policy-guard.py --root .` → `PACKAGE_SUPPLY_CHAIN_OWNER_POLICY_GUARD_OK`。 +- `python3 scripts/ops/doc-secrets-sanity-check.py docs .gitea` → `DOC_SECRET_SANITY_OK scanned_files=876`。 +- `pnpm --filter @awoooi/web typecheck` 通過;`apps/web/tsconfig.tsbuildinfo` 只屬 typecheck 快取副作用,未納入提交。 +- `git diff --check` 通過。 +- 前台與 AI provider 文件 payload 掃描未命中 raw 內網位址、原始 repo namespace、raw blocker 狀態或內部協作片語;guard 原始碼內保留禁字清單作為阻擋規則。 + +**Gitea / CD**: +- Code commit:`2b865470 feat(iwooos): 新增 AI provider owner response 驗收 gate`。 +- Code-review run:`3053`,公開 Actions 頁顯示成功。 +- CD run:`3052`,已回寫 deploy marker。 +- Deploy marker:`9c134433 chore(cd): deploy 2b86547 [skip ci]`。 + +**Production 驗證**: +- 內建瀏覽器連線逾時,改用本機 Chrome / Playwright 對相同 production URL 做只讀 smoke;未使用任何登入 token、未讀 secrets、未進行寫操作。 +- Browser desktop `1280x720`:`/zh-TW/iwooos?_v=9c134433-ai-provider-prod-desktop` 回 `200`,console error `0`,page error `0`,`horizontalOverflow=false`,必填文案缺漏 `0`,敏感字串命中 `0`。 +- Browser mobile `390x844`:`/zh-TW/iwooos?_v=9c134433-ai-provider-prod-mobile` 回 `200`,console error `0`,page error `0`,`horizontalOverflow=false`,必填文案缺漏 `0`,敏感字串命中 `0`。 +- Browser mobile `390x844` 補充 route smoke:`/zh-TW/governance?tab=automation-inventory`、`/zh-TW/awooop/tenants`、`/zh-TW/code-review` 皆回 `200`、console error `0`、page error `0`、敏感字串命中 `0`、頁面級水平溢出 `false`;Tenants 寬表維持內部捲動容器,整頁寬度仍為 `390`。 +- Browser 截圖: + - `/tmp/awoooi-iwooos-desktop-1280x720-9c134433.png` + - `/tmp/awoooi-iwooos-mobile-390x844-9c134433.png` +- Smoke JSON:`/tmp/awoooi-ai-provider-prod-smoke-9c134433.json`。 + +**完成度與邊界**: +- AI provider owner response acceptance backfill:`0% -> 100%`。 +- AI provider / model routing 只讀成熟度:`60% -> 64%`。 +- 高價值配置平均成熟度:維持 `70%`;needs-live-evidence 類別維持 `10`。 +- IwoooS headline 維持 `64%`;active runtime gate 維持 `0`。 +- owner response received / accepted、dry-run accepted、benchmark accepted、cost review accepted、privacy review accepted、provider switch、external provider call、paid provider call、prompt send、live endpoint probe、secret collection、SDK install、model download、shadow / canary、production write、runtime execution、action button 全部維持 `0 / false`。 +- 本輪未 SSH、未讀 live endpoint / raw prompt / raw log / secret、未切 provider、未做外部或付費模型呼叫、未改 Nginx / env / workflow / deploy config、未重啟 Docker / service、未修改 firewall / iptables、未執行 active scan、未 force push。 +- 下一優先:Docker / systemd 主機服務與 SSH / network / firewall 仍為 `62%`,兩者同列 P1-1 / P1-2;後續應先補 owner live evidence 與 rollback / maintenance window 欄位,再考慮任何 runtime 變更。 + ## 2026-06-15|Docker / systemd 主機服務變更證據驗收 Gate **背景**:主控節點事故後,IwoooS 需要能回答「誰改了主機服務、何時改、改前改後狀態、是否影響 Docker / compose / systemd / port binding / public route / AI provider、是否通知相關專案」。本階段補上 Host Service Change Evidence Acceptance,只建立只讀證據收件、reviewer checks、outcome lanes、blocked actions 與前台可視化;不碰 live host、不 SSH、不讀 raw journal / raw config / raw env、不執行 Docker / systemctl / repair bot / Ansible、不做 route smoke 寫入、不 reload Nginx、不改 firewall、不 active scan。