3.2 KiB
3.2 KiB
Here’s a simple, high‑leverage UX pattern you can borrow from top observability tools: treat every policy decision or reachability change as a visual diff.
Why this helps
- Turns opaque “why is this verdict different?” moments into quick, explainable triage.
- Reduces back‑and‑forth between Security, Dev, and Audit—everyone sees the same before/after evidence.
Core UI concept
- Side‑by‑side panes: Before (previous scan/policy) vs After (current).
- Graph focus: show the dependency/reachability subgraph; highlight added/removed/changed nodes/edges.
- Evidence strip (right rail): human‑readable facts used by the engine (e.g., feature flag OFF, code path unreachable, kernel eBPF trace absent).
- Diff verdict header: “Risk ↓ from Medium → Low (policy v1.8 → v1.9)”.
- Filter chips: Scope by component, package, CVE, policy rule, environment.
Minimal data model (so UI is easy)
GraphSnapshot: nodes, edges, metadata (component, version, tags).PolicySnapshot: version, rules hash, inputs (flags, env, VEX sources).Delta:added/removed/changedfor nodes, edges, and rule outcomes.EvidenceItems[]: typed facts (trace hits, SBOM lines, VEX claims, config values) with source + timestamp.SignedDeltaVerdict: final status + signatures (who/what produced it).
Micro‑interactions that matter
- Hover a changed node ⇒ inline badge explaining why it changed (e.g., “now gated by
--no-xmlruntime flag”). - Click a rule change in the right rail ⇒ spotlight the exact subgraph it affected.
- Toggle “explain like I’m new” ⇒ expands jargon into plain language.
- One‑click “copy audit bundle” ⇒ exports the delta + evidence as an attachment.
Where this belongs in your product
- Primary: in the Triage view for any new finding/regression.
- Secondary: in Policy history (compare vX vs vY) and Release gates (compare build A vs build B).
- Inline surfaces: small “diff pills” next to every verdict in tables; click opens the big side‑by‑side.
Quick build checklist (dev & PM)
- Compute a stable graph hash per scan; store snapshots.
- Add a delta builder that outputs
added/removed/changedat node/edge + rule outcome levels. - Normalize evidence items (source, digest, excerpt) so the UI can render consistent cards.
- Ship a Signed Delta Verdict (OCI‑attached) so audits can replay the view from the artifact alone.
- Include hotkeys:
1focus changes only,2show full graph,Eexpand evidence,Aexport audit.
Empty state & failure modes
- If evidence is incomplete: show a yellow “Unknowns present” ribbon with a count and a button to collect missing traces.
- If graphs are huge: default to “changed neighborhood only” with a mini‑map to pan.
Success metric (simple)
- Mean time to explain (MTTE): time from “why did this change?” to user clicking “Understood”. Track trend ↓.
If you want, I can sketch a quick wireframe (header, graph panes, evidence rail, and the export action) or generate a JSON schema for the Delta and EvidenceItem objects you can hand to your frontend.