diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index 91c46b35..f4c80d2b 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -1,3 +1,57 @@ +## 2026-06-15|端口 / 防火牆事故型 Gate 與前台手機溢出收斂 + +**背景**:2026-06-12 14:00 左右的 110 端口關閉事件暴露「端口 / 防火牆變更」不能只用一般配置變更欄位驗收,必須要求事故等級、服務健康影響、外部 route 影響、恢復時間、操作員通知與事後補件 owner。使用者也指出前台不得揭露工作視窗對話、原始 owner / repo namespace、raw blocked 狀態或內部英文識別資訊;因此本階段同步做 production 前台敏感資訊與手機溢出驗證。 + +**完成項目**: +- `scripts/security/port-firewall-change-evidence-acceptance.py` 已升級事故型收件規則:change evidence fields `40`、required evidence fields `21`、reviewer checks `21`、outcome lanes `9`、blocked actions `28`。 +- `docs/security/PORT-FIREWALL-CHANGE-EVIDENCE-ACCEPTANCE.md`、`port-firewall-change-evidence-acceptance.snapshot.json`、`HIGH-VALUE-CONFIG-CONTROL-COVERAGE.md`、`IWOOOS-CONFIG-CONTROL-INVENTORY.md`、`iwooos-posture-projection.snapshot.json` 與相關 guard 已同步。 +- SSH / firewall / network access 只讀成熟度從 `60%` 推進到 `62%`;高價值配置平均只讀成熟度維持 `69%`。 +- `/zh-TW/iwooos` 前台已顯示端口 / 防火牆事故型證據驗收進度、`62%` 與 `runtime gate 0` 邊界。 +- `apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx` 修正手機版載入 skeleton:KPI grid 改為 `auto-fit`,skeleton 寬度改為容器相對寬度,避免 `/zh-TW/governance?tab=automation-inventory` 載入瞬間產生 20px 水平溢出。 + +**Gitea / CD**: +- 端口 / 防火牆事故型 Gate code commit:`b9b61e50 feat(iwooos): 強化端口防火牆事故證據驗收`。 +- 端口 / 防火牆事故型 Gate code-review run:`3031`,成功。 +- 端口 / 防火牆事故型 Gate CD run:`3030`,成功。 +- 端口 / 防火牆事故型 Gate deploy marker:`93606d57 chore(cd): deploy b9b61e5 [skip ci]`。 +- Governance 手機載入溢出 code commit:`25aae855 fix(governance): 修正自動化盤點手機載入溢出`。 +- Governance 手機載入溢出 code-review run:`3033`,成功。 +- Governance 手機載入溢出 CD run:`3032`,成功。 +- Governance 手機載入溢出 deploy marker:`25d6c4f3 chore(cd): deploy 25aae85 [skip ci]`。 + +**本地驗證**: +- `python3 -m json.tool` 驗證 `docs/security/port-firewall-change-evidence-acceptance.snapshot.json`、`docs/security/high-value-config-control-coverage.snapshot.json`、`docs/security/iwooos-posture-projection.snapshot.json` 通過。 +- `python3 -m py_compile scripts/security/port-firewall-change-evidence-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/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` 通過。 +- `pnpm --filter @awoooi/web typecheck` 通過。 +- `git diff --check` 通過。 +- 本機 Next standalone build 不作為本階段正式判定;先前 trace copy 因本機磁碟空間不足中止,本階段以 Gitea CD deploy marker 與 production route / browser 驗證作為正式部署證據。 + +**Production 驗證**: +- Route smoke:`/zh-TW/iwooos`、`/zh-TW/awooop/tenants`、`/zh-TW/governance?tab=automation-inventory`、`/zh-TW/code-review` 皆回 `200`。 +- Browser desktop `1280x720`:`/zh-TW/iwooos?_v=25d6c4f3-prod-desktop-clean` 顯示 IwoooS、端口 / 防火牆事故 Gate、`62%` 與 `runtime gate 0`;`horizontalOverflow=0`;console error `0`。 +- Browser mobile `390x844`:`/zh-TW/iwooos?_v=25d6c4f3-prod-mobile-clean` 顯示 IwoooS、端口 / 防火牆事故 Gate、`62%` 與 `runtime gate 0`;`horizontalOverflow=0`;console error `0`。 +- Browser mobile `390x844`:`/zh-TW/governance?tab=automation-inventory&_v=25d6c4f3-prod-mobile-clean` 的 `horizontalOverflow` 已從 `20px` 收斂為 `0`;console error `0`。 +- Browser mobile `390x844`:`/zh-TW/awooop/tenants?_v=25d6c4f3-prod-mobile-clean` 頁面級 `horizontalOverflow=0`,前台顯示「前台只顯示脫敏範圍代號,不揭露原始負責人或命名空間」。 +- 敏感資訊掃描:IwoooS、Tenants、Governance、Code Review 均未命中工作視窗文字、`codex_delegation`、`source_thread_id`、`批准!`、原始 owner/repo namespace、`blocked_waiting_*`、`blockers=`、前台內網 IP 或明顯 secret value。 +- Browser 截圖: + - `/tmp/awoooi-iwooos-desktop-1280x720-25d6c4f3.png` + - `/tmp/awoooi-iwooos-mobile-390x844-25d6c4f3.png` + - `/tmp/awoooi-governance-automation-mobile-390x844-25d6c4f3.png` + +**完成度與邊界**: +- Port / firewall incident evidence readiness:`0% -> 100%`。 +- SSH / firewall / network access 只讀成熟度:`60% -> 62%`。 +- Governance automation inventory mobile loading overflow:`0% -> 100%`。 +- Frontend public sensitive redaction defense:維持 `89%`,本階段以 production readback 證明未回歸。 +- IwoooS headline 維持 `64%`;active runtime gate 維持 `0`。 +- service health impact accepted、operator notification accepted、owner response received / accepted、runtime execution、action button、host update、Nginx reload、Docker restart、firewall change、active scan、secret collection、GitHub primary switch、repo creation、refs sync 全部維持 `0 / false`。 +- 本輪未 SSH 修改主機、未讀 live conf raw payload、未改 Nginx、未重啟 Docker / service、未修改 firewall / iptables、未執行 active scan、未收 secrets 明文、未 force push。 + ## 2026-06-15|公開前端 env 範例內網拓樸防回歸 **背景**:production `/api/sentry-tunnel` 已不再回顯實際 upstream target,但 repo 內 `apps/web/.env.example` 仍保留多個 `NEXT_PUBLIC_*` 內網 IP 範例與 server-side `SENTRY_HOST` 內網 URL。這不一定代表目前正式站已外洩,但會讓未來複製範例建置時,把內網拓樸 bake 進 JS bundle 或公開文件,違反前端內網 IP 禁令。