# Triage UX and state model The triage experience is narrative-first and proof-linked. It is designed to answer: can I ship, what blocks me, and what is the minimum safe change. Core concepts - Case: a finding tied to an asset and policy verdict. - Evidence: signed artifacts (SBOM, VEX, reachability, provenance). - Decision: signed, reversible action (mute, acknowledge, exception). - Snapshot: immutable inputs and outputs hash pair for smart diff. Layout and flow - Findings table for scanning and filters. - Case view with verdict banner, chips, and evidence rail. - Smart diff history for meaningful changes between snapshots. Deterministic UI model - State transitions are pure functions. - Side effects are explicit commands (HTTP, download, navigation). - Reducer outputs are replayable for debugging. Lanes and visibility - ACTIVE, BLOCKED, NEEDS_EXCEPTION. - MUTED_REACH, MUTED_VEX, COMPENSATED behind a toggle. Decisions - All decisions are signed and auditable. - Undo is a signed revoke, never a delete. - Decisions trigger new snapshots and re-evaluation. Performance and accessibility - Header loads first, evidence loads lazily. - ETag caching for case and evidence lists. - Keyboard-first navigation and screen reader parity. Related references - docs/ux/TRIAGE_UX_GUIDE.md - docs/ux/TRIAGE_UI_REDUCER_SPEC.md - docs/ui/triage.md