feat(web): SIEM-informed focus screens — Simple+ KPIs/pipeline, SOC triage table, NOC path health - #337
Merged
Conversation
…riage table, NOC path health Implements the three screens designed from commercial SIEM/SOC/NOC dashboard references (Splunk ES key indicators, analyst-queue consoles, QRadar network summaries), adapted to the deterministic edge doctrine: Simple+ (default landing view additions) - KPI strip: Risk / Now queue / Direct critical / Impacted clients / Uplink / Services, with ~1-min client-side trend arrows. - Band-colored 60-min activity strip. - Deterministic pipeline funnel: events -> signals -> now/watch -> action. SOC Focus panel (SOC workspace, under the Command Strip) - KPIs: NOW / WATCH / BACKLOG / critical-warn / visibility / oldest unhandled NOW age (MTTA-style pressure signal). - Triage table over the deterministic queue bands with band chips and a keyword filter — a table view, not a raw event stream. - Decision card: the arbiter's pick, why, why-not-stronger, and confidence / evidence / AI-role meta (the piece no commercial SIEM has). - 6-hour alerts-over-time strip. NOC Focus panel (NOC workspace) - KPIs: uplink / internet / capacity / clients / impacted / services. - Five-hop path health strip (clients -> edge -> uplink -> gateway -> internet) — the edge-local replacement for a geo map. - Top talkers joined with the client identity view; runtime meters; service chips. Backend - Bundle gains an 'activity' key: time-bucketed alert counts (1h/2min, 6h/20min) using the same _normalize_alert_event normalizer and risk thresholds as the alert queues — no new data source or judgment logic. - Alert-queue item caps raised 5 -> 12 per band (8 escalation) so the triage table can render them; counts unchanged. Rejected reference patterns (radial charts, geo maps, donuts, raw count tiles) and the adopt/reject rationale are recorded in docs/architecture/socnoc-workspace-design.md; API_REFERENCE documents the activity payload. Verified in a real browser against fixture data: KPI deltas, pipeline numbers, band/keyword filters, path hops, top talkers — zero JS errors. Full suite matches baseline (527 passed). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Sd147KuF5sUu6UNM4t5H8x
…/NOC screens
Surface the v2 decision-explanation fields presented at BHUSA 2026 Arsenal
(selected action, why chosen, why_not_others, release condition, audit
trace / policy profile / config hash / evidence ids) inside each domain's
focus screen, with the per-jurisdiction evaluator rationale:
- booth-focus payload gains a 'domains' key: domains.noc / domains.soc,
each {status, reasons[]} taken from the explanation record's
machine.noc_summary / soc_summary evaluator reasons (read-only
projection of the same artifacts the audit-review CLI reads).
- The dashboard bundle carries the whole projection as 'decision_focus'.
- SOC focus decision card now renders: arbiter's pick + reason, SOC
rationale (why this state), why-not-stronger, release condition, and
the audit line (trace · policy · cfg · evidence · DRY RUN/ENFORCED).
- NOC focus panel gains the mirrored 'Decision rationale — NOC' card with
the NOC jurisdiction's reasons and the same audit line.
- Falls back to the live actions payload when no explanation record
exists yet ('No decision explanation recorded yet.').
Verified in a real browser against a fixture v2 explanation record:
THROTTLE decision with per-domain reasons, why-not-stronger, release
condition, and trace/policy/cfg/evidence audit line rendered on both
screens, zero JS errors. Full suite matches baseline (527 passed);
booth-focus tests unaffected (additive key).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sd147KuF5sUu6UNM4t5H8x
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements the three screens designed from commercial SIEM/SOC/NOC dashboard references (Splunk ES Security Posture key indicators, analyst-queue consoles, QRadar network summaries, Grafana SOC standup boards), adapted to the deterministic edge doctrine. The adopt/reject rationale — including what was deliberately not copied (radial time charts, geo maps, donut charts, threshold-less raw count tiles) — is recorded in
docs/architecture/socnoc-workspace-design.md. Two commits:Commit 1 — SIEM-informed focus screens
Simple+ (default landing view additions)
events → signals → now/watch → actionfor the last hour, ending in the arbiter's current action.SOC Focus panel (SOC workspace, directly under the Command Strip)
NOC Focus panel (NOC workspace)
state.noc_capacity.top_sourcesjoined with the client identity view (hostname + trust state), share bars.Backend
activitykey: time-bucketed alert counts (1h/2-min and 6h/20-min windows), banded through the same_normalize_alert_eventnormalizer and NOW/WATCH thresholds as the alert queues — activity coloring can never disagree with queue bands. Event-log tail widened to 400 rows for the bundle only.itemscaps raised 5 → 12 per band (8 for escalation candidates) so the triage table can render them;countfields unchanged.Commit 2 — BHUSA 2026 decision rationale per jurisdiction
Surfaces the v2 decision-explanation fields from the Arsenal audit walkthrough (selected action, why chosen,
why_not_others, release condition, trace / policy profile / config hash / evidence ids) inside each domain's focus screen:domainskey:domains.noc/domains.soc, each{status, reasons[]}from the explanation record'smachine.noc_summary/soc_summaryevaluator reasons — a read-only projection of the same artifacts the audit-review CLI reads.decision_focus.trace · policy · cfg · evidence · DRY RUN/ENFORCED).Type of change
Checklist
PYTHONPATH=. pytest -qpasses — 527 passed, identical to the pre-change baseline (only the knownbhusasandbox-only failures); booth-focus tests unaffected (additive key)docs/API_REFERENCE.mdactivity + decision_focus sections,docs/CHANGELOG.md,docs/architecture/socnoc-workspace-design.md)summarize*helpers and thresholds; the rationale cards are read-only projections of the arbiter's own explanation records)installer/,systemd/,security/Notes for reviewers
activityanddecision_focusare documented inAPI_REFERENCE.md; the bundle contract test asserts the window/bucket shapes and key presence.body[data-workspace]) at order 3, directly under the Command Strip.Related issues
Refs #283, follow-up to #334 / #335
🤖 Generated with Claude Code
https://claude.ai/code/session_01Sd147KuF5sUu6UNM4t5H8x