fix(iwooos): clarify wazuh runtime closure

This commit is contained in:
ogt
2026-07-11 12:36:21 +08:00
parent a8077ca699
commit 34c942689b
3 changed files with 54 additions and 41 deletions

View File

@@ -13965,13 +13965,13 @@
}
},
"securityToolClosure": {
"eyebrow": "Tool closure readback",
"title": "Security source readiness and production closure are measured separately",
"eyebrow": "Security closure overview",
"title": "Overall security tool closure",
"subtitle": "Source evidence for Wazuh, SBOM, runtime detection, DAST, and AI apply only creates an executable candidate. Production execution, independent verification, and learning writeback are required for closure.",
"statusLabel": "Security governance state",
"statusDetail": "{ready}/{required} source signals are readable; production closure is calculated separately from same-run execution and verification receipts.",
"statusDetail": "Sources {ready}/{required}; closed tool tracks {closed}/{tracks}.",
"statusDetailFallback": "Waiting for tool-closure and controlled-candidate readback.",
"queueLabel": "Next executable P0",
"queueLabel": "Next open P0",
"detailsTitle": "Tool-track next steps and hard boundaries",
"boundaryTitle": "Hard boundaries",
"source": {
@@ -13994,7 +13994,7 @@
"source": "Source",
"packet": "Packet",
"handoff": "Handoff",
"runtime": "Runtime",
"runtime": "Manager posture",
"ready": "ready",
"waiting": "waiting",
"failed": "check failed",
@@ -14019,21 +14019,23 @@
"bootstrap": "Showing latest deployed readback",
"failed": "Tool closure readback is not deployed or failed to load",
"open": "Source evidence is readable; runtime closure is still open",
"ready": "Source evidence is readable; production closure advances only from runtime receipts"
"ready": "Source evidence is readable; production closure advances only from runtime receipts",
"postureClosed": "Manager posture is closed; live event / response is the next gap"
},
"metrics": {
"closure": "Runtime closure",
"closure": "All-tool closure",
"source": "Source ready",
"tracks": "Closed tracks",
"wazuh": "Wazuh verifier",
"alerts": "Alert receipt",
"runtime": "Wazuh same-run"
"runtime": "Manager posture"
},
"states": {
"runtime_closed": "production closed",
"source_ready_runtime_open": "source ready, runtime open",
"partial_source_readiness_runtime_open": "source incomplete, runtime open",
"source_missing_runtime_open": "source missing, runtime open"
"source_missing_runtime_open": "source missing, runtime open",
"manager_posture_closed_event_response_open": "posture closed, event / response open"
},
"tracks": {
"wazuh_detection_response": {
@@ -14071,7 +14073,7 @@
},
"queue": {
"P0-03": {
"title": "Wazuh detection closure",
"title": "Wazuh live event / response",
"next": "The source verifier is readable; next add live events, forensics, a case, controlled response, and an independent post-verifier."
},
"P0-07": {

View File

@@ -13965,13 +13965,13 @@
}
},
"securityToolClosure": {
"eyebrow": "工具閉環 readback",
"title": "安全來源就緒與正式環境閉環分開計算",
"eyebrow": "資安閉環總覽",
"title": "整體資安工具閉環",
"subtitle": "Wazuh、SBOM、runtime detection、DAST 與 AI apply 的來源證據只代表可執行候選;必須有正式環境執行、獨立驗證與學習回寫才算閉環。",
"statusLabel": "安全治理狀態",
"statusDetail": "已讀回 {ready}/{required} 個來源訊號;正式環境閉環另以同一 run 的執行與驗證收據計算。",
"statusDetail": "來源 {ready}/{required};已閉環工具軌 {closed}/{tracks}。",
"statusDetailFallback": "等待工具閉環 readback 與受控候選狀態。",
"queueLabel": "下一個可執行 P0",
"queueLabel": "下一個未閉環 P0",
"detailsTitle": "工具軌下一步與硬邊界",
"boundaryTitle": "硬邊界",
"source": {
@@ -13994,7 +13994,7 @@
"source": "來源",
"packet": "Packet",
"handoff": "Handoff",
"runtime": "Runtime",
"runtime": "Manager posture",
"ready": "ready",
"waiting": "waiting",
"failed": "check failed",
@@ -14019,21 +14019,23 @@
"bootstrap": "顯示最近部署驗收值",
"failed": "工具閉環 readback 尚未部署或讀取失敗",
"open": "來源證據可讀runtime 閉環仍未完成",
"ready": "來源證據可讀,正式環境閉環仍依 runtime 收據推進"
"ready": "來源證據可讀,正式環境閉環仍依 runtime 收據推進",
"postureClosed": "Manager posture 已閉環live event / response 仍是下一缺口"
},
"metrics": {
"closure": "Runtime 閉環",
"closure": "全工具閉環",
"source": "來源就緒",
"tracks": "已閉環軌",
"wazuh": "Wazuh verifier",
"alerts": "Alert receipt",
"runtime": "Wazuh same-run"
"runtime": "Manager posture"
},
"states": {
"runtime_closed": "正式環境已閉環",
"source_ready_runtime_open": "來源就緒runtime 未閉環",
"partial_source_readiness_runtime_open": "來源未齊runtime 未閉環",
"source_missing_runtime_open": "缺來源runtime 未閉環"
"source_missing_runtime_open": "缺來源runtime 未閉環",
"manager_posture_closed_event_response_open": "posture 已閉環event / response 未閉環"
},
"tracks": {
"wazuh_detection_response": {
@@ -14071,7 +14073,7 @@
},
"queue": {
"P0-03": {
"title": "Wazuh 偵測閉環",
"title": "Wazuh live event / response",
"next": "來源 verifier 已可讀;下一步補 live event、鑑識、case、受控回應與獨立 post-verifier。"
},
"P0-07": {

View File

@@ -16673,28 +16673,8 @@ function IwoooSSecurityToolClosureBoard() {
}, [])
const summary = data?.summary ?? SECURITY_TOOL_CLOSURE_BOOTSTRAP_SUMMARY
const runtimeClosureOpen = summary.tool_runtime_closure_percent < 100
const statusKey = readbackFresh
? runtimeClosureOpen ? 'open' : 'ready'
: failed ? 'bootstrap' : loading ? 'syncing' : 'bootstrap'
const statusTone: 'steady' | 'warn' = runtimeClosureOpen ? 'warn' : 'steady'
const tracks = data?.tool_tracks?.length ? data.tool_tracks : SECURITY_TOOL_CLOSURE_BOOTSTRAP_TRACKS
const queue = data?.next_executable_queue?.length ? data.next_executable_queue : SECURITY_TOOL_CLOSURE_BOOTSTRAP_QUEUE
const boundaryMarkers = data?.boundary_markers?.length ? data.boundary_markers : SECURITY_TOOL_CLOSURE_BOOTSTRAP_BOUNDARY_MARKERS
const primaryQueue = queue[0]
const primarySameRunRequired =
primaryQueue.same_run_required_stage_count ?? summary.wazuh_incident_response_same_run_required_stage_count ?? 0
const primarySameRunReady =
primaryQueue.same_run_source_stage_ready_count ?? summary.wazuh_incident_response_same_run_stage_ready_count ?? 0
const primaryHandoffReady =
primaryQueue.controlled_executor_handoff_preview_ready_count ??
summary.wazuh_controlled_executor_handoff_preview_ready_count ??
0
const runtimeSummary = runtimeData?.summary
const runtimeClosed = runtimeSummary?.runtime_closed_count ?? summary.wazuh_incident_response_runtime_closed_count ?? 0
const dispatchEnabled = runtimeSummary?.executor_policy_enabled_count ?? summary.wazuh_controlled_executor_dispatch_enabled_count ?? 0
const dispatchCandidate = runtimeSummary?.dispatch_candidate_count ?? 0
const checkModeFailed = runtimeSummary?.check_mode_failed_count ?? 0
const runtimePresent = runtimeSummary?.same_run_present_stage_count ?? runtimeClosed
const runtimeRequired = runtimeSummary?.same_run_required_stage_count ?? 1
const runtimeCompletion = runtimeSummary?.same_run_completion_percent ?? 0
@@ -16702,6 +16682,30 @@ function IwoooSSecurityToolClosureBoard() {
runtimeSummary?.runtime_execution_performed_count ??
summary.runtime_execution_performed_count ??
0
const runtimeClosureOpen = summary.tool_runtime_closure_percent < 100
const wazuhPostureClosed = runtimeClosed > 0
const statusKey = readbackFresh
? wazuhPostureClosed ? 'postureClosed' : runtimeClosureOpen ? 'open' : 'ready'
: failed ? 'bootstrap' : loading ? 'syncing' : 'bootstrap'
const statusTone: 'steady' | 'warn' = wazuhPostureClosed || !runtimeClosureOpen ? 'steady' : 'warn'
const tracks = data?.tool_tracks?.length ? data.tool_tracks : SECURITY_TOOL_CLOSURE_BOOTSTRAP_TRACKS
const queue = data?.next_executable_queue?.length ? data.next_executable_queue : SECURITY_TOOL_CLOSURE_BOOTSTRAP_QUEUE
const boundaryMarkers = data?.boundary_markers?.length ? data.boundary_markers : SECURITY_TOOL_CLOSURE_BOOTSTRAP_BOUNDARY_MARKERS
const primaryQueue = queue[0]
const primaryUsesLiveWazuhRuntime = primaryQueue.track_id === 'wazuh_detection_response' && runtimeSummary != null
const primarySameRunRequired = primaryUsesLiveWazuhRuntime
? runtimeRequired
: primaryQueue.same_run_required_stage_count ?? summary.wazuh_incident_response_same_run_required_stage_count ?? 0
const primarySameRunReady = primaryUsesLiveWazuhRuntime
? runtimePresent
: primaryQueue.same_run_source_stage_ready_count ?? summary.wazuh_incident_response_same_run_stage_ready_count ?? 0
const primaryHandoffReady =
primaryQueue.controlled_executor_handoff_preview_ready_count ??
summary.wazuh_controlled_executor_handoff_preview_ready_count ??
0
const dispatchEnabled = runtimeSummary?.executor_policy_enabled_count ?? summary.wazuh_controlled_executor_dispatch_enabled_count ?? 0
const dispatchCandidate = runtimeSummary?.dispatch_candidate_count ?? 0
const checkModeFailed = runtimeSummary?.check_mode_failed_count ?? 0
const runtimeFailureKey = runtimeData?.check_failure_class === 'ansible_target_unreachable'
? 'targetUnreachable'
: runtimeData?.check_failure_class === 'ansible_check_mode_timeout'
@@ -16858,6 +16862,8 @@ function IwoooSSecurityToolClosureBoard() {
{t('statusDetail', {
ready: summary.total_ready_signal_count,
required: summary.total_required_signal_count,
closed: summary.closed_tool_track_count,
tracks: summary.tool_track_count,
})}
</div>
<div style={{ display: 'flex', alignItems: 'center', gap: 6, color: '#526058', fontSize: 10.5, fontWeight: 800 }}>
@@ -17059,6 +17065,9 @@ function IwoooSSecurityToolClosureBoard() {
{tracks.map(track => {
const tone = securityToolClosureTone(track)
const width = `${Math.min(Math.max(track.source_readiness_percent, 0), 100)}%`
const runtimeStateKey = track.track_id === 'wazuh_detection_response' && wazuhPostureClosed
? 'manager_posture_closed_event_response_open'
: track.runtime_closure_state
return (
<div
key={track.track_id}
@@ -17088,7 +17097,7 @@ function IwoooSSecurityToolClosureBoard() {
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', gap: 8, color: '#66706a', fontSize: 10, fontWeight: 800 }}>
<span>{track.ready_signal_count}/{track.required_signal_count}</span>
<span>{t(`states.${track.runtime_closure_state}` as never)}</span>
<span>{t(`states.${runtimeStateKey}` as never)}</span>
</div>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', gap: 7, alignItems: 'center' }}>