From cdcd79eebada378e6105143a7594cb0d9e4a1bd5 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 13 Jun 2026 07:35:54 +0800 Subject: [PATCH] fix(publicenv): redact public host aliases --- apps/api/src/services/public_redaction.py | 6 +- apps/api/tests/test_public_redaction.py | 4 + apps/web/messages/en.json | 222 +++++++++--------- apps/web/messages/zh-TW.json | 222 +++++++++--------- apps/web/next.config.js | 2 +- apps/web/sentry.client.config.ts | 2 +- apps/web/sentry.server.config.ts | 2 +- .../src/app/[locale]/awooop/tenants/page.tsx | 2 +- .../tabs/automation-inventory-tab.tsx | 6 +- apps/web/src/app/[locale]/iwooos/page.tsx | 20 +- .../neural-command/NeuralLiveCenter.tsx | 2 +- .../neural-command/NeuralPreFlight.tsx | 2 +- 12 files changed, 248 insertions(+), 244 deletions(-) diff --git a/apps/api/src/services/public_redaction.py b/apps/api/src/services/public_redaction.py index 581c15b28..e05cc25cc 100644 --- a/apps/api/src/services/public_redaction.py +++ b/apps/api/src/services/public_redaction.py @@ -27,12 +27,12 @@ _ENDPOINT_ALIASES = { _HOST_ALIASES = { "192.168.0.110": "host:public-gateway", - "192.168.0.111": "host:dev-111", - "192.168.0.112": "host:kali-112", + "192.168.0.111": "host:dev-a", + "192.168.0.112": "host:kali-readonly", "192.168.0.120": "host:k3s-control-a", "192.168.0.121": "host:k3s-control-b", "192.168.0.125": "host:edge-vip", - "192.168.0.168": "host:dev-168", + "192.168.0.168": "host:dev-b", "192.168.0.188": "host:observability-a", } diff --git a/apps/api/tests/test_public_redaction.py b/apps/api/tests/test_public_redaction.py index afd8e815e..6aedb0a40 100644 --- a/apps/api/tests/test_public_redaction.py +++ b/apps/api/tests/test_public_redaction.py @@ -9,6 +9,8 @@ def test_redact_public_lan_text_replaces_internal_endpoints_with_aliases() -> No "image=192.168.0.110:5000/library/api " "scanner=http://192.168.0.112:8080/health " "ollama=`192.168.0.188:11434` " + "local=192.168.0.111 " + "dev=192.168.0.168 " "unknown=192.168.0.222:1234" ) @@ -18,6 +20,8 @@ def test_redact_public_lan_text_replaces_internal_endpoints_with_aliases() -> No assert "host:public-gateway/registry/library/api" in redacted assert "scanner=host:kali-readonly/scanner/health" in redacted assert "ollama=`host:observability-a/ollama`" in redacted + assert "local=host:dev-a" in redacted + assert "dev=host:dev-b" in redacted assert "unknown=host:internal-node" in redacted diff --git a/apps/web/messages/en.json b/apps/web/messages/en.json index e85dacb91..b8fd9219f 100644 --- a/apps/web/messages/en.json +++ b/apps/web/messages/en.json @@ -130,7 +130,7 @@ }, "topology": { "hosts": "主機層", - "hostsDetail": "110 / 111 / 112 / 120 / 121 / 188 等主機進入佈局視野。", + "hostsDetail": "host:public-gateway / host:dev-a / host:kali-readonly / host:k3s-control-a / host:k3s-control-b / host:observability-a 等主機進入佈局視野。", "products": "專案與網站", "productsDetail": "前台、後台與相鄰專案使用同一組治理視角。", "services": "服務健康", @@ -509,17 +509,17 @@ "aiModelHealth": { "cooldown": "冷卻", "cooldownSeconds": "冷卻 {seconds}s", - "localProxy": "111 proxy", + "localProxy": "local-fallback proxy", "timeout": "逾時", "network": "網路不可達", "refused": "拒絕" }, "aiModelSummary": { "healthyTitle": "目前由 {provider} 承接", - "healthyDetail": "路由順序維持 GCP-A → GCP-B → 111 → Gemini;Gemini只在三層 Ollama都不可用後接手。", - "localFallbackDownTitle": "目前由 {provider} 承接;111 備援不可達", - "localFallbackDownDetail": "GCP-A/GCP-B仍可服務。下一步是修復 111 主機或LAN,不需要改路由或直接切 Gemini。", - "localFallbackCooldownDetail": "111 備援剛失敗,正在短暫冷卻;GCP-A/GCP-B仍可服務,先修復 111 主機或LAN。", + "healthyDetail": "路由順序維持 GCP-A → GCP-B → local-fallback → Gemini;Gemini只在三層 Ollama都不可用後接手。", + "localFallbackDownTitle": "目前由 {provider} 承接;local-fallback 備援不可達", + "localFallbackDownDetail": "GCP-A/GCP-B仍可服務。下一步是修復 local-fallback host或LAN,不需要改路由或直接切 Gemini。", + "localFallbackCooldownDetail": "local-fallback 備援剛失敗,正在短暫冷卻;GCP-A/GCP-B仍可服務,先修復 local-fallback host或LAN。", "degradedTitle": "Ollama lane 已降級至 {provider}", "degradedDetail": "系統已依序嘗試可用節點;請檢查被跳過的 provider與最近修復證據。", "downTitle": "三層 Ollama 目前不可用", @@ -627,7 +627,7 @@ }, "routing": { "module": "AI Router / Agent 分工", - "owns": "GCP-A、GCP-B、111、Gemini fallback與Hermes/OpenClaw/ElephantAlpha 分工" + "owns": "GCP-A、GCP-B、host:dev-a、Gemini fallback與Hermes/OpenClaw/ElephantAlpha 分工" }, "execution": { "module": "PlayBook / MCP / Ansible", @@ -691,7 +691,7 @@ }, "aiRoute": { "title": "AI Provider lane可視化", - "detail": "目前 lane={lane},selected provider={provider};順序以 GCP-A / GCP-B / 111 / Gemini 為治理方向。" + "detail": "目前 lane={lane},selected provider={provider};順序以 GCP-A / GCP-B / local-fallback / Gemini 為治理方向。" } }, "remaining": { @@ -863,7 +863,7 @@ "ai": { "owner": "OpenClaw 主判斷;Hermes 產 KM 草稿", "evidence": "AI route status / selected provider / skipped lanes", - "nextAction": "維持 GCP-A → GCP-B → 111 → Gemini fallback 順序並記錄 lane" + "nextAction": "維持 GCP-A → GCP-B → local-fallback → Gemini fallback 順序並記錄 lane" }, "mcp": { "owner": "MCP 閘道", @@ -2375,8 +2375,8 @@ "checkC1Desc": "repair_lock 防止重複執行", "checkC2Label": "反饋閉環 (Success Rate)", "checkC2Desc": "Success Rate Update → RAG 信心自更新", - "checkC3Label": "執行路徑明確化 (.188)", - "checkC3Desc": "ansible:// 強制路由至 .188 控制節點", + "checkC3Label": "執行路徑明確化 (host:observability-a)", + "checkC3Desc": "ansible:// 強制路由至 host:observability-a 控制節點", "agentRoleOC": "診斷 & RAG 匹配", "agentRoleNemo": "決策 & 執行下令", "todayMatches": "本日匹配", @@ -3775,7 +3775,7 @@ }, "map": { "ollama": "Ollama 三層", - "ollamaDetail": "GCP-A → GCP-B → 111,Gemini 僅在三層失敗後備援。", + "ollamaDetail": "GCP-A → GCP-B → local-fallback,Gemini 僅在三層失敗後備援。", "candidate": "候選狀態", "candidateDetail": "Nemotron 仍被 replay / smoke gate 阻擋。", "cost": "費用邊界", @@ -3811,7 +3811,7 @@ "ollama": "Ollama", "ollama_gcp_a": "Ollama GCP-A", "ollama_gcp_b": "Ollama GCP-B", - "ollama_local": "Ollama 111", + "ollama_local": "Ollama local-fallback", "nemotron": "Nemotron", "gemini": "Gemini", "claude": "Claude", @@ -4918,7 +4918,7 @@ "live": "已接線", "mirror": "Mirror", "providerName": "Provider 順序", - "providerDetail": "GCP-A Ollama -> GCP-B Ollama -> 111 Ollama -> OpenClaw/Nemo -> Gemini", + "providerDetail": "GCP-A Ollama -> GCP-B Ollama -> local-fallback Ollama -> OpenClaw/Nemo -> Gemini", "mcpName": "MCP 閘道", "mcpDetail": "MCP 閘道 先 mirror / wrap,確認 audit與redaction 後才切成唯一閘門", "channelName": "Channel Hub", @@ -5058,7 +5058,7 @@ "packets": { "giteaInventory": { "title": "Gitea 清冊負責人聲明", - "detail": "先收公開範圍 / 本地缺口、組織 / 使用者端點、110 相鄰範圍、標準負責人與舊版處置五題。" + "detail": "先收公開範圍 / 本地缺口、組織 / 使用者端點、gateway-adjacent範圍、標準負責人與舊版處置五題。" }, "githubTarget": { "title": "GitHub 目標負責人判定", @@ -6470,7 +6470,7 @@ }, "aiRouteStatus": { "title": "AI Provider路由", - "subtitle": "目前策略與健康檢查,顯示 GCP-A、GCP-B、111、Gemini的接手順序", + "subtitle": "目前策略與健康檢查,顯示 GCP-A、GCP-B、host:dev-a、Gemini的接手順序", "selected": "使用中:{provider}", "selectedEmpty": "使用中:--", "empty": "尚未取得 AI provider route 狀態。", @@ -6504,7 +6504,7 @@ "roles": { "primary": "第一順位", "secondary": "第二順位", - "local_fallback": "111 本機備援", + "local_fallback": "local-fallback 本機備援", "final_fallback": "Gemini 最終備援", "ollama": "Ollama 節點" }, @@ -6557,7 +6557,7 @@ "gcloud_projects_get_iam_policy_missing": "缺 GCP IAM 讀取權限", "gcp_a_ssh_refused": "GCP-A SSH 拒絕連線", "gcp_a_ollama_11434_refused": "GCP-A Ollama 11434 拒絕", - "proxy_110_11435_http_502": "110 proxy 11435 回 502", + "proxy_110_11435_http_502": "provider proxy 11435 回 502", "unknown": "{blocker}" }, "probes": { @@ -6566,9 +6566,9 @@ "gcp_a_direct_22": "GCP-A SSH 22", "gcp_a_direct_11434": "GCP-A 11434", "gcp_b_direct_11434": "GCP-B 11434", - "proxy_110_11435": "110 proxy 11435", - "proxy_110_11436": "110 proxy 11436", - "proxy_110_11437": "110 proxy 11437", + "proxy_110_11435": "provider proxy 11435", + "proxy_110_11436": "provider proxy 11436", + "proxy_110_11437": "provider proxy 11437", "unknown": "{probe}" } } @@ -6719,7 +6719,7 @@ "securityEntry": "資安入口", "securityEntryDetail": "IwoooS仍是資訊安全的只讀入口與態勢鏡像。", "hostCoverage": "主機覆蓋", - "hostCoverageDetail": "Kali 112、開發主機 168、開發主機 111 已納入只觀察視野。", + "hostCoverageDetail": "Kali host:kali-readonly、開發主機 host:dev-b、開發主機 host:dev-a 已納入只觀察視野。", "policyMutations": "租戶政策變更", "policyMutationsDetail": "目前為 0;負責人回覆與執行期閘門前不得改政策。" }, @@ -7202,12 +7202,12 @@ "activeRuntimeGates": "主動執行閘門", "activeRuntimeGatesDetail": "任何執行期閘門仍需獨立批准、回復方案與事後檢查證據。", "headline": "整體資安網", - "headlineDetail": "已因 AwoooP 正式只讀落地證據與Kali 112 今日只讀驗證重估到 64%;下一次仍要靠負責人回覆、執行期閘門或GitHub 主要來源證據。" + "headlineDetail": "已因 AwoooP 正式只讀落地證據與Kali host:kali-readonly 今日只讀驗證重估到 64%;下一次仍要靠負責人回覆、執行期閘門或GitHub 主要來源證據。" }, "checks": { "s49OwnerAttestation": { "title": "S4.9 Gitea 負責人證明", - "detail": "下一個建議先收;需要回覆公開來源限定 / 本地差異、組織 / 使用者端點、110 鄰近來源、標準負責人與舊版處置。" + "detail": "下一個建議先收;需要回覆公開來源限定 / 本地差異、組織 / 使用者端點、gateway-adjacent來源、標準負責人與舊版處置。" }, "s410GithubTarget": { "title": "S4.10 GitHub 目標負責人", @@ -7247,7 +7247,7 @@ "responseLanes": { "giteaOwnerAttestation": { "title": "Gitea 清冊負責人證明", - "detail": "先確認公開來源限定 / 本地差異、組織 / 使用者端點、110 鄰近來源、標準負責人與舊版處置。" + "detail": "先確認公開來源限定 / 本地差異、組織 / 使用者端點、gateway-adjacent來源、標準負責人與舊版處置。" }, "githubTargetOwner": { "title": "GitHub 目標負責人決策", @@ -8114,7 +8114,7 @@ }, "assetMesh": { "title": "資產與主機已納管", - "body": "9 類產品 / 網站 / 工具面與112、111、168 三台主機已放入同一個只讀資安網。" + "body": "9 類產品 / 網站 / 工具面與host:kali-readonly、host:dev-a、host:dev-b 三台主機已放入同一個只讀資安網。" }, "nextBlocker": { "title": "待補關鍵證據", @@ -8170,7 +8170,7 @@ "hostTools": { "label": "主機工具", "title": "Kali與工具鏈", - "body": "看 112 / 111 / 168與監控、MCP、Ansible、KM的只讀鏈路。" + "body": "看 host:kali-readonly / host:dev-a / host:dev-b與監控、MCP、Ansible、KM的只讀鏈路。" }, "sourceControl": { "label": "版本來源", @@ -8270,7 +8270,7 @@ "body": "確認 Gitea 內 wooo 應以 使用者、組織或雙軌盤點,避免 負責人 判定漂移。" }, "adjacentScope": { - "title": "110 鄰近來源範圍", + "title": "gateway-adjacent來源範圍", "body": "逐項判定 bitan-pharmacy、momo-pro-system、tsenyang-website、wooo-infra-config 是否納入。" }, "canonicalOwner": { @@ -8430,7 +8430,7 @@ "body": "等待負責人判定 Gitea `wooo` 應以使用者、組織或雙軌方式盤點。" }, "adjacentScope": { - "title": "D3 110 鄰近來源回覆", + "title": "D3 gateway-adjacent來源回覆", "body": "等待負責人逐項判定 bitan-pharmacy、momo-pro-system、tsenyang-website與基礎設施設定來源。" }, "canonicalOwner": { @@ -8470,7 +8470,7 @@ }, "hosts": { "title": "Kali與開發主機", - "body": "112、111、168只呈現觀測與證據窗口,不直接連線執行。" + "body": "host:kali-readonly、host:dev-a、host:dev-b只呈現觀測與證據窗口,不直接連線執行。" }, "sourceControl": { "title": "GitHub / Gitea", @@ -8522,14 +8522,14 @@ }, "sourceToHost": { "title": "版本來源到主機", - "evidence": "GitHub / Gitea、Kali、111 / 168 已串成只讀路徑。", + "evidence": "GitHub / Gitea、Kali、host:dev-a / host:dev-b 已串成只讀路徑。", "risk": "主機窗口與版本來源決策尚未完成。", "next": "收斂負責人窗口與決策紀錄。", "locked": "不改分支參照、工作流程或主機設定。" }, "kaliToDev": { "title": "Kali 到開發主機", - "evidence": "112、111、168 已可在同一路徑中理解。", + "evidence": "host:kali-readonly、host:dev-a、host:dev-b 已可在同一路徑中理解。", "risk": "未批准前不能把關係圖當掃描範圍。", "next": "等待掃描範圍與維護窗口批准。", "locked": "scan_authorized=false。" @@ -8602,10 +8602,10 @@ "body": "GitHub / Gitea 是版本來源關鍵節點;目前只顯示 S4.9 負責人回覆待補與決策紀錄缺口,不執行分支參照或工作流程變更。" }, "kali": { - "body": "Kali host:kali-112 已列為資安主機節點;此區僅呈現它與版本來源、開發主機、證據鏈的關係,不代表已授權掃描。" + "body": "Kali host:kali-readonly 已列為資安主機節點;此區僅呈現它與版本來源、開發主機、證據鏈的關係,不代表已授權掃描。" }, "devHosts": { - "body": "host:dev-111與host:dev-168 以開發主機群呈現,等主機維護窗口與負責人決策紀錄完整後才能進入執行期。" + "body": "host:dev-a與host:dev-b 以開發主機群呈現,等主機維護窗口與負責人決策紀錄完整後才能進入執行期。" }, "monitoring": { "body": "監控、MCP、Ansible、KM與告警資料先進入證據線,讓 IwoooS 能解釋訊號來源與新鮮度。" @@ -8629,8 +8629,8 @@ }, "topology": { "title": "主機拓樸", - "mapTitle": "112 / 111 / 168只讀觀測主機網", - "detail": "將 Kali 112、開發主機 111 / 168、監控工具與AwoooP 真相鏈整合為單一拓樸視角。", + "mapTitle": "host:kali-readonly / host:dev-a / host:dev-b只讀觀測主機網", + "detail": "將 Kali host:kali-readonly、開發主機 host:dev-a / host:dev-b、監控工具與AwoooP 真相鏈整合為單一拓樸視角。", "evidence": "目前只呈現觀測窗口、證據位置與人工閘門,沒有執行 SSH、掃描或主機設定變更。", "next": "等執行期閘門與掃描範圍批准後,才把只讀證據轉入受控探測。", "locked": "host_change_authorized=false,scan_authorized=false。" @@ -8660,7 +8660,7 @@ "title": "版本來源" }, "kali": { - "title": "Kali 112" + "title": "Kali host:kali-readonly" }, "devHosts": { "title": "開發主機" @@ -8686,7 +8686,7 @@ }, "hostFabric": { "title": "主機拓樸面", - "body": "112、111、168 維持只讀觀測顯示。" + "body": "host:kali-readonly、host:dev-a、host:dev-b 維持只讀觀測顯示。" }, "evidenceOps": { "title": "證據營運面", @@ -8758,9 +8758,9 @@ }, "hostWindow": { "short": "主機窗口", - "title": "Kali 112與開發主機 111 / 168的維護窗口", + "title": "Kali host:kali-readonly與開發主機 host:dev-a / host:dev-b的維護窗口", "body": "三台主機已進入資安架構圖,但目前是只讀納管,不代表已允許更新、調校、掃描或SSH 操作。", - "evidence": "112 / 111 / 168 在拓樸圖、路徑探索器與主機證據鏈中可見。", + "evidence": "host:kali-readonly / host:dev-a / host:dev-b 在拓樸圖、路徑探索器與主機證據鏈中可見。", "next": "等待維護窗口、範圍、負責人與回復路徑確認。", "blocked": "host_change_authorized=false;scan_authorized=false。" }, @@ -8799,11 +8799,11 @@ "body": "先列入只讀驗證與控管範圍,不啟用 agent 執行、claim、submit 或 bounty 撥付。" }, "kali": { - "title": "Kali host:kali-112", + "title": "Kali host:kali-readonly", "body": "列入資安主機,但目前只讀顯示。" }, "devHosts": { - "title": "開發主機 111 / 168", + "title": "開發主機 host:dev-a / host:dev-b", "body": "等待維護窗口與負責人決策。" }, "monitoring": { @@ -8905,12 +8905,12 @@ "caption": "新專案只讀納管" }, "kali112": { - "title": "Kali 112", + "title": "Kali host:kali-readonly", "caption": "只讀快照已接入" }, "devHosts": { "title": "開發主機", - "caption": "168 / 111 納入視野" + "caption": "host:dev-b / host:dev-a 納入視野" }, "githubPrimary": { "title": "GitHub 主來源", @@ -8945,7 +8945,7 @@ "drilldown": { "title": "展開證據 / 主機 / 動作下鑽", "evidence": "證據:快照、守門、LOGBOOK、審批佇列保留在下方可展開區。", - "hosts": "主機:Kali 112、開發主機 168 / 111都以只讀納管,不直接 SSH或掃描。", + "hosts": "主機:Kali host:kali-readonly、開發主機 host:dev-b / host:dev-a都以只讀納管,不直接 SSH或掃描。", "actions": "動作:所有高風險動作仍需人工決策,頁面不提供執行按鈕。" } }, @@ -8976,10 +8976,10 @@ }, "devHosts": { "title": "開發主機", - "state": "111 / 168" + "state": "host:dev-a / host:dev-b" }, "kali112": { - "title": "Kali 112", + "title": "Kali host:kali-readonly", "state": "待維護" }, "runtimeGate": { @@ -9028,12 +9028,12 @@ "caption": "新專案先只讀納管" }, "kali112": { - "title": "Kali 112", + "title": "Kali host:kali-readonly", "caption": "維護窗口待人工確認" }, "devHosts": { "title": "開發主機", - "caption": "111 / 168 納入範圍" + "caption": "host:dev-a / host:dev-b 納入範圍" }, "githubPrimary": { "title": "GitHub 主來源", @@ -9132,7 +9132,7 @@ }, "hostKali": { "title": "主機與Kali邊界", - "summary": "將 host:kali-112 / host:dev-111 / host:dev-168的 僅觀察、收件與人工決策證據收在進階區。" + "summary": "將 host:kali-readonly / host:dev-a / host:dev-b的 僅觀察、收件與人工決策證據收在進階區。" } }, "metrics": { @@ -9204,7 +9204,7 @@ }, "hosts": { "title": "Kali與開發主機", - "body": "host:kali-112 / host:dev-111 / host:dev-168只進 僅觀察 coverage。" + "body": "host:kali-readonly / host:dev-a / host:dev-b只進 僅觀察 coverage。" }, "toolsMonitoring": { "title": "監控、工具與自動化", @@ -9227,7 +9227,7 @@ "globalSecurityMeshMatrix": { "eyebrow": "全域資安納管矩陣", "title": "所有產品、主機、工具放在同一張表", - "subtitle": "將 AwoooI、AwoooP、IwoooS、公開網站群、VibeWork、agent-bounty-protocol、Kali 112、開發主機與GitHub / Gitea 版本來源放到同一個只讀矩陣,先呈現納管範圍,再決定哪一段要收證或開人工閘門。", + "subtitle": "將 AwoooI、AwoooP、IwoooS、公開網站群、VibeWork、agent-bounty-protocol、Kali host:kali-readonly、開發主機與GitHub / Gitea 版本來源放到同一個只讀矩陣,先呈現納管範圍,再決定哪一段要收證或開人工閘門。", "coverageLabel": "覆蓋", "evidenceLabel": "證據", "runtimeLabel": "執行", @@ -9294,7 +9294,7 @@ "next": "先完成 VibeWork 六項只讀收件。" }, "kali112": { - "title": "Kali host:kali-112", + "title": "Kali host:kali-readonly", "layer": "安全主機、掃描能力、維護窗口與主機狀態。", "coverage": "只讀快照", "evidence": "待維護窗口", @@ -9302,7 +9302,7 @@ "next": "維持觀測,不執行更新、掃描或/execute。" }, "devHosts": { - "title": "開發主機 111 / 168", + "title": "開發主機 host:dev-a / host:dev-b", "layer": "兩台開發主機的資安範圍、證據收件與人工判定。", "coverage": "已納入", "evidence": "待補主機證據", @@ -9330,7 +9330,7 @@ "hostToolEvidenceChain": { "eyebrow": "主機與工具證據鏈", "title": "Kali、開發主機、監控工具一次看清楚", - "subtitle": "將 Kali host:kali-112、開發主機 host:dev-111 / host:dev-168、Sentry / SigNoz、MCP、自建 MCP、Ansible、KM、GitHub / Gitea 放在同一條只讀證據鏈。這一層只回答「有沒有納入、證據在哪、下一關是誰」,不執行掃描或主機變更。", + "subtitle": "將 Kali host:kali-readonly、開發主機 host:dev-a / host:dev-b、Sentry / SigNoz、MCP、自建 MCP、Ansible、KM、GitHub / Gitea 放在同一條只讀證據鏈。這一層只回答「有沒有納入、證據在哪、下一關是誰」,不執行掃描或主機變更。", "flowTitle": "證據鏈順序", "evidenceLabel": "證據", "nextLabel": "下一步", @@ -9339,7 +9339,7 @@ "summary": { "hosts": { "label": "主機", - "detail": "112、111、168 三台進入視野。" + "detail": "host:kali-readonly、host:dev-a、host:dev-b 三台進入視野。" }, "toolLanes": { "label": "工具線", @@ -9378,19 +9378,19 @@ }, "items": { "kali112": { - "title": "Kali host:kali-112", + "title": "Kali host:kali-readonly", "scope": "安全主機已納入 IwoooS;目前只呈現快照、維護窗口與待處理項。", "evidence": "只讀 快照、1994 package 佇列、1 個 systemd 異常、/execute=false。", "next": "等維護窗口與人工授權,不更新、不重啟、不掃描。" }, "dev111": { - "title": "開發主機 host:dev-111", + "title": "開發主機 host:dev-a", "scope": "本機備援、開發服務與AI fallback 相關資產先納入觀測。", "evidence": "目前只收主機角色、服務範圍、負責人決策與脫敏證據。", "next": "補負責人證據;不做 SSH 變更或服務調校。" }, "dev168": { - "title": "開發主機 host:dev-168", + "title": "開發主機 host:dev-b", "scope": "開發主機與專案工作區納入資安範圍。", "evidence": "目前只收主機中繼資料、專案對應與人工判定。", "next": "補主機證據與責任邊界;不開自動修復。" @@ -9536,9 +9536,9 @@ "body": "Gitea 到 GitHub的長期方向已確認,但 參照、工作流程、機密 name與回復 ADR仍需負責人回覆。" }, "kali": { - "title": "Kali 112 網格", + "title": "Kali host:kali-readonly 網格", "state": "只觀測", - "body": "Kali 112 已在資安網範圍中,111 / 168 也納入 僅觀察。主動掃描與/execute仍維持封鎖候選。" + "body": "Kali host:kali-readonly 已在資安網範圍中,host:dev-a / host:dev-b 也納入 僅觀察。主動掃描與/execute仍維持封鎖候選。" }, "governance": { "title": "審批邊界", @@ -9740,7 +9740,7 @@ }, "kaliNotCalled": { "title": "前端索引不呼叫 Kali", - "body": "Kali 112 維持 僅觀察;任何 主動掃描或/execute都必須走人工批准與後續 閘門。" + "body": "Kali host:kali-readonly 維持 僅觀察;任何 主動掃描或/execute都必須走人工批准與後續 閘門。" } } }, @@ -9813,7 +9813,7 @@ }, "kaliScanScope": { "title": "Kali 掃描範圍", - "body": "Kali 112、111、168 目前仍是僅觀察;主動掃描與/execute仍需獨立批准。", + "body": "Kali host:kali-readonly、host:dev-a、host:dev-b 目前仍是僅觀察;主動掃描與/execute仍需獨立批准。", "unlock": "掃描範圍批准 + 後續追蹤 閘門" }, "followupRuntimeGate": { @@ -9830,29 +9830,29 @@ "items": { "kali112": { "title": "Kali 資安主機", - "body": "host:kali-112 是資安網的 Kali 節點,已在姿態與證據參照中作為僅觀察整合面。", + "body": "host:kali-readonly 是資安網的 Kali 節點,已在姿態與證據參照中作為僅觀察整合面。", "state": "已納入視野;主動掃描、/execute、主機更新仍需獨立批准" }, "dev168": { - "title": "開發主機 168", - "body": "host:dev-168 納入 IwoooS的僅觀察開發主機覆蓋,用於後續掃描範圍批准與發現關聯。", + "title": "開發主機 host:dev-b", + "body": "host:dev-b 納入 IwoooS的僅觀察開發主機覆蓋,用於後續掃描範圍批准與發現關聯。", "state": "範圍已宣告;尚未批准憑證掃描或執行期控制" }, "dev111": { - "title": "開發主機 111", - "body": "host:dev-111 納入 IwoooS的僅觀察開發主機覆蓋,與168 一起維持低摩擦分階段收斂。", + "title": "開發主機 host:dev-a", + "body": "host:dev-a 納入 IwoooS的僅觀察開發主機覆蓋,與 host:dev-b 一起維持低摩擦分階段收斂。", "state": "範圍已宣告;尚未批准憑證掃描或執行期控制" } } }, "kaliMaintenanceReadiness": { - "eyebrow": "Kali 112 維護就緒度", - "title": "Kali 112 今天已重新只讀驗證,更新與重啟仍在維護閘門", + "eyebrow": "Kali host:kali-readonly 維護就緒度", + "title": "Kali host:kali-readonly 今天已重新只讀驗證,更新與重啟仍在維護閘門", "subtitle": "這個看板把 2026-06-04 08:55的只讀 SSH 快照轉成操作可讀狀態:掃描服務與8080 /health 健康檢查正常,node-exporter與wg-easy仍在運作;但完整套件升級、自動移除、重啟、掃描、/execute與服務硬化套用都還沒有批准。", "maintenanceGateLabel": "維護 閘門", "maintenanceGate": "Kali 完整套件升級、自動移除與重啟仍在資安審批佇列等待批准。必須先有維護窗口、快照、回復方案、事後健康複驗與人工批准,才能往主機更新前進。", "nextEvidenceLabel": "下一份要補的證據", - "nextEvidence": "將 Kali 112 維護窗口批准案的維護窗口、回復負責人、服務驗證清單與失敗處理路徑補齊。補齊前 IwoooS只顯示就緒度,不提供任何更新或重啟入口。", + "nextEvidence": "將 Kali host:kali-readonly 維護窗口批准案的維護窗口、回復負責人、服務驗證清單與失敗處理路徑補齊。補齊前 IwoooS只顯示就緒度,不提供任何更新或重啟入口。", "runwayLabel": "維護闖關路徑", "boundaryTitle": "只讀邊界", "boundaryIntro": "以下邊界由 `kali-integration-status.快照.json`與審批佇列投影而來,用來避免把可見狀態誤讀成執行授權。", @@ -9912,7 +9912,7 @@ "items": { "activeScan": { "title": "主動掃描", - "body": "對 Kali 112、開發主機 168 / 111的主動掃描仍未批准,不能由 IwoooS 直接觸發。", + "body": "對 Kali host:kali-readonly、開發主機 host:dev-b / host:dev-a的主動掃描仍未批准,不能由 IwoooS 直接觸發。", "gate": "需要 S1.6 掃描範圍批准與後續 執行期閘門" }, "credentialedScan": { @@ -9949,7 +9949,7 @@ "items": { "scopeBoundary": { "title": "範圍邊界", - "body": "確認 112、168、111的允許目標、排除範圍、掃描深度與速率限制。", + "body": "確認 host:kali-readonly、host:dev-b、host:dev-a的允許目標、排除範圍、掃描深度與速率限制。", "evidence": "需要脫敏 掃描範圍批准;已收到=0、已接受=0" }, "ownerDecision": { @@ -11334,7 +11334,7 @@ }, "progressHoldMovementGates": { "title": "為什麼現在是 64%", - "subtitle": "AwoooP 正式只讀落地 先把重點從 58% 推到 61%;Kali 112 今日正式只讀驗證後,目前保守重估到 64%。其餘四個高層閘門仍是 0 / false,框架、文件與前端可見性不會被灌水成 執行期 執行。", + "subtitle": "AwoooP 正式只讀落地 先把重點從 58% 推到 61%;Kali host:kali-readonly 今日正式只讀驗證後,目前保守重估到 64%。其餘四個高層閘門仍是 0 / false,框架、文件與前端可見性不會被灌水成 執行期 執行。", "gateLabel": "移動門檻", "moveLabel": "什麼時候會動", "guardLabel": "不灌水原則", @@ -11373,7 +11373,7 @@ }, "headlineMovementAcceptanceGate": { "title": "64% 重估驗收紀錄", - "subtitle": "六個高層閘門 中,AwoooP 正式環境落地與Kali 112 今日只讀證據 已有正式部署與只讀消費證據,因此本次承認兩項證據,重點目前保守重估到 64%;其餘 負責人回覆、脫敏匯入、執行期閘門與GitHub 主要來源仍是 0 / false。", + "subtitle": "六個高層閘門 中,AwoooP 正式環境落地與Kali host:kali-readonly 今日只讀證據 已有正式部署與只讀消費證據,因此本次承認兩項證據,重點目前保守重估到 64%;其餘 負責人回覆、脫敏匯入、執行期閘門與GitHub 主要來源仍是 0 / false。", "gateLabel": "重估 閘門", "acceptanceLabel": "驗收條件", "guardLabel": "仍禁止", @@ -11381,7 +11381,7 @@ "summary": { "headline": { "label": "目前 重點", - "detail": "已從 58% 到 61%,並因 Kali 112 今日只讀證據重估到 64%,不把框架層堆疊灌水成落地執行。" + "detail": "已從 58% 到 61%,並因 Kali host:kali-readonly 今日只讀證據重估到 64%,不把框架層堆疊灌水成落地執行。" }, "signals": { "label": "移動訊號", @@ -11399,7 +11399,7 @@ "items": { "s49OwnerResponseAccepted": { "title": "S4.9 負責人回覆驗收", - "body": "下一個真正會推動 64%的 P0 是 Gitea 負責人聲明:僅公開 / local 缺口、組織 / 使用者端點、110 adjacent 範圍、專案庫 負責人 權威 範圍、legacy / inaccessible disposition 五項要收到脫敏證據。", + "body": "下一個真正會推動 64%的 P0 是 Gitea 負責人聲明:僅公開 / local 缺口、組織 / 使用者端點、gateway-adjacent 範圍、專案庫 負責人 權威 範圍、legacy / inaccessible disposition 五項要收到脫敏證據。", "acceptance": "五項都通過 預檢與S4.13 驗證 rollup,才可記錄 負責人_response_已接受_count > 0。", "guard": "不代填、不催收、不標記 已收到 / 已接受、不建立審批紀錄。" }, @@ -11428,14 +11428,14 @@ "guard": "只讀落地不是 批准、操作按鈕、執行路由或阻擋控制。" }, "kali112ReadOnlyProof": { - "title": "Kali 112 今日只讀證據", - "body": "2026-06-04 08:55 已完成 Kali 112 SSH只讀快照、掃描ner 8080 /health、待更新套件 1994、networking.service與服務硬化 0/4的正式站可見證據。", + "title": "Kali host:kali-readonly 今日只讀證據", + "body": "2026-06-04 08:55 已完成 Kali host:kali-readonly SSH只讀快照、掃描ner 8080 /health、待更新套件 1994、networking.service與服務硬化 0/4的正式站可見證據。", "acceptance": "已有 Gitea CD run 3623、正式站 desktop / mobile 驗證與維護闖關路徑;runtime_execution_authorized=false。", "guard": "只讀證據不是 主動掃描、/execute、SSH 變更、更新、重啟或服務硬化授權。" }, "nextHeadlineReviewRecord": { "title": "本次 重點審查 紀錄", - "body": "本次重估只引用 AwoooP 正式只讀落地與Kali 112 今日只讀證據,說明為何目前調整到 64%。", + "body": "本次重估只引用 AwoooP 正式只讀落地與Kali host:kali-readonly 今日只讀證據,說明為何目前調整到 64%。", "acceptance": "審查 紀錄 必須引用具體 證據參照、守門 output、風險邊界與禁止動作清單;本次仍鎖 執行期。", "guard": "不因為新增看板、文件或清單就調整 重點。" } @@ -12994,7 +12994,7 @@ "items": { "giteaOwnerAttestation": { "title": "S4.9 Gitea 負責人聲明 先收", - "body": "先確認 Gitea 覆蓋範圍、僅公開 / local 缺口、組織 / 使用者端點、110 adjacent 來源、權威負責人與legacy disposition。", + "body": "先確認 Gitea 覆蓋範圍、僅公開 / local 缺口、組織 / 使用者端點、gateway-adjacent 來源、權威負責人與legacy disposition。", "next": "需要 負責人 依 GITEA-INVENTORY-OWNER-ATTESTATION-RESPONSE 回覆 5 個脫敏證據參照。", "guard": "已收到=0;已接受=0;不保存 權杖 value、不寫 Gitea、不 同步 參照、不切 主要來源。" }, @@ -13038,10 +13038,10 @@ "guard": "不呼叫 admin API、不使用 權杖、不把 endpoint 判定當成 inventory 完成。" }, "internal110AdjacentScope": { - "title": "110 adjacent 來源 範圍", + "title": "gateway-adjacent 來源 範圍", "body": "判定 `bitan-pharmacy`、`root/momo-pro-system`、`tsenyang-website`、`wooo/wooo-infra-config` 是否納入目前階段 範圍。", "ownerAction": "逐項標示 in 範圍 / out of 範圍 / legacy / external / inaccessible,並補脫敏來源證據。", - "guard": "不讀取私有 專案庫 內容、不匯入 archive、不把 110 adjacent 來源 自動納入 migration。" + "guard": "不讀取私有 專案庫 內容、不匯入 archive、不把 gateway-adjacent 來源 自動納入 migration。" }, "repoOwnerCanonicalScope": { "title": "Repo 負責人 / 權威 / GitHub 目標", @@ -13293,13 +13293,13 @@ }, "progressMovementSignals": { "title": "64% 進度移動訊號驗收條", - "subtitle": "將真正會讓整體資安網 重點 往前的訊號拉到 IwoooS:AwoooP 落地證據已驗證為 1,讓整體先從 58% 重估到 61%,Kali 112 今日只讀驗證再把目前進度重估到 64%;負責人回覆、脫敏證據匯入、執行期閘門與GitHub 主要來源仍是 0或false。", + "subtitle": "將真正會讓整體資安網 重點 往前的訊號拉到 IwoooS:AwoooP 落地證據已驗證為 1,讓整體先從 58% 重估到 61%,Kali host:kali-readonly 今日只讀驗證再把目前進度重估到 64%;負責人回覆、脫敏證據匯入、執行期閘門與GitHub 主要來源仍是 0或false。", "boundaryTitle": "進度移動驗收邊界", "boundaryIntro": "以下鍵值固定:這是 重點 移動條件的只讀驗收條,不是進度灌水、批准、掃描、修復、部署、主機變更或版本來源操作入口。", "summary": { "headline": { "label": "目前進度", - "detail": "已依正式只讀落地與Kali 112 今日只讀證據重估到 64%,不把框架細節灌水。" + "detail": "已依正式只讀落地與Kali host:kali-readonly 今日只讀證據重估到 64%,不把框架細節灌水。" }, "signals": { "label": "移動訊號", @@ -13307,7 +13307,7 @@ }, "passed": { "label": "已通過", - "detail": "目前 2,AwoooP 正式只讀落地與Kali 112 今日只讀證據已成立。" + "detail": "目前 2,AwoooP 正式只讀落地與Kali host:kali-readonly 今日只讀證據已成立。" }, "runtime": { "label": "執行期閘門", @@ -13336,8 +13336,8 @@ "body": "AwoooP 需能只讀消費 快照、守門與證據參照,且不新增執行按鈕。" }, "kali112ReadOnly": { - "title": "Kali 112只讀證據", - "body": "Kali 112 已完成 2026-06-04 SSH只讀快照與掃描ner 8080 /health 驗證;這只代表納管可見,不代表掃描、更新、重啟或服務硬化授權。" + "title": "Kali host:kali-readonly只讀證據", + "body": "Kali host:kali-readonly 已完成 2026-06-04 SSH只讀快照與掃描ner 8080 /health 驗證;這只代表納管可見,不代表掃描、更新、重啟或服務硬化授權。" } } }, @@ -13373,7 +13373,7 @@ }, "hostScopeInventory": { "title": "主機與範圍盤點框架", - "body": "已把 Kali host:kali-112、開發主機 host:dev-168、host:dev-111 放入主機覆蓋、動作閘門與證據就緒度。", + "body": "已把 Kali host:kali-readonly、開發主機 host:dev-b、host:dev-a 放入主機覆蓋、動作閘門與證據就緒度。", "evidence": "具體產出:看得到主機納管範圍與禁止動作;尚未 SSH、更新主機、掃描或變更設定。" }, "sourceControlMigration": { @@ -13434,7 +13434,7 @@ }, "hostScopeEvidence": { "title": "主機範圍與證據欄位", - "delivered": "已把 Kali host:kali-112、開發主機 host:dev-168、host:dev-111 納入只讀 host coverage與action 閘門。", + "delivered": "已把 Kali host:kali-readonly、開發主機 host:dev-b、host:dev-a 納入只讀 host coverage與action 閘門。", "next": "等待脫敏主機證據、範圍確認與負責人回覆進入收件流程。", "blocked": "不可 SSH、更新主機、掃描、調整設定或收未脫敏主機資料。" }, @@ -13649,7 +13649,7 @@ }, "hostCoverage": { "title": "主機覆蓋波次", - "allowed": "Kali、host:dev-168、host:dev-111只顯示 coverage、action 閘門與證據 readines。", + "allowed": "Kali、host:dev-b、host:dev-a只顯示 coverage、action 閘門與證據 readines。", "beforeRuntime": "需要明確主機 範圍、maintenance window、憑證 handling、回復與人工 執行期閘門。", "forbidden": "不得自動 SSH、更新主機、掃描、調校、收未脫敏資料或執行 Kali /execute。" }, @@ -13733,7 +13733,7 @@ }, "hostSafetyWindow": { "title": "主機安全窗口與回復可用", - "requiredEvidence": "Kali、host:dev-168、host:dev-111 需要 範圍、maintenance window、憑證 handling與回復 負責人。", + "requiredEvidence": "Kali、host:dev-b、host:dev-a 需要 範圍、maintenance window、憑證 handling與回復 負責人。", "acceptanceSignal": "主機 負責人 明確接受後,才可建立後續 執行期閘門候選。", "stillClosed": "目前不得 SSH、掃描、更新主機、調校設定或執行 Kali /execute。" }, @@ -13799,7 +13799,7 @@ }, "hostSafetyHold": { "title": "主機安全暫停分流", - "why": "Kali、host:dev-168、host:dev-111 尚缺 範圍、maintenance window、憑證 handling或回復 負責人。", + "why": "Kali、host:dev-b、host:dev-a 尚缺 範圍、maintenance window、憑證 handling或回復 負責人。", "next": "等待主機 負責人 明確接受後,才可列入後續 執行期閘門候選。", "blocked": "不得 SSH、更新主機、掃描、調校或執行 Kali /execute。" }, @@ -13871,7 +13871,7 @@ }, "hostSafetyWindow": { "title": "主機安全窗口接線", - "evidence": "Kali、host:dev-168、host:dev-111 需要 範圍、maintenance window、憑證 handling與回復 負責人。", + "evidence": "Kali、host:dev-b、host:dev-a 需要 範圍、maintenance window、憑證 handling與回復 負責人。", "handoff": "先只顯示主機證據缺口與等待窗口,不開 live 掃描或SSH path。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -13942,7 +13942,7 @@ }, "hostWindow": { "title": "主機安全窗口預檢", - "checkPoint": "確認 Kali、host:dev-168、host:dev-111的 範圍、maintenance window、憑證 handling與回復 負責人都只以中繼資料 呈現。", + "checkPoint": "確認 Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling與回復 負責人都只以中繼資料 呈現。", "passSignal": "只可標示 host 證據 缺口 已可讀,不能建立 live action。", "failRoute": "缺窗口、憑證邊界或回復 負責人 時維持主機安全暫停。", "stillClosed": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" @@ -14016,7 +14016,7 @@ }, "hostWindowHold": { "title": "主機安全暫停分流", - "why": "Kali、host:dev-168、host:dev-111的 範圍、maintenance window、憑證 handling或回復 負責人不完整。", + "why": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling或回復 負責人不完整。", "next": "等待主機 負責人 以 僅中繼資料形式補齊窗口與回復邊界。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -14093,7 +14093,7 @@ }, "hostWindow": { "title": "主機窗口補齊", - "owner": "Kali、host:dev-168、host:dev-111 對應主機 負責人。", + "owner": "Kali、host:dev-b、host:dev-a 對應主機 負責人。", "required": "範圍、maintenance window、憑證 handling、回復 負責人與驗證指標。", "handoff": "只回收 僅中繼資料host safety window,不建立 live action。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" @@ -14168,7 +14168,7 @@ }, "hostReady": { "title": "主機重試門檻", - "ready": "Kali、host:dev-168、host:dev-111的 範圍、maintenance window、憑證 handling與回復 負責人 均以中繼資料 呈現。", + "ready": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling與回復 負責人 均以中繼資料 呈現。", "retry": "只可標示 host safety window 重試候選,等待人工再檢。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -14234,7 +14234,7 @@ }, "hostWindowPause": { "title": "主機安全暫停", - "decision": "Kali、host:dev-168、host:dev-111的 範圍、maintenance window、憑證 handling或回復 負責人仍不完整。", + "decision": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling或回復 負責人仍不完整。", "next": "等待主機 負責人 補 僅中繼資料host safety window,再回到重試門檻。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -14318,7 +14318,7 @@ }, "hostSafetyWindow": { "title": "主機安全窗口包", - "required": "Kali、host:dev-168、host:dev-111的 範圍、maintenance window、憑證 handling、回復 負責人與驗證指標。", + "required": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling、回復 負責人與驗證指標。", "handoff": "只交接 僅中繼資料host safety window,不建立 live action。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -14402,7 +14402,7 @@ }, "hostSafetyWindow": { "title": "主機安全窗口預檢", - "requirement": "Kali、host:dev-168、host:dev-111的 範圍、maintenance window、憑證 handling、回復 負責人與驗證指標都以中繼資料 呈現。", + "requirement": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling、回復 負責人與驗證指標都以中繼資料 呈現。", "pass": "只可標示 host safety window readable,不建立 live action。", "fail": "缺窗口、憑證邊界或回復 負責人 時維持主機暫停。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" @@ -14567,7 +14567,7 @@ }, "hostWindowEvidence": { "title": "主機窗口補證回收", - "owner": "主機維運 負責人 補 Kali、host:dev-168、host:dev-111的窗口與回復責任。", + "owner": "主機維運 負責人 補 Kali、host:dev-b、host:dev-a的窗口與回復責任。", "required": "範圍、maintenance window、憑證 handling、回復 負責人、驗證指標與不執行聲明。", "recovery": "只收 僅中繼資料host window,等待主機安全窗口預檢。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" @@ -14648,7 +14648,7 @@ }, "hostWindowGate": { "title": "主機窗口重試門檻", - "ready": "Kali、host:dev-168、host:dev-111的 範圍、maintenance window、憑證 handling、回復 負責人、驗證指標與不執行聲明都補齊。", + "ready": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling、回復 負責人、驗證指標與不執行聲明都補齊。", "retry": "只以 僅中繼資料host window 回到主機安全窗口預檢。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -14744,8 +14744,8 @@ }, "hosts": { "title": "主機與工具", - "state": "112 / 111 / 168", - "detail": "Kali host:kali-112與兩台開發主機已納入視野;監控、MCP、Ansible、KM與版本來源也在同一條證據鏈。", + "state": "host:kali-readonly / host:dev-a / host:dev-b", + "detail": "Kali host:kali-readonly與兩台開發主機已納入視野;監控、MCP、Ansible、KM與版本來源也在同一條證據鏈。", "evidence": "主機與工具證據鏈已前台化。", "next": "補維護窗口、host 負責人決策、脫敏主機 證據。", "locked": "不 SSH 變更、不更新主機、不執行 Kali /execute。" @@ -15218,11 +15218,11 @@ "guard": "不呼叫 Gitea admin API、不使用 權杖、不把 endpoint 身分當 inventory 完成。" }, "adjacentSourceResponse": { - "title": "110 adjacent 來源 範圍 回覆", + "title": "gateway-adjacent 來源 範圍 回覆", "body": "請 負責人 判定 `bitan-pharmacy`、`root/momo-pro-system`、`tsenyang-website`、`wooo/wooo-infra-config` 是否納入目前階段 範圍。", "requiredFields": "負責人角色 / 團隊、per-來源 決策、判定理由、affected 來源、redacted 證據參照、後續追蹤 負責人。", "acceptance": "逐項標示 in 範圍、out of 範圍、legacy、external、inaccessible或needs more 證據,並保留脫敏 追蹤。", - "guard": "不讀取私有 專案庫 內容、不匯入 archive、不把 110 adjacent 來源 自動納入 migration。" + "guard": "不讀取私有 專案庫 內容、不匯入 archive、不把 gateway-adjacent 來源 自動納入 migration。" }, "canonicalOwnerResponse": { "title": "Repo 負責人 / 權威 範圍 回覆", @@ -15511,7 +15511,7 @@ "items": { "knownAttestationItem": { "title": "對應 S4.7 已知 項目", - "body": "負責人回覆 必須明確對應 僅公開 / local 缺口、組織 / 使用者端點、110 adjacent 來源、權威負責人或legacy disposition 其中之一。", + "body": "負責人回覆 必須明確對應 僅公開 / local 缺口、組織 / 使用者端點、gateway-adjacent 來源、權威負責人或legacy disposition 其中之一。", "failure": "不明確時只能 請求 負責人 correction,不能進 已接受。", "guard": "不把模糊回覆當作 coverage聲明,也不自動補成某個 項目。" }, @@ -15595,7 +15595,7 @@ "fastProgress": { "eyebrow": "快速進度回報", "title": "目前做了什麼,一眼看懂", - "subtitle": "此區僅放高層第一屏摘要:哪些已經前台可見、Kali 112 是否納管、所有產品是否套用、以及哪些執行動作仍未批准。詳細證據保留在下方區塊。", + "subtitle": "此區僅放高層第一屏摘要:哪些已經前台可見、Kali host:kali-readonly 是否納管、所有產品是否套用、以及哪些執行動作仍未批准。詳細證據保留在下方區塊。", "nextGate": { "title": "下一個可推動進度的 閘門", "body": "先收到並驗收 S4.9 Gitea 清冊負責人回覆。這件事完成前,64%不應假性前進;完成後才檢查是否能打開審查者 / 執行期的下一段人工流程。" @@ -15606,7 +15606,7 @@ "body": "IwoooS 已串起安全合規、告警、授權、治理、錯誤追蹤、操作日誌與程式碼審查,讓資安工作改以藏在文件。" }, "kali112": { - "title": "Kali 112 已納入資安網", + "title": "Kali host:kali-readonly 已納入資安網", "body": "2026-06-04 08:55 已用既有 SSH key 完成只讀快照:系統 Kali Rolling、核心 6.16.8、根目錄磁碟使用 26%、掃描服務 8080 /health 健康、待更新套件 1994、失敗服務單元 networking.service、服務硬化 0/4。沒有啟動掃描、/execute、主機更新、調校或重啟。" }, "allProducts": { @@ -15803,7 +15803,7 @@ "items": { "dockerSystemd": { "title": "Docker / systemd 主機服務", - "body": "repo-only 清冊已納入 9 個 surface;下一步仍需 110 / 188 live hash、restart window、rollback owner 與 post-check 指標。" + "body": "repo-only 清冊已納入 9 個 surface;下一步仍需 gateway / observability live hash、restart window、rollback owner 與 post-check 指標。" }, "sshNetwork": { "title": "SSH / network / firewall", diff --git a/apps/web/messages/zh-TW.json b/apps/web/messages/zh-TW.json index e85dacb91..b8fd9219f 100644 --- a/apps/web/messages/zh-TW.json +++ b/apps/web/messages/zh-TW.json @@ -130,7 +130,7 @@ }, "topology": { "hosts": "主機層", - "hostsDetail": "110 / 111 / 112 / 120 / 121 / 188 等主機進入佈局視野。", + "hostsDetail": "host:public-gateway / host:dev-a / host:kali-readonly / host:k3s-control-a / host:k3s-control-b / host:observability-a 等主機進入佈局視野。", "products": "專案與網站", "productsDetail": "前台、後台與相鄰專案使用同一組治理視角。", "services": "服務健康", @@ -509,17 +509,17 @@ "aiModelHealth": { "cooldown": "冷卻", "cooldownSeconds": "冷卻 {seconds}s", - "localProxy": "111 proxy", + "localProxy": "local-fallback proxy", "timeout": "逾時", "network": "網路不可達", "refused": "拒絕" }, "aiModelSummary": { "healthyTitle": "目前由 {provider} 承接", - "healthyDetail": "路由順序維持 GCP-A → GCP-B → 111 → Gemini;Gemini只在三層 Ollama都不可用後接手。", - "localFallbackDownTitle": "目前由 {provider} 承接;111 備援不可達", - "localFallbackDownDetail": "GCP-A/GCP-B仍可服務。下一步是修復 111 主機或LAN,不需要改路由或直接切 Gemini。", - "localFallbackCooldownDetail": "111 備援剛失敗,正在短暫冷卻;GCP-A/GCP-B仍可服務,先修復 111 主機或LAN。", + "healthyDetail": "路由順序維持 GCP-A → GCP-B → local-fallback → Gemini;Gemini只在三層 Ollama都不可用後接手。", + "localFallbackDownTitle": "目前由 {provider} 承接;local-fallback 備援不可達", + "localFallbackDownDetail": "GCP-A/GCP-B仍可服務。下一步是修復 local-fallback host或LAN,不需要改路由或直接切 Gemini。", + "localFallbackCooldownDetail": "local-fallback 備援剛失敗,正在短暫冷卻;GCP-A/GCP-B仍可服務,先修復 local-fallback host或LAN。", "degradedTitle": "Ollama lane 已降級至 {provider}", "degradedDetail": "系統已依序嘗試可用節點;請檢查被跳過的 provider與最近修復證據。", "downTitle": "三層 Ollama 目前不可用", @@ -627,7 +627,7 @@ }, "routing": { "module": "AI Router / Agent 分工", - "owns": "GCP-A、GCP-B、111、Gemini fallback與Hermes/OpenClaw/ElephantAlpha 分工" + "owns": "GCP-A、GCP-B、host:dev-a、Gemini fallback與Hermes/OpenClaw/ElephantAlpha 分工" }, "execution": { "module": "PlayBook / MCP / Ansible", @@ -691,7 +691,7 @@ }, "aiRoute": { "title": "AI Provider lane可視化", - "detail": "目前 lane={lane},selected provider={provider};順序以 GCP-A / GCP-B / 111 / Gemini 為治理方向。" + "detail": "目前 lane={lane},selected provider={provider};順序以 GCP-A / GCP-B / local-fallback / Gemini 為治理方向。" } }, "remaining": { @@ -863,7 +863,7 @@ "ai": { "owner": "OpenClaw 主判斷;Hermes 產 KM 草稿", "evidence": "AI route status / selected provider / skipped lanes", - "nextAction": "維持 GCP-A → GCP-B → 111 → Gemini fallback 順序並記錄 lane" + "nextAction": "維持 GCP-A → GCP-B → local-fallback → Gemini fallback 順序並記錄 lane" }, "mcp": { "owner": "MCP 閘道", @@ -2375,8 +2375,8 @@ "checkC1Desc": "repair_lock 防止重複執行", "checkC2Label": "反饋閉環 (Success Rate)", "checkC2Desc": "Success Rate Update → RAG 信心自更新", - "checkC3Label": "執行路徑明確化 (.188)", - "checkC3Desc": "ansible:// 強制路由至 .188 控制節點", + "checkC3Label": "執行路徑明確化 (host:observability-a)", + "checkC3Desc": "ansible:// 強制路由至 host:observability-a 控制節點", "agentRoleOC": "診斷 & RAG 匹配", "agentRoleNemo": "決策 & 執行下令", "todayMatches": "本日匹配", @@ -3775,7 +3775,7 @@ }, "map": { "ollama": "Ollama 三層", - "ollamaDetail": "GCP-A → GCP-B → 111,Gemini 僅在三層失敗後備援。", + "ollamaDetail": "GCP-A → GCP-B → local-fallback,Gemini 僅在三層失敗後備援。", "candidate": "候選狀態", "candidateDetail": "Nemotron 仍被 replay / smoke gate 阻擋。", "cost": "費用邊界", @@ -3811,7 +3811,7 @@ "ollama": "Ollama", "ollama_gcp_a": "Ollama GCP-A", "ollama_gcp_b": "Ollama GCP-B", - "ollama_local": "Ollama 111", + "ollama_local": "Ollama local-fallback", "nemotron": "Nemotron", "gemini": "Gemini", "claude": "Claude", @@ -4918,7 +4918,7 @@ "live": "已接線", "mirror": "Mirror", "providerName": "Provider 順序", - "providerDetail": "GCP-A Ollama -> GCP-B Ollama -> 111 Ollama -> OpenClaw/Nemo -> Gemini", + "providerDetail": "GCP-A Ollama -> GCP-B Ollama -> local-fallback Ollama -> OpenClaw/Nemo -> Gemini", "mcpName": "MCP 閘道", "mcpDetail": "MCP 閘道 先 mirror / wrap,確認 audit與redaction 後才切成唯一閘門", "channelName": "Channel Hub", @@ -5058,7 +5058,7 @@ "packets": { "giteaInventory": { "title": "Gitea 清冊負責人聲明", - "detail": "先收公開範圍 / 本地缺口、組織 / 使用者端點、110 相鄰範圍、標準負責人與舊版處置五題。" + "detail": "先收公開範圍 / 本地缺口、組織 / 使用者端點、gateway-adjacent範圍、標準負責人與舊版處置五題。" }, "githubTarget": { "title": "GitHub 目標負責人判定", @@ -6470,7 +6470,7 @@ }, "aiRouteStatus": { "title": "AI Provider路由", - "subtitle": "目前策略與健康檢查,顯示 GCP-A、GCP-B、111、Gemini的接手順序", + "subtitle": "目前策略與健康檢查,顯示 GCP-A、GCP-B、host:dev-a、Gemini的接手順序", "selected": "使用中:{provider}", "selectedEmpty": "使用中:--", "empty": "尚未取得 AI provider route 狀態。", @@ -6504,7 +6504,7 @@ "roles": { "primary": "第一順位", "secondary": "第二順位", - "local_fallback": "111 本機備援", + "local_fallback": "local-fallback 本機備援", "final_fallback": "Gemini 最終備援", "ollama": "Ollama 節點" }, @@ -6557,7 +6557,7 @@ "gcloud_projects_get_iam_policy_missing": "缺 GCP IAM 讀取權限", "gcp_a_ssh_refused": "GCP-A SSH 拒絕連線", "gcp_a_ollama_11434_refused": "GCP-A Ollama 11434 拒絕", - "proxy_110_11435_http_502": "110 proxy 11435 回 502", + "proxy_110_11435_http_502": "provider proxy 11435 回 502", "unknown": "{blocker}" }, "probes": { @@ -6566,9 +6566,9 @@ "gcp_a_direct_22": "GCP-A SSH 22", "gcp_a_direct_11434": "GCP-A 11434", "gcp_b_direct_11434": "GCP-B 11434", - "proxy_110_11435": "110 proxy 11435", - "proxy_110_11436": "110 proxy 11436", - "proxy_110_11437": "110 proxy 11437", + "proxy_110_11435": "provider proxy 11435", + "proxy_110_11436": "provider proxy 11436", + "proxy_110_11437": "provider proxy 11437", "unknown": "{probe}" } } @@ -6719,7 +6719,7 @@ "securityEntry": "資安入口", "securityEntryDetail": "IwoooS仍是資訊安全的只讀入口與態勢鏡像。", "hostCoverage": "主機覆蓋", - "hostCoverageDetail": "Kali 112、開發主機 168、開發主機 111 已納入只觀察視野。", + "hostCoverageDetail": "Kali host:kali-readonly、開發主機 host:dev-b、開發主機 host:dev-a 已納入只觀察視野。", "policyMutations": "租戶政策變更", "policyMutationsDetail": "目前為 0;負責人回覆與執行期閘門前不得改政策。" }, @@ -7202,12 +7202,12 @@ "activeRuntimeGates": "主動執行閘門", "activeRuntimeGatesDetail": "任何執行期閘門仍需獨立批准、回復方案與事後檢查證據。", "headline": "整體資安網", - "headlineDetail": "已因 AwoooP 正式只讀落地證據與Kali 112 今日只讀驗證重估到 64%;下一次仍要靠負責人回覆、執行期閘門或GitHub 主要來源證據。" + "headlineDetail": "已因 AwoooP 正式只讀落地證據與Kali host:kali-readonly 今日只讀驗證重估到 64%;下一次仍要靠負責人回覆、執行期閘門或GitHub 主要來源證據。" }, "checks": { "s49OwnerAttestation": { "title": "S4.9 Gitea 負責人證明", - "detail": "下一個建議先收;需要回覆公開來源限定 / 本地差異、組織 / 使用者端點、110 鄰近來源、標準負責人與舊版處置。" + "detail": "下一個建議先收;需要回覆公開來源限定 / 本地差異、組織 / 使用者端點、gateway-adjacent來源、標準負責人與舊版處置。" }, "s410GithubTarget": { "title": "S4.10 GitHub 目標負責人", @@ -7247,7 +7247,7 @@ "responseLanes": { "giteaOwnerAttestation": { "title": "Gitea 清冊負責人證明", - "detail": "先確認公開來源限定 / 本地差異、組織 / 使用者端點、110 鄰近來源、標準負責人與舊版處置。" + "detail": "先確認公開來源限定 / 本地差異、組織 / 使用者端點、gateway-adjacent來源、標準負責人與舊版處置。" }, "githubTargetOwner": { "title": "GitHub 目標負責人決策", @@ -8114,7 +8114,7 @@ }, "assetMesh": { "title": "資產與主機已納管", - "body": "9 類產品 / 網站 / 工具面與112、111、168 三台主機已放入同一個只讀資安網。" + "body": "9 類產品 / 網站 / 工具面與host:kali-readonly、host:dev-a、host:dev-b 三台主機已放入同一個只讀資安網。" }, "nextBlocker": { "title": "待補關鍵證據", @@ -8170,7 +8170,7 @@ "hostTools": { "label": "主機工具", "title": "Kali與工具鏈", - "body": "看 112 / 111 / 168與監控、MCP、Ansible、KM的只讀鏈路。" + "body": "看 host:kali-readonly / host:dev-a / host:dev-b與監控、MCP、Ansible、KM的只讀鏈路。" }, "sourceControl": { "label": "版本來源", @@ -8270,7 +8270,7 @@ "body": "確認 Gitea 內 wooo 應以 使用者、組織或雙軌盤點,避免 負責人 判定漂移。" }, "adjacentScope": { - "title": "110 鄰近來源範圍", + "title": "gateway-adjacent來源範圍", "body": "逐項判定 bitan-pharmacy、momo-pro-system、tsenyang-website、wooo-infra-config 是否納入。" }, "canonicalOwner": { @@ -8430,7 +8430,7 @@ "body": "等待負責人判定 Gitea `wooo` 應以使用者、組織或雙軌方式盤點。" }, "adjacentScope": { - "title": "D3 110 鄰近來源回覆", + "title": "D3 gateway-adjacent來源回覆", "body": "等待負責人逐項判定 bitan-pharmacy、momo-pro-system、tsenyang-website與基礎設施設定來源。" }, "canonicalOwner": { @@ -8470,7 +8470,7 @@ }, "hosts": { "title": "Kali與開發主機", - "body": "112、111、168只呈現觀測與證據窗口,不直接連線執行。" + "body": "host:kali-readonly、host:dev-a、host:dev-b只呈現觀測與證據窗口,不直接連線執行。" }, "sourceControl": { "title": "GitHub / Gitea", @@ -8522,14 +8522,14 @@ }, "sourceToHost": { "title": "版本來源到主機", - "evidence": "GitHub / Gitea、Kali、111 / 168 已串成只讀路徑。", + "evidence": "GitHub / Gitea、Kali、host:dev-a / host:dev-b 已串成只讀路徑。", "risk": "主機窗口與版本來源決策尚未完成。", "next": "收斂負責人窗口與決策紀錄。", "locked": "不改分支參照、工作流程或主機設定。" }, "kaliToDev": { "title": "Kali 到開發主機", - "evidence": "112、111、168 已可在同一路徑中理解。", + "evidence": "host:kali-readonly、host:dev-a、host:dev-b 已可在同一路徑中理解。", "risk": "未批准前不能把關係圖當掃描範圍。", "next": "等待掃描範圍與維護窗口批准。", "locked": "scan_authorized=false。" @@ -8602,10 +8602,10 @@ "body": "GitHub / Gitea 是版本來源關鍵節點;目前只顯示 S4.9 負責人回覆待補與決策紀錄缺口,不執行分支參照或工作流程變更。" }, "kali": { - "body": "Kali host:kali-112 已列為資安主機節點;此區僅呈現它與版本來源、開發主機、證據鏈的關係,不代表已授權掃描。" + "body": "Kali host:kali-readonly 已列為資安主機節點;此區僅呈現它與版本來源、開發主機、證據鏈的關係,不代表已授權掃描。" }, "devHosts": { - "body": "host:dev-111與host:dev-168 以開發主機群呈現,等主機維護窗口與負責人決策紀錄完整後才能進入執行期。" + "body": "host:dev-a與host:dev-b 以開發主機群呈現,等主機維護窗口與負責人決策紀錄完整後才能進入執行期。" }, "monitoring": { "body": "監控、MCP、Ansible、KM與告警資料先進入證據線,讓 IwoooS 能解釋訊號來源與新鮮度。" @@ -8629,8 +8629,8 @@ }, "topology": { "title": "主機拓樸", - "mapTitle": "112 / 111 / 168只讀觀測主機網", - "detail": "將 Kali 112、開發主機 111 / 168、監控工具與AwoooP 真相鏈整合為單一拓樸視角。", + "mapTitle": "host:kali-readonly / host:dev-a / host:dev-b只讀觀測主機網", + "detail": "將 Kali host:kali-readonly、開發主機 host:dev-a / host:dev-b、監控工具與AwoooP 真相鏈整合為單一拓樸視角。", "evidence": "目前只呈現觀測窗口、證據位置與人工閘門,沒有執行 SSH、掃描或主機設定變更。", "next": "等執行期閘門與掃描範圍批准後,才把只讀證據轉入受控探測。", "locked": "host_change_authorized=false,scan_authorized=false。" @@ -8660,7 +8660,7 @@ "title": "版本來源" }, "kali": { - "title": "Kali 112" + "title": "Kali host:kali-readonly" }, "devHosts": { "title": "開發主機" @@ -8686,7 +8686,7 @@ }, "hostFabric": { "title": "主機拓樸面", - "body": "112、111、168 維持只讀觀測顯示。" + "body": "host:kali-readonly、host:dev-a、host:dev-b 維持只讀觀測顯示。" }, "evidenceOps": { "title": "證據營運面", @@ -8758,9 +8758,9 @@ }, "hostWindow": { "short": "主機窗口", - "title": "Kali 112與開發主機 111 / 168的維護窗口", + "title": "Kali host:kali-readonly與開發主機 host:dev-a / host:dev-b的維護窗口", "body": "三台主機已進入資安架構圖,但目前是只讀納管,不代表已允許更新、調校、掃描或SSH 操作。", - "evidence": "112 / 111 / 168 在拓樸圖、路徑探索器與主機證據鏈中可見。", + "evidence": "host:kali-readonly / host:dev-a / host:dev-b 在拓樸圖、路徑探索器與主機證據鏈中可見。", "next": "等待維護窗口、範圍、負責人與回復路徑確認。", "blocked": "host_change_authorized=false;scan_authorized=false。" }, @@ -8799,11 +8799,11 @@ "body": "先列入只讀驗證與控管範圍,不啟用 agent 執行、claim、submit 或 bounty 撥付。" }, "kali": { - "title": "Kali host:kali-112", + "title": "Kali host:kali-readonly", "body": "列入資安主機,但目前只讀顯示。" }, "devHosts": { - "title": "開發主機 111 / 168", + "title": "開發主機 host:dev-a / host:dev-b", "body": "等待維護窗口與負責人決策。" }, "monitoring": { @@ -8905,12 +8905,12 @@ "caption": "新專案只讀納管" }, "kali112": { - "title": "Kali 112", + "title": "Kali host:kali-readonly", "caption": "只讀快照已接入" }, "devHosts": { "title": "開發主機", - "caption": "168 / 111 納入視野" + "caption": "host:dev-b / host:dev-a 納入視野" }, "githubPrimary": { "title": "GitHub 主來源", @@ -8945,7 +8945,7 @@ "drilldown": { "title": "展開證據 / 主機 / 動作下鑽", "evidence": "證據:快照、守門、LOGBOOK、審批佇列保留在下方可展開區。", - "hosts": "主機:Kali 112、開發主機 168 / 111都以只讀納管,不直接 SSH或掃描。", + "hosts": "主機:Kali host:kali-readonly、開發主機 host:dev-b / host:dev-a都以只讀納管,不直接 SSH或掃描。", "actions": "動作:所有高風險動作仍需人工決策,頁面不提供執行按鈕。" } }, @@ -8976,10 +8976,10 @@ }, "devHosts": { "title": "開發主機", - "state": "111 / 168" + "state": "host:dev-a / host:dev-b" }, "kali112": { - "title": "Kali 112", + "title": "Kali host:kali-readonly", "state": "待維護" }, "runtimeGate": { @@ -9028,12 +9028,12 @@ "caption": "新專案先只讀納管" }, "kali112": { - "title": "Kali 112", + "title": "Kali host:kali-readonly", "caption": "維護窗口待人工確認" }, "devHosts": { "title": "開發主機", - "caption": "111 / 168 納入範圍" + "caption": "host:dev-a / host:dev-b 納入範圍" }, "githubPrimary": { "title": "GitHub 主來源", @@ -9132,7 +9132,7 @@ }, "hostKali": { "title": "主機與Kali邊界", - "summary": "將 host:kali-112 / host:dev-111 / host:dev-168的 僅觀察、收件與人工決策證據收在進階區。" + "summary": "將 host:kali-readonly / host:dev-a / host:dev-b的 僅觀察、收件與人工決策證據收在進階區。" } }, "metrics": { @@ -9204,7 +9204,7 @@ }, "hosts": { "title": "Kali與開發主機", - "body": "host:kali-112 / host:dev-111 / host:dev-168只進 僅觀察 coverage。" + "body": "host:kali-readonly / host:dev-a / host:dev-b只進 僅觀察 coverage。" }, "toolsMonitoring": { "title": "監控、工具與自動化", @@ -9227,7 +9227,7 @@ "globalSecurityMeshMatrix": { "eyebrow": "全域資安納管矩陣", "title": "所有產品、主機、工具放在同一張表", - "subtitle": "將 AwoooI、AwoooP、IwoooS、公開網站群、VibeWork、agent-bounty-protocol、Kali 112、開發主機與GitHub / Gitea 版本來源放到同一個只讀矩陣,先呈現納管範圍,再決定哪一段要收證或開人工閘門。", + "subtitle": "將 AwoooI、AwoooP、IwoooS、公開網站群、VibeWork、agent-bounty-protocol、Kali host:kali-readonly、開發主機與GitHub / Gitea 版本來源放到同一個只讀矩陣,先呈現納管範圍,再決定哪一段要收證或開人工閘門。", "coverageLabel": "覆蓋", "evidenceLabel": "證據", "runtimeLabel": "執行", @@ -9294,7 +9294,7 @@ "next": "先完成 VibeWork 六項只讀收件。" }, "kali112": { - "title": "Kali host:kali-112", + "title": "Kali host:kali-readonly", "layer": "安全主機、掃描能力、維護窗口與主機狀態。", "coverage": "只讀快照", "evidence": "待維護窗口", @@ -9302,7 +9302,7 @@ "next": "維持觀測,不執行更新、掃描或/execute。" }, "devHosts": { - "title": "開發主機 111 / 168", + "title": "開發主機 host:dev-a / host:dev-b", "layer": "兩台開發主機的資安範圍、證據收件與人工判定。", "coverage": "已納入", "evidence": "待補主機證據", @@ -9330,7 +9330,7 @@ "hostToolEvidenceChain": { "eyebrow": "主機與工具證據鏈", "title": "Kali、開發主機、監控工具一次看清楚", - "subtitle": "將 Kali host:kali-112、開發主機 host:dev-111 / host:dev-168、Sentry / SigNoz、MCP、自建 MCP、Ansible、KM、GitHub / Gitea 放在同一條只讀證據鏈。這一層只回答「有沒有納入、證據在哪、下一關是誰」,不執行掃描或主機變更。", + "subtitle": "將 Kali host:kali-readonly、開發主機 host:dev-a / host:dev-b、Sentry / SigNoz、MCP、自建 MCP、Ansible、KM、GitHub / Gitea 放在同一條只讀證據鏈。這一層只回答「有沒有納入、證據在哪、下一關是誰」,不執行掃描或主機變更。", "flowTitle": "證據鏈順序", "evidenceLabel": "證據", "nextLabel": "下一步", @@ -9339,7 +9339,7 @@ "summary": { "hosts": { "label": "主機", - "detail": "112、111、168 三台進入視野。" + "detail": "host:kali-readonly、host:dev-a、host:dev-b 三台進入視野。" }, "toolLanes": { "label": "工具線", @@ -9378,19 +9378,19 @@ }, "items": { "kali112": { - "title": "Kali host:kali-112", + "title": "Kali host:kali-readonly", "scope": "安全主機已納入 IwoooS;目前只呈現快照、維護窗口與待處理項。", "evidence": "只讀 快照、1994 package 佇列、1 個 systemd 異常、/execute=false。", "next": "等維護窗口與人工授權,不更新、不重啟、不掃描。" }, "dev111": { - "title": "開發主機 host:dev-111", + "title": "開發主機 host:dev-a", "scope": "本機備援、開發服務與AI fallback 相關資產先納入觀測。", "evidence": "目前只收主機角色、服務範圍、負責人決策與脫敏證據。", "next": "補負責人證據;不做 SSH 變更或服務調校。" }, "dev168": { - "title": "開發主機 host:dev-168", + "title": "開發主機 host:dev-b", "scope": "開發主機與專案工作區納入資安範圍。", "evidence": "目前只收主機中繼資料、專案對應與人工判定。", "next": "補主機證據與責任邊界;不開自動修復。" @@ -9536,9 +9536,9 @@ "body": "Gitea 到 GitHub的長期方向已確認,但 參照、工作流程、機密 name與回復 ADR仍需負責人回覆。" }, "kali": { - "title": "Kali 112 網格", + "title": "Kali host:kali-readonly 網格", "state": "只觀測", - "body": "Kali 112 已在資安網範圍中,111 / 168 也納入 僅觀察。主動掃描與/execute仍維持封鎖候選。" + "body": "Kali host:kali-readonly 已在資安網範圍中,host:dev-a / host:dev-b 也納入 僅觀察。主動掃描與/execute仍維持封鎖候選。" }, "governance": { "title": "審批邊界", @@ -9740,7 +9740,7 @@ }, "kaliNotCalled": { "title": "前端索引不呼叫 Kali", - "body": "Kali 112 維持 僅觀察;任何 主動掃描或/execute都必須走人工批准與後續 閘門。" + "body": "Kali host:kali-readonly 維持 僅觀察;任何 主動掃描或/execute都必須走人工批准與後續 閘門。" } } }, @@ -9813,7 +9813,7 @@ }, "kaliScanScope": { "title": "Kali 掃描範圍", - "body": "Kali 112、111、168 目前仍是僅觀察;主動掃描與/execute仍需獨立批准。", + "body": "Kali host:kali-readonly、host:dev-a、host:dev-b 目前仍是僅觀察;主動掃描與/execute仍需獨立批准。", "unlock": "掃描範圍批准 + 後續追蹤 閘門" }, "followupRuntimeGate": { @@ -9830,29 +9830,29 @@ "items": { "kali112": { "title": "Kali 資安主機", - "body": "host:kali-112 是資安網的 Kali 節點,已在姿態與證據參照中作為僅觀察整合面。", + "body": "host:kali-readonly 是資安網的 Kali 節點,已在姿態與證據參照中作為僅觀察整合面。", "state": "已納入視野;主動掃描、/execute、主機更新仍需獨立批准" }, "dev168": { - "title": "開發主機 168", - "body": "host:dev-168 納入 IwoooS的僅觀察開發主機覆蓋,用於後續掃描範圍批准與發現關聯。", + "title": "開發主機 host:dev-b", + "body": "host:dev-b 納入 IwoooS的僅觀察開發主機覆蓋,用於後續掃描範圍批准與發現關聯。", "state": "範圍已宣告;尚未批准憑證掃描或執行期控制" }, "dev111": { - "title": "開發主機 111", - "body": "host:dev-111 納入 IwoooS的僅觀察開發主機覆蓋,與168 一起維持低摩擦分階段收斂。", + "title": "開發主機 host:dev-a", + "body": "host:dev-a 納入 IwoooS的僅觀察開發主機覆蓋,與 host:dev-b 一起維持低摩擦分階段收斂。", "state": "範圍已宣告;尚未批准憑證掃描或執行期控制" } } }, "kaliMaintenanceReadiness": { - "eyebrow": "Kali 112 維護就緒度", - "title": "Kali 112 今天已重新只讀驗證,更新與重啟仍在維護閘門", + "eyebrow": "Kali host:kali-readonly 維護就緒度", + "title": "Kali host:kali-readonly 今天已重新只讀驗證,更新與重啟仍在維護閘門", "subtitle": "這個看板把 2026-06-04 08:55的只讀 SSH 快照轉成操作可讀狀態:掃描服務與8080 /health 健康檢查正常,node-exporter與wg-easy仍在運作;但完整套件升級、自動移除、重啟、掃描、/execute與服務硬化套用都還沒有批准。", "maintenanceGateLabel": "維護 閘門", "maintenanceGate": "Kali 完整套件升級、自動移除與重啟仍在資安審批佇列等待批准。必須先有維護窗口、快照、回復方案、事後健康複驗與人工批准,才能往主機更新前進。", "nextEvidenceLabel": "下一份要補的證據", - "nextEvidence": "將 Kali 112 維護窗口批准案的維護窗口、回復負責人、服務驗證清單與失敗處理路徑補齊。補齊前 IwoooS只顯示就緒度,不提供任何更新或重啟入口。", + "nextEvidence": "將 Kali host:kali-readonly 維護窗口批准案的維護窗口、回復負責人、服務驗證清單與失敗處理路徑補齊。補齊前 IwoooS只顯示就緒度,不提供任何更新或重啟入口。", "runwayLabel": "維護闖關路徑", "boundaryTitle": "只讀邊界", "boundaryIntro": "以下邊界由 `kali-integration-status.快照.json`與審批佇列投影而來,用來避免把可見狀態誤讀成執行授權。", @@ -9912,7 +9912,7 @@ "items": { "activeScan": { "title": "主動掃描", - "body": "對 Kali 112、開發主機 168 / 111的主動掃描仍未批准,不能由 IwoooS 直接觸發。", + "body": "對 Kali host:kali-readonly、開發主機 host:dev-b / host:dev-a的主動掃描仍未批准,不能由 IwoooS 直接觸發。", "gate": "需要 S1.6 掃描範圍批准與後續 執行期閘門" }, "credentialedScan": { @@ -9949,7 +9949,7 @@ "items": { "scopeBoundary": { "title": "範圍邊界", - "body": "確認 112、168、111的允許目標、排除範圍、掃描深度與速率限制。", + "body": "確認 host:kali-readonly、host:dev-b、host:dev-a的允許目標、排除範圍、掃描深度與速率限制。", "evidence": "需要脫敏 掃描範圍批准;已收到=0、已接受=0" }, "ownerDecision": { @@ -11334,7 +11334,7 @@ }, "progressHoldMovementGates": { "title": "為什麼現在是 64%", - "subtitle": "AwoooP 正式只讀落地 先把重點從 58% 推到 61%;Kali 112 今日正式只讀驗證後,目前保守重估到 64%。其餘四個高層閘門仍是 0 / false,框架、文件與前端可見性不會被灌水成 執行期 執行。", + "subtitle": "AwoooP 正式只讀落地 先把重點從 58% 推到 61%;Kali host:kali-readonly 今日正式只讀驗證後,目前保守重估到 64%。其餘四個高層閘門仍是 0 / false,框架、文件與前端可見性不會被灌水成 執行期 執行。", "gateLabel": "移動門檻", "moveLabel": "什麼時候會動", "guardLabel": "不灌水原則", @@ -11373,7 +11373,7 @@ }, "headlineMovementAcceptanceGate": { "title": "64% 重估驗收紀錄", - "subtitle": "六個高層閘門 中,AwoooP 正式環境落地與Kali 112 今日只讀證據 已有正式部署與只讀消費證據,因此本次承認兩項證據,重點目前保守重估到 64%;其餘 負責人回覆、脫敏匯入、執行期閘門與GitHub 主要來源仍是 0 / false。", + "subtitle": "六個高層閘門 中,AwoooP 正式環境落地與Kali host:kali-readonly 今日只讀證據 已有正式部署與只讀消費證據,因此本次承認兩項證據,重點目前保守重估到 64%;其餘 負責人回覆、脫敏匯入、執行期閘門與GitHub 主要來源仍是 0 / false。", "gateLabel": "重估 閘門", "acceptanceLabel": "驗收條件", "guardLabel": "仍禁止", @@ -11381,7 +11381,7 @@ "summary": { "headline": { "label": "目前 重點", - "detail": "已從 58% 到 61%,並因 Kali 112 今日只讀證據重估到 64%,不把框架層堆疊灌水成落地執行。" + "detail": "已從 58% 到 61%,並因 Kali host:kali-readonly 今日只讀證據重估到 64%,不把框架層堆疊灌水成落地執行。" }, "signals": { "label": "移動訊號", @@ -11399,7 +11399,7 @@ "items": { "s49OwnerResponseAccepted": { "title": "S4.9 負責人回覆驗收", - "body": "下一個真正會推動 64%的 P0 是 Gitea 負責人聲明:僅公開 / local 缺口、組織 / 使用者端點、110 adjacent 範圍、專案庫 負責人 權威 範圍、legacy / inaccessible disposition 五項要收到脫敏證據。", + "body": "下一個真正會推動 64%的 P0 是 Gitea 負責人聲明:僅公開 / local 缺口、組織 / 使用者端點、gateway-adjacent 範圍、專案庫 負責人 權威 範圍、legacy / inaccessible disposition 五項要收到脫敏證據。", "acceptance": "五項都通過 預檢與S4.13 驗證 rollup,才可記錄 負責人_response_已接受_count > 0。", "guard": "不代填、不催收、不標記 已收到 / 已接受、不建立審批紀錄。" }, @@ -11428,14 +11428,14 @@ "guard": "只讀落地不是 批准、操作按鈕、執行路由或阻擋控制。" }, "kali112ReadOnlyProof": { - "title": "Kali 112 今日只讀證據", - "body": "2026-06-04 08:55 已完成 Kali 112 SSH只讀快照、掃描ner 8080 /health、待更新套件 1994、networking.service與服務硬化 0/4的正式站可見證據。", + "title": "Kali host:kali-readonly 今日只讀證據", + "body": "2026-06-04 08:55 已完成 Kali host:kali-readonly SSH只讀快照、掃描ner 8080 /health、待更新套件 1994、networking.service與服務硬化 0/4的正式站可見證據。", "acceptance": "已有 Gitea CD run 3623、正式站 desktop / mobile 驗證與維護闖關路徑;runtime_execution_authorized=false。", "guard": "只讀證據不是 主動掃描、/execute、SSH 變更、更新、重啟或服務硬化授權。" }, "nextHeadlineReviewRecord": { "title": "本次 重點審查 紀錄", - "body": "本次重估只引用 AwoooP 正式只讀落地與Kali 112 今日只讀證據,說明為何目前調整到 64%。", + "body": "本次重估只引用 AwoooP 正式只讀落地與Kali host:kali-readonly 今日只讀證據,說明為何目前調整到 64%。", "acceptance": "審查 紀錄 必須引用具體 證據參照、守門 output、風險邊界與禁止動作清單;本次仍鎖 執行期。", "guard": "不因為新增看板、文件或清單就調整 重點。" } @@ -12994,7 +12994,7 @@ "items": { "giteaOwnerAttestation": { "title": "S4.9 Gitea 負責人聲明 先收", - "body": "先確認 Gitea 覆蓋範圍、僅公開 / local 缺口、組織 / 使用者端點、110 adjacent 來源、權威負責人與legacy disposition。", + "body": "先確認 Gitea 覆蓋範圍、僅公開 / local 缺口、組織 / 使用者端點、gateway-adjacent 來源、權威負責人與legacy disposition。", "next": "需要 負責人 依 GITEA-INVENTORY-OWNER-ATTESTATION-RESPONSE 回覆 5 個脫敏證據參照。", "guard": "已收到=0;已接受=0;不保存 權杖 value、不寫 Gitea、不 同步 參照、不切 主要來源。" }, @@ -13038,10 +13038,10 @@ "guard": "不呼叫 admin API、不使用 權杖、不把 endpoint 判定當成 inventory 完成。" }, "internal110AdjacentScope": { - "title": "110 adjacent 來源 範圍", + "title": "gateway-adjacent 來源 範圍", "body": "判定 `bitan-pharmacy`、`root/momo-pro-system`、`tsenyang-website`、`wooo/wooo-infra-config` 是否納入目前階段 範圍。", "ownerAction": "逐項標示 in 範圍 / out of 範圍 / legacy / external / inaccessible,並補脫敏來源證據。", - "guard": "不讀取私有 專案庫 內容、不匯入 archive、不把 110 adjacent 來源 自動納入 migration。" + "guard": "不讀取私有 專案庫 內容、不匯入 archive、不把 gateway-adjacent 來源 自動納入 migration。" }, "repoOwnerCanonicalScope": { "title": "Repo 負責人 / 權威 / GitHub 目標", @@ -13293,13 +13293,13 @@ }, "progressMovementSignals": { "title": "64% 進度移動訊號驗收條", - "subtitle": "將真正會讓整體資安網 重點 往前的訊號拉到 IwoooS:AwoooP 落地證據已驗證為 1,讓整體先從 58% 重估到 61%,Kali 112 今日只讀驗證再把目前進度重估到 64%;負責人回覆、脫敏證據匯入、執行期閘門與GitHub 主要來源仍是 0或false。", + "subtitle": "將真正會讓整體資安網 重點 往前的訊號拉到 IwoooS:AwoooP 落地證據已驗證為 1,讓整體先從 58% 重估到 61%,Kali host:kali-readonly 今日只讀驗證再把目前進度重估到 64%;負責人回覆、脫敏證據匯入、執行期閘門與GitHub 主要來源仍是 0或false。", "boundaryTitle": "進度移動驗收邊界", "boundaryIntro": "以下鍵值固定:這是 重點 移動條件的只讀驗收條,不是進度灌水、批准、掃描、修復、部署、主機變更或版本來源操作入口。", "summary": { "headline": { "label": "目前進度", - "detail": "已依正式只讀落地與Kali 112 今日只讀證據重估到 64%,不把框架細節灌水。" + "detail": "已依正式只讀落地與Kali host:kali-readonly 今日只讀證據重估到 64%,不把框架細節灌水。" }, "signals": { "label": "移動訊號", @@ -13307,7 +13307,7 @@ }, "passed": { "label": "已通過", - "detail": "目前 2,AwoooP 正式只讀落地與Kali 112 今日只讀證據已成立。" + "detail": "目前 2,AwoooP 正式只讀落地與Kali host:kali-readonly 今日只讀證據已成立。" }, "runtime": { "label": "執行期閘門", @@ -13336,8 +13336,8 @@ "body": "AwoooP 需能只讀消費 快照、守門與證據參照,且不新增執行按鈕。" }, "kali112ReadOnly": { - "title": "Kali 112只讀證據", - "body": "Kali 112 已完成 2026-06-04 SSH只讀快照與掃描ner 8080 /health 驗證;這只代表納管可見,不代表掃描、更新、重啟或服務硬化授權。" + "title": "Kali host:kali-readonly只讀證據", + "body": "Kali host:kali-readonly 已完成 2026-06-04 SSH只讀快照與掃描ner 8080 /health 驗證;這只代表納管可見,不代表掃描、更新、重啟或服務硬化授權。" } } }, @@ -13373,7 +13373,7 @@ }, "hostScopeInventory": { "title": "主機與範圍盤點框架", - "body": "已把 Kali host:kali-112、開發主機 host:dev-168、host:dev-111 放入主機覆蓋、動作閘門與證據就緒度。", + "body": "已把 Kali host:kali-readonly、開發主機 host:dev-b、host:dev-a 放入主機覆蓋、動作閘門與證據就緒度。", "evidence": "具體產出:看得到主機納管範圍與禁止動作;尚未 SSH、更新主機、掃描或變更設定。" }, "sourceControlMigration": { @@ -13434,7 +13434,7 @@ }, "hostScopeEvidence": { "title": "主機範圍與證據欄位", - "delivered": "已把 Kali host:kali-112、開發主機 host:dev-168、host:dev-111 納入只讀 host coverage與action 閘門。", + "delivered": "已把 Kali host:kali-readonly、開發主機 host:dev-b、host:dev-a 納入只讀 host coverage與action 閘門。", "next": "等待脫敏主機證據、範圍確認與負責人回覆進入收件流程。", "blocked": "不可 SSH、更新主機、掃描、調整設定或收未脫敏主機資料。" }, @@ -13649,7 +13649,7 @@ }, "hostCoverage": { "title": "主機覆蓋波次", - "allowed": "Kali、host:dev-168、host:dev-111只顯示 coverage、action 閘門與證據 readines。", + "allowed": "Kali、host:dev-b、host:dev-a只顯示 coverage、action 閘門與證據 readines。", "beforeRuntime": "需要明確主機 範圍、maintenance window、憑證 handling、回復與人工 執行期閘門。", "forbidden": "不得自動 SSH、更新主機、掃描、調校、收未脫敏資料或執行 Kali /execute。" }, @@ -13733,7 +13733,7 @@ }, "hostSafetyWindow": { "title": "主機安全窗口與回復可用", - "requiredEvidence": "Kali、host:dev-168、host:dev-111 需要 範圍、maintenance window、憑證 handling與回復 負責人。", + "requiredEvidence": "Kali、host:dev-b、host:dev-a 需要 範圍、maintenance window、憑證 handling與回復 負責人。", "acceptanceSignal": "主機 負責人 明確接受後,才可建立後續 執行期閘門候選。", "stillClosed": "目前不得 SSH、掃描、更新主機、調校設定或執行 Kali /execute。" }, @@ -13799,7 +13799,7 @@ }, "hostSafetyHold": { "title": "主機安全暫停分流", - "why": "Kali、host:dev-168、host:dev-111 尚缺 範圍、maintenance window、憑證 handling或回復 負責人。", + "why": "Kali、host:dev-b、host:dev-a 尚缺 範圍、maintenance window、憑證 handling或回復 負責人。", "next": "等待主機 負責人 明確接受後,才可列入後續 執行期閘門候選。", "blocked": "不得 SSH、更新主機、掃描、調校或執行 Kali /execute。" }, @@ -13871,7 +13871,7 @@ }, "hostSafetyWindow": { "title": "主機安全窗口接線", - "evidence": "Kali、host:dev-168、host:dev-111 需要 範圍、maintenance window、憑證 handling與回復 負責人。", + "evidence": "Kali、host:dev-b、host:dev-a 需要 範圍、maintenance window、憑證 handling與回復 負責人。", "handoff": "先只顯示主機證據缺口與等待窗口,不開 live 掃描或SSH path。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -13942,7 +13942,7 @@ }, "hostWindow": { "title": "主機安全窗口預檢", - "checkPoint": "確認 Kali、host:dev-168、host:dev-111的 範圍、maintenance window、憑證 handling與回復 負責人都只以中繼資料 呈現。", + "checkPoint": "確認 Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling與回復 負責人都只以中繼資料 呈現。", "passSignal": "只可標示 host 證據 缺口 已可讀,不能建立 live action。", "failRoute": "缺窗口、憑證邊界或回復 負責人 時維持主機安全暫停。", "stillClosed": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" @@ -14016,7 +14016,7 @@ }, "hostWindowHold": { "title": "主機安全暫停分流", - "why": "Kali、host:dev-168、host:dev-111的 範圍、maintenance window、憑證 handling或回復 負責人不完整。", + "why": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling或回復 負責人不完整。", "next": "等待主機 負責人 以 僅中繼資料形式補齊窗口與回復邊界。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -14093,7 +14093,7 @@ }, "hostWindow": { "title": "主機窗口補齊", - "owner": "Kali、host:dev-168、host:dev-111 對應主機 負責人。", + "owner": "Kali、host:dev-b、host:dev-a 對應主機 負責人。", "required": "範圍、maintenance window、憑證 handling、回復 負責人與驗證指標。", "handoff": "只回收 僅中繼資料host safety window,不建立 live action。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" @@ -14168,7 +14168,7 @@ }, "hostReady": { "title": "主機重試門檻", - "ready": "Kali、host:dev-168、host:dev-111的 範圍、maintenance window、憑證 handling與回復 負責人 均以中繼資料 呈現。", + "ready": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling與回復 負責人 均以中繼資料 呈現。", "retry": "只可標示 host safety window 重試候選,等待人工再檢。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -14234,7 +14234,7 @@ }, "hostWindowPause": { "title": "主機安全暫停", - "decision": "Kali、host:dev-168、host:dev-111的 範圍、maintenance window、憑證 handling或回復 負責人仍不完整。", + "decision": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling或回復 負責人仍不完整。", "next": "等待主機 負責人 補 僅中繼資料host safety window,再回到重試門檻。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -14318,7 +14318,7 @@ }, "hostSafetyWindow": { "title": "主機安全窗口包", - "required": "Kali、host:dev-168、host:dev-111的 範圍、maintenance window、憑證 handling、回復 負責人與驗證指標。", + "required": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling、回復 負責人與驗證指標。", "handoff": "只交接 僅中繼資料host safety window,不建立 live action。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -14402,7 +14402,7 @@ }, "hostSafetyWindow": { "title": "主機安全窗口預檢", - "requirement": "Kali、host:dev-168、host:dev-111的 範圍、maintenance window、憑證 handling、回復 負責人與驗證指標都以中繼資料 呈現。", + "requirement": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling、回復 負責人與驗證指標都以中繼資料 呈現。", "pass": "只可標示 host safety window readable,不建立 live action。", "fail": "缺窗口、憑證邊界或回復 負責人 時維持主機暫停。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" @@ -14567,7 +14567,7 @@ }, "hostWindowEvidence": { "title": "主機窗口補證回收", - "owner": "主機維運 負責人 補 Kali、host:dev-168、host:dev-111的窗口與回復責任。", + "owner": "主機維運 負責人 補 Kali、host:dev-b、host:dev-a的窗口與回復責任。", "required": "範圍、maintenance window、憑證 handling、回復 負責人、驗證指標與不執行聲明。", "recovery": "只收 僅中繼資料host window,等待主機安全窗口預檢。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" @@ -14648,7 +14648,7 @@ }, "hostWindowGate": { "title": "主機窗口重試門檻", - "ready": "Kali、host:dev-168、host:dev-111的 範圍、maintenance window、憑證 handling、回復 負責人、驗證指標與不執行聲明都補齊。", + "ready": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling、回復 負責人、驗證指標與不執行聲明都補齊。", "retry": "只以 僅中繼資料host window 回到主機安全窗口預檢。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -14744,8 +14744,8 @@ }, "hosts": { "title": "主機與工具", - "state": "112 / 111 / 168", - "detail": "Kali host:kali-112與兩台開發主機已納入視野;監控、MCP、Ansible、KM與版本來源也在同一條證據鏈。", + "state": "host:kali-readonly / host:dev-a / host:dev-b", + "detail": "Kali host:kali-readonly與兩台開發主機已納入視野;監控、MCP、Ansible、KM與版本來源也在同一條證據鏈。", "evidence": "主機與工具證據鏈已前台化。", "next": "補維護窗口、host 負責人決策、脫敏主機 證據。", "locked": "不 SSH 變更、不更新主機、不執行 Kali /execute。" @@ -15218,11 +15218,11 @@ "guard": "不呼叫 Gitea admin API、不使用 權杖、不把 endpoint 身分當 inventory 完成。" }, "adjacentSourceResponse": { - "title": "110 adjacent 來源 範圍 回覆", + "title": "gateway-adjacent 來源 範圍 回覆", "body": "請 負責人 判定 `bitan-pharmacy`、`root/momo-pro-system`、`tsenyang-website`、`wooo/wooo-infra-config` 是否納入目前階段 範圍。", "requiredFields": "負責人角色 / 團隊、per-來源 決策、判定理由、affected 來源、redacted 證據參照、後續追蹤 負責人。", "acceptance": "逐項標示 in 範圍、out of 範圍、legacy、external、inaccessible或needs more 證據,並保留脫敏 追蹤。", - "guard": "不讀取私有 專案庫 內容、不匯入 archive、不把 110 adjacent 來源 自動納入 migration。" + "guard": "不讀取私有 專案庫 內容、不匯入 archive、不把 gateway-adjacent 來源 自動納入 migration。" }, "canonicalOwnerResponse": { "title": "Repo 負責人 / 權威 範圍 回覆", @@ -15511,7 +15511,7 @@ "items": { "knownAttestationItem": { "title": "對應 S4.7 已知 項目", - "body": "負責人回覆 必須明確對應 僅公開 / local 缺口、組織 / 使用者端點、110 adjacent 來源、權威負責人或legacy disposition 其中之一。", + "body": "負責人回覆 必須明確對應 僅公開 / local 缺口、組織 / 使用者端點、gateway-adjacent 來源、權威負責人或legacy disposition 其中之一。", "failure": "不明確時只能 請求 負責人 correction,不能進 已接受。", "guard": "不把模糊回覆當作 coverage聲明,也不自動補成某個 項目。" }, @@ -15595,7 +15595,7 @@ "fastProgress": { "eyebrow": "快速進度回報", "title": "目前做了什麼,一眼看懂", - "subtitle": "此區僅放高層第一屏摘要:哪些已經前台可見、Kali 112 是否納管、所有產品是否套用、以及哪些執行動作仍未批准。詳細證據保留在下方區塊。", + "subtitle": "此區僅放高層第一屏摘要:哪些已經前台可見、Kali host:kali-readonly 是否納管、所有產品是否套用、以及哪些執行動作仍未批准。詳細證據保留在下方區塊。", "nextGate": { "title": "下一個可推動進度的 閘門", "body": "先收到並驗收 S4.9 Gitea 清冊負責人回覆。這件事完成前,64%不應假性前進;完成後才檢查是否能打開審查者 / 執行期的下一段人工流程。" @@ -15606,7 +15606,7 @@ "body": "IwoooS 已串起安全合規、告警、授權、治理、錯誤追蹤、操作日誌與程式碼審查,讓資安工作改以藏在文件。" }, "kali112": { - "title": "Kali 112 已納入資安網", + "title": "Kali host:kali-readonly 已納入資安網", "body": "2026-06-04 08:55 已用既有 SSH key 完成只讀快照:系統 Kali Rolling、核心 6.16.8、根目錄磁碟使用 26%、掃描服務 8080 /health 健康、待更新套件 1994、失敗服務單元 networking.service、服務硬化 0/4。沒有啟動掃描、/execute、主機更新、調校或重啟。" }, "allProducts": { @@ -15803,7 +15803,7 @@ "items": { "dockerSystemd": { "title": "Docker / systemd 主機服務", - "body": "repo-only 清冊已納入 9 個 surface;下一步仍需 110 / 188 live hash、restart window、rollback owner 與 post-check 指標。" + "body": "repo-only 清冊已納入 9 個 surface;下一步仍需 gateway / observability live hash、restart window、rollback owner 與 post-check 指標。" }, "sshNetwork": { "title": "SSH / network / firewall", diff --git a/apps/web/next.config.js b/apps/web/next.config.js index ee9270914..38b0e0079 100644 --- a/apps/web/next.config.js +++ b/apps/web/next.config.js @@ -25,7 +25,7 @@ const nextConfig = { // 未來: 統帥確認無問題後,可逐步加入 redirect } -// Sentry 配置 (Self-Hosted @ 192.168.0.110) +// Sentry 配置 (Self-Hosted 內部來源(僅 runtime)) const sentryWebpackPluginOptions = { // 只在有 AUTH_TOKEN 時上傳 source maps silent: true, diff --git a/apps/web/sentry.client.config.ts b/apps/web/sentry.client.config.ts index c8e02985b..e0a1528c6 100644 --- a/apps/web/sentry.client.config.ts +++ b/apps/web/sentry.client.config.ts @@ -3,7 +3,7 @@ * =========================== * 前端錯誤追蹤與效能監控 * - * 部署: Self-Hosted @ 192.168.0.110 + * 部署: Self-Hosted 內部來源(僅 runtime) * 整合策略: 補強 SignOz,專注 Error Tracking + Session Replay */ diff --git a/apps/web/sentry.server.config.ts b/apps/web/sentry.server.config.ts index 4bc96c571..2cdbc041f 100644 --- a/apps/web/sentry.server.config.ts +++ b/apps/web/sentry.server.config.ts @@ -3,7 +3,7 @@ * =========================== * Next.js Server-Side 錯誤追蹤 * - * 部署: Self-Hosted @ 192.168.0.110 + * 部署: Self-Hosted 內部來源(僅 runtime) */ import * as Sentry from '@sentry/nextjs' diff --git a/apps/web/src/app/[locale]/awooop/tenants/page.tsx b/apps/web/src/app/[locale]/awooop/tenants/page.tsx index 55a6e0e61..04688feef 100644 --- a/apps/web/src/app/[locale]/awooop/tenants/page.tsx +++ b/apps/web/src/app/[locale]/awooop/tenants/page.tsx @@ -308,7 +308,7 @@ function SecurityTenantScopeCandidatePanel() { detail: t("scopeRefs.iwooosMirror"), }, { - name: "Kali 112 / 開發主機 168 / 開發主機 111", + name: "host:kali-readonly / host:dev-b / host:dev-a", detail: t("scopeRefs.hostCoverage"), }, { diff --git a/apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx b/apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx index 4b588f908..1e1c33d21 100644 --- a/apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx +++ b/apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx @@ -101,12 +101,12 @@ const PUBLIC_TEXT_ENDPOINT_ALIASES: Record = { const PUBLIC_TEXT_HOST_ALIASES: Record = { '110': 'host:public-gateway', - '111': 'host:dev-111', - '112': 'host:kali-112', + '111': 'host:dev-a', + '112': 'host:kali-readonly', '120': 'host:k3s-control-a', '121': 'host:k3s-control-b', '125': 'host:edge-vip', - '168': 'host:dev-168', + '168': 'host:dev-b', '188': 'host:observability-a', } diff --git a/apps/web/src/app/[locale]/iwooos/page.tsx b/apps/web/src/app/[locale]/iwooos/page.tsx index cbd4d5f8e..93696f123 100644 --- a/apps/web/src/app/[locale]/iwooos/page.tsx +++ b/apps/web/src/app/[locale]/iwooos/page.tsx @@ -1243,7 +1243,7 @@ const visualDashboardNodes: VisualDashboardNode[] = [ { key: 'awoooiCore', state: 'OK', icon: ShieldCheck, tone: 'steady' }, { key: 'websites', state: '7/7', icon: Radar, tone: 'steady' }, { key: 'vibeWork', state: '新專案', icon: FileText, tone: 'warn' }, - { key: 'kali112', state: '112', icon: Activity, tone: 'warn' }, + { key: 'kali112', state: 'host:kali-readonly', icon: Activity, tone: 'warn' }, { key: 'devHosts', state: '2', icon: ListChecks, tone: 'warn' }, { key: 'githubPrimary', state: '0', icon: GitBranch, tone: 'locked' }, { key: 'runtimeGate', state: '0', icon: Lock, tone: 'locked' }, @@ -3175,7 +3175,7 @@ const iwooosFocusDeckBoundaries = [ const iwooosImmediateVisualMeshNodes: IwoooSImmediateVisualMeshNode[] = [ { key: 'products', metric: '9', icon: ShieldCheck, tone: 'steady' }, - { key: 'hosts', metric: '112 / 111 / 168', icon: Activity, tone: 'warn' }, + { key: 'hosts', metric: 'host:kali-readonly / host:dev-a / host:dev-b', icon: Activity, tone: 'warn' }, { key: 'sourceControl', metric: 'S4.9', icon: GitBranch, tone: 'warn' }, { key: 'monitoring', metric: '6', icon: Radar, tone: 'steady' }, { key: 'awooop', metric: '已接線', icon: Bell, tone: 'steady' }, @@ -3215,8 +3215,8 @@ const iwooosTopologyAtlasLenses: IwoooSTopologyAtlasLens[] = [ const iwooosTopologyAtlasNodes: IwoooSTopologyAtlasNode[] = [ { key: 'productSurface', metric: '9', x: 14, y: 30, icon: Boxes, tone: 'steady' }, { key: 'sourceControl', metric: 'S4.9', x: 35, y: 18, icon: Code2, tone: 'warn' }, - { key: 'kali', metric: '112', x: 58, y: 30, icon: Server, tone: 'warn' }, - { key: 'devHosts', metric: '111 / 168', x: 77, y: 50, icon: Network, tone: 'warn' }, + { key: 'kali', metric: 'host:kali-readonly', x: 58, y: 30, icon: Server, tone: 'warn' }, + { key: 'devHosts', metric: 'host:dev-a / host:dev-b', x: 77, y: 50, icon: Network, tone: 'warn' }, { key: 'monitoring', metric: '6', x: 37, y: 66, icon: Radar, tone: 'steady' }, { key: 'awooopTruth', metric: '已接線', x: 62, y: 78, icon: Workflow, tone: 'steady' }, { key: 'runtimeGate', metric: '0', x: 88, y: 24, icon: Lock, tone: 'locked' }, @@ -3277,7 +3277,7 @@ const iwooosTopologyDrilldownNodes: IwoooSTopologyDrilldownNode[] = [ }, { key: 'kali', - relationCode: 'host:kali-112', + relationCode: 'host:kali-readonly', evidenceCode: '只讀觀測', nextCode: '範圍批准', boundaryCode: '掃描 0', @@ -3286,7 +3286,7 @@ const iwooosTopologyDrilldownNodes: IwoooSTopologyDrilldownNode[] = [ }, { key: 'devHosts', - relationCode: 'host:dev-111 / host:dev-168', + relationCode: 'host:dev-a / host:dev-b', evidenceCode: '主機窗口 0', nextCode: '負責人窗口', boundaryCode: '變更 0', @@ -3441,7 +3441,7 @@ const iwooosTopologyAtlasBoundaries = [ const iwooosDecisionRunwaySteps: IwoooSDecisionRunwayStep[] = [ { key: 'ownerEvidence', metric: '0/4', progress: 18, icon: FileWarning, tone: 'warn' }, { key: 'reviewerAcceptance', metric: '0/5', progress: 12, icon: ClipboardCheck, tone: 'warn' }, - { key: 'hostWindow', metric: '112 / 111 / 168', progress: 35, icon: Server, tone: 'warn' }, + { key: 'hostWindow', metric: 'host:kali-readonly / host:dev-a / host:dev-b', progress: 35, icon: Server, tone: 'warn' }, { key: 'githubPrimary', metric: 'S4.9', progress: 22, icon: GitBranch, tone: 'warn' }, { key: 'runtimeGate', metric: '閘門 0', progress: 0, icon: Lock, tone: 'locked' }, ] @@ -4541,9 +4541,9 @@ const evidenceReadinessItems: EvidenceReadinessItem[] = [ ] const hostCoverageItems: HostCoverageItem[] = [ - { key: 'kali112', address: 'host:kali-112', icon: Activity, tone: 'steady' }, - { key: 'dev168', address: 'host:dev-168', icon: Radar, tone: 'warn' }, - { key: 'dev111', address: 'host:dev-111', icon: Radar, tone: 'warn' }, + { key: 'kali112', address: 'host:kali-readonly', icon: Activity, tone: 'steady' }, + { key: 'dev168', address: 'host:dev-b', icon: Radar, tone: 'warn' }, + { key: 'dev111', address: 'host:dev-a', icon: Radar, tone: 'warn' }, ] const kaliMaintenanceReadinessItems: KaliMaintenanceReadinessItem[] = [ diff --git a/apps/web/src/components/neural-command/NeuralLiveCenter.tsx b/apps/web/src/components/neural-command/NeuralLiveCenter.tsx index b13e3900d..8cc128842 100644 --- a/apps/web/src/components/neural-command/NeuralLiveCenter.tsx +++ b/apps/web/src/components/neural-command/NeuralLiveCenter.tsx @@ -198,7 +198,7 @@ export function NeuralLiveCenter({ stats, history, pendingCount, activeIncidents {[ { scheme: 'kubectl://', Icon: Server, label: 'kubectl', cls: 'border-blue-500/25 bg-blue-500/5', iconCls: 'text-blue-500' }, { scheme: 'openclaw://', Icon: Bot, label: 'OpenClaw', cls: 'border-orange-500/25 bg-orange-500/5', iconCls: 'text-orange-500' }, - { scheme: 'ansible://', Icon: Settings, label: 'Ansible .188', cls: 'border-purple-500/25 bg-purple-500/5', iconCls: 'text-purple-500' }, + { scheme: 'ansible://', Icon: Settings, label: 'Ansible host:observability-a', cls: 'border-purple-500/25 bg-purple-500/5', iconCls: 'text-purple-500' }, ].map(b => { const BranchIcon = b.Icon return ( diff --git a/apps/web/src/components/neural-command/NeuralPreFlight.tsx b/apps/web/src/components/neural-command/NeuralPreFlight.tsx index 44689269d..e032a808b 100644 --- a/apps/web/src/components/neural-command/NeuralPreFlight.tsx +++ b/apps/web/src/components/neural-command/NeuralPreFlight.tsx @@ -173,7 +173,7 @@ export function NeuralPreFlight({ stats, playbooks }: Props) { { icon: Key, label: 'URI 解析器', sub: 'openclaw:// ansible:// ssh://', color: 'text-blue-500', bg: 'bg-blue-500/10', border: 'border-blue-500/30' }, { icon: Lock, label: 'Shell 防注入', sub: '; | && $() 阻斷', color: 'text-purple-500', bg: 'bg-purple-500/10', border: 'border-purple-500/30' }, { icon: Cpu, label: 'Redis 冪等鎖', sub: 'repair_lock TTL 300s', color: 'text-green-500', bg: 'bg-green-500/10', border: 'border-green-500/30' }, - { icon: Database, label: 'Ansible Playbook DB', sub: '.188 控制節點 → .110', color: 'text-yellow-500', bg: 'bg-yellow-500/10', border: 'border-yellow-500/30' }, + { icon: Database, label: 'Ansible Playbook DB', sub: 'host:observability-a 控制節點 → host:public-gateway', color: 'text-yellow-500', bg: 'bg-yellow-500/10', border: 'border-yellow-500/30' }, ].map((node, i, arr) => { const Icon = node.icon return (