Proof Visualization Wireframes

Version: 1.0.0 Status: APPROVED Created: 2025-12-20 Sprint Reference: SPRINT_3500_0001_0001


Overview

This document provides UX wireframes for the proof visualization features in StellaOps Console. These wireframes support:

  1. Proof Ledger View — Displaying deterministic proof chains
  2. Score Replay Panel — Verifying bit-identical replay
  3. Unknowns Queue — Managing ambiguity triage
  4. Reachability Explain Widget — Visualizing call-graph paths
  5. Proof Chain Inspector — Deep-diving attestation chains

1. Proof Ledger View

Purpose

Display the cryptographic proof chain for a scan, showing how the score was calculated with frozen feed snapshots.

Wireframe

┌─────────────────────────────────────────────────────────────────────────────┐
│ Scan: alpine:3.18 @ sha256:abc123...                    [Replay] [Export]   │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │ PROOF CHAIN                                              ✓ Verified │   │
│  ├─────────────────────────────────────────────────────────────────────┤   │
│  │                                                                     │   │
│  │   ┌──────────────────┐                                              │   │
│  │   │ SCAN MANIFEST    │                                              │   │
│  │   │ ─────────────────│                                              │   │
│  │   │ ID: scan-7f3a... │                                              │   │
│  │   │ Artifact: alpine │                                              │   │
│  │   │ ┌──────────────┐ │                                              │   │
│  │   │ │ Concelier ↓  │ │  sha256:feed123...                           │   │
│  │   │ │ Snapshot     │─┼──────────────────────────────────────┐       │   │
│  │   │ └──────────────┘ │                                      │       │   │
│  │   │ ┌──────────────┐ │                                      │       │   │
│  │   │ │ Excititor ↓  │ │  sha256:vex456...                    │       │   │
│  │   │ │ Snapshot     │─┼───────────────────────────────┐      │       │   │
│  │   │ └──────────────┘ │                               │      │       │   │
│  │   └──────────────────┘                               │      │       │   │
│  │           │                                          │      │       │   │
│  │           ▼                                          │      │       │   │
│  │   ┌──────────────────┐                               │      │       │   │
│  │   │ PROOF BUNDLE     │                               │      │       │   │
│  │   │ ─────────────────│                               │      │       │   │
│  │   │ Root Hash:       │                               │      │       │   │
│  │   │ sha256:proof789. │                               │      │       │   │
│  │   │                  │                               │      │       │   │
│  │   │ [View CBOR]      │                               │      │       │   │
│  │   │ [View DSSE]      │                               │      │       │   │
│  │   └──────────────────┘                               │      │       │   │
│  │           │                                          │      │       │   │
│  │           ▼                                          ▼      ▼       │   │
│  │   ┌──────────────────────────────────────────────────────────────┐ │   │
│  │   │ FROZEN FEEDS AT SCAN TIME                                    │ │   │
│  │   │ ─────────────────────────────────────────────────────────────│ │   │
│  │   │ Concelier: 2025-12-20T10:30:00Z  (142,847 advisories)        │ │   │
│  │   │ Excititor: 2025-12-20T10:30:00Z  (23,491 VEX statements)     │ │   │
│  │   └──────────────────────────────────────────────────────────────┘ │   │
│  │                                                                     │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │ PROOF SEGMENTS                                          [Expand All]│   │
│  ├─────────────────────────────────────────────────────────────────────┤   │
│  │                                                                     │   │
│  │  #1  score_delta    CVE-2024-1234  +7.5 → 8.2   [View Details]      │   │
│  │  #2  vex_claim      CVE-2024-1234  not_affected  [View Claim]       │   │
│  │  #3  reachability   CVE-2024-1235  unreachable   [View Graph]       │   │
│  │  #4  unknown_band   pkg:apk/libcrypto  WARM      [View Queue]       │   │
│  │                                                                     │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Key Elements

ElementDescriptionInteraction
Scan HeaderArtifact digest + scan IDClick to copy
Proof Chain Status✓ Verified / ⚠ Unverified / ✗ FailedHover for details
Replay ButtonTriggers score replay verificationOpens replay modal
Export ButtonDownloads proof bundle (CBOR + DSSE)ZIP download
Proof SegmentsExpandable list of score decisionsClick to expand

2. Score Replay Panel

Purpose

Allow users to verify that a scan produces identical results when replayed with frozen feeds.

Wireframe

┌─────────────────────────────────────────────────────────────────────────────┐
│ ⟲ Score Replay Verification                                        [Close] │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │                                                                     │   │
│  │     Original Scan                    Replay Result                  │   │
│  │     ─────────────                    ─────────────                  │   │
│  │                                                                     │   │
│  │     Proof Root:                      Proof Root:                    │   │
│  │     sha256:proof789...               sha256:proof789...             │   │
│  │                                                                     │   │
│  │     Score: 8.2                       Score: 8.2                     │   │
│  │     Findings: 47                     Findings: 47                   │   │
│  │     Critical: 3                      Critical: 3                    │   │
│  │     High: 12                         High: 12                       │   │
│  │                                                                     │   │
│  │                         ════════                                    │   │
│  │                        ║ MATCH ║                                    │   │
│  │                         ════════                                    │   │
│  │                                                                     │   │
│  │     ✓ Bit-identical replay confirmed                                │   │
│  │     ✓ Proof root hashes match                                       │   │
│  │     ✓ All 47 findings reproduced exactly                            │   │
│  │                                                                     │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │ Replay Details                                                      │   │
│  ├─────────────────────────────────────────────────────────────────────┤   │
│  │ Replayed At:        2025-12-20T14:22:30Z                            │   │
│  │ Scanner Version:    1.42.0 (same as original)                       │   │
│  │ Concelier Snapshot: sha256:feed123... (frozen)                      │   │
│  │ Excititor Snapshot: sha256:vex456... (frozen)                       │   │
│  │ Duration:           1.23s                                           │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
│                    [Download Replay Report]  [View Diff (none)]             │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

States

StateDisplayActions
ReplayingSpinner + progress barCancel
MatchGreen ✓ MATCH bannerDownload report
MismatchRed ✗ MISMATCH bannerView diff, escalate
ErrorYellow ⚠ ERROR bannerRetry, view logs

3. Unknowns Queue

Purpose

Display packages with ambiguous or missing data, ranked by urgency for triage.

Wireframe

┌─────────────────────────────────────────────────────────────────────────────┐
│ Unknowns Queue                                    [Filter ▾] [Export CSV]   │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  ┌───────────────────────────────────────────────────────────────────────┐ │
│  │ Summary                                                               │ │
│  │ ═══════════════════════════════════════════════════════════════════════│ │
│  │  🔴 HOT: 12     🟠 WARM: 47     🔵 COLD: 234     ✓ RESOLVED: 1,892    │ │
│  └───────────────────────────────────────────────────────────────────────┘ │
│                                                                             │
│  ┌───────────────────────────────────────────────────────────────────────┐ │
│  │ HOT Queue (requires immediate attention)                              │ │
│  ├───────────────────────────────────────────────────────────────────────┤ │
│  │                                                                       │ │
│  │  Score │ Package                    │ Uncertainty │ Pressure │ Age    │ │
│  │  ──────┼────────────────────────────┼─────────────┼──────────┼─────── │ │
│  │  94.2  │ pkg:npm/lodash@4.17.21     │ 0.89        │ 0.95     │ 2d     │ │
│  │        │ Missing: CVE-2024-9999 VEX │             │          │        │ │
│  │        │ [Research] [Request VEX] [Suppress]                          │ │
│  │  ──────┼────────────────────────────┼─────────────┼──────────┼─────── │ │
│  │  87.5  │ pkg:maven/log4j@2.17.1     │ 0.72        │ 0.98     │ 5d     │ │
│  │        │ Missing: Reachability data │             │          │        │ │
│  │        │ [Analyze] [Mark Reviewed] [Suppress]                         │ │
│  │  ──────┼────────────────────────────┼─────────────┼──────────┼─────── │ │
│  │  ...   │                            │             │          │        │ │
│  │                                                                       │ │
│  └───────────────────────────────────────────────────────────────────────┘ │
│                                                                             │
│  ┌───────────────────────────────────────────────────────────────────────┐ │
│  │ Ranking Factors                                                       │ │
│  ├───────────────────────────────────────────────────────────────────────┤ │
│  │                                                                       │ │
│  │  Score = (Uncertainty × 50) + (Exploit Pressure × 50)                 │ │
│  │                                                                       │ │
│  │  Uncertainty:                                                         │ │
│  │    - Missing VEX statement: +0.40                                     │ │
│  │    - Missing reachability: +0.30                                      │ │
│  │    - Conflicting sources: +0.20                                       │ │
│  │    - Stale advisory (>90d): +0.10                                     │ │
│  │                                                                       │ │
│  │  Exploit Pressure:                                                    │ │
│  │    - In KEV list: +0.50                                               │ │
│  │    - EPSS ≥ 0.90: +0.30                                               │ │
│  │    - EPSS ≥ 0.50: +0.15                                               │ │
│  │    - CVSS ≥ 9.0: +0.05                                                │ │
│  │                                                                       │ │
│  └───────────────────────────────────────────────────────────────────────┘ │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Band Definitions

BandScore RangeColorSLA
HOT75-100🔴 Red24h
WARM50-74🟠 Orange7d
COLD25-49🔵 Blue30d
RESOLVED0-24 / Resolved✓ GreenN/A

4. Reachability Explain Widget

Purpose

Show the call-graph path from entrypoint to vulnerable code, explaining why a finding is reachable or unreachable.

Wireframe

┌─────────────────────────────────────────────────────────────────────────────┐
│ Reachability: CVE-2024-1234 in pkg:npm/lodash@4.17.21                       │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  Status: ✓ REACHABLE                    Paths Found: 3                      │
│  Shortest Path: 4 hops                  Confidence: 98%                     │
│                                                                             │
│  ┌───────────────────────────────────────────────────────────────────────┐ │
│  │ Shortest Path (4 hops)                                                │ │
│  ├───────────────────────────────────────────────────────────────────────┤ │
│  │                                                                       │ │
│  │  ┌─────────────────────────┐                                          │ │
│  │  │ 🚪 ENTRYPOINT           │                                          │ │
│  │  │ POST /api/users         │                                          │ │
│  │  │ UsersController.Create()│                                          │ │
│  │  └───────────┬─────────────┘                                          │ │
│  │              │ static call                                            │ │
│  │              ▼                                                        │ │
│  │  ┌─────────────────────────┐                                          │ │
│  │  │ UserService.ValidateInput│                                         │ │
│  │  │ src/services/user.ts:42 │                                          │ │
│  │  └───────────┬─────────────┘                                          │ │
│  │              │ static call                                            │ │
│  │              ▼                                                        │ │
│  │  ┌─────────────────────────┐                                          │ │
│  │  │ ValidationHelper.sanitize│                                         │ │
│  │  │ src/utils/validate.ts:18│                                          │ │
│  │  └───────────┬─────────────┘                                          │ │
│  │              │ static call                                            │ │
│  │              ▼                                                        │ │
│  │  ┌─────────────────────────┐                                          │ │
│  │  │ 🎯 VULNERABLE CODE      │                                          │ │
│  │  │ lodash.template()       │                                          │ │
│  │  │ CVE-2024-1234           │                                          │ │
│  │  └─────────────────────────┘                                          │ │
│  │                                                                       │ │
│  └───────────────────────────────────────────────────────────────────────┘ │
│                                                                             │
│  ┌───────────────────────────────────────────────────────────────────────┐ │
│  │ All Paths (3)                                           [Expand All]  │ │
│  ├───────────────────────────────────────────────────────────────────────┤ │
│  │  Path 1: POST /api/users → ... → lodash.template() (4 hops) ✓        │ │
│  │  Path 2: POST /api/admin → ... → lodash.template() (6 hops) ✓        │ │
│  │  Path 3: GET /api/search → ... → lodash.template() (5 hops) ✓        │ │
│  └───────────────────────────────────────────────────────────────────────┘ │
│                                                                             │
│                    [View Full Graph]  [Export DSSE Attestation]             │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Reachability States

StatusIconDescription
REACHABLE✓ GreenAt least one path found from entrypoint to vulnerable code
UNREACHABLE✗ GrayNo paths found; vulnerability in inactive code
PARTIAL⚠ YellowSome paths found but confidence < 80%
UNKNOWN? BlueAnalysis incomplete (missing call-graph data)

5. Proof Chain Inspector

Purpose

Deep-dive into the cryptographic attestation chain, showing DSSE envelopes and Rekor log entries.

Wireframe

┌─────────────────────────────────────────────────────────────────────────────┐
│ Proof Chain Inspector                                               [Close] │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  ┌───────────────────────────────────────────────────────────────────────┐ │
│  │ Chain Overview                                                        │ │
│  ├───────────────────────────────────────────────────────────────────────┤ │
│  │                                                                       │ │
│  │   ┌─────────┐    ┌─────────┐    ┌─────────┐    ┌─────────┐           │ │
│  │   │  SBOM   │───▶│  Scan   │───▶│ Proof   │───▶│  DSSE   │           │ │
│  │   │ Digest  │    │Manifest │    │ Bundle  │    │Envelope │           │ │
│  │   └─────────┘    └─────────┘    └─────────┘    └─────────┘           │ │
│  │       │              │              │              │                  │ │
│  │       ▼              ▼              ▼              ▼                  │ │
│  │   ✓ Verified    ✓ Verified    ✓ Verified    ✓ Verified               │ │
│  │                                                                       │ │
│  │                         ┌─────────┐                                   │ │
│  │                         │ Rekor   │  Log Index: 12847392              │ │
│  │                         │  Log    │  Timestamp: 2025-12-20T10:30:00Z  │ │
│  │                         └─────────┘                                   │ │
│  │                              │                                        │ │
│  │                              ▼                                        │ │
│  │                         ✓ Logged                                      │ │
│  │                                                                       │ │
│  └───────────────────────────────────────────────────────────────────────┘ │
│                                                                             │
│  ┌───────────────────────────────────────────────────────────────────────┐ │
│  │ DSSE Envelope                                               [Copy]   │ │
│  ├───────────────────────────────────────────────────────────────────────┤ │
│  │                                                                       │ │
│  │  {                                                                    │ │
│  │    "payloadType": "application/vnd.stellaops.proof+cbor",             │ │
│  │    "payload": "base64...",                                            │ │
│  │    "signatures": [                                                    │ │
│  │      {                                                                │ │
│  │        "keyid": "sha256:signer123...",                                │ │
│  │        "sig": "base64..."                                             │ │
│  │      }                                                                │ │
│  │    ]                                                                  │ │
│  │  }                                                                    │ │
│  │                                                                       │ │
│  └───────────────────────────────────────────────────────────────────────┘ │
│                                                                             │
│  ┌───────────────────────────────────────────────────────────────────────┐ │
│  │ Signer Information                                                    │ │
│  ├───────────────────────────────────────────────────────────────────────┤ │
│  │                                                                       │ │
│  │  Key ID:       sha256:signer123...                                    │ │
│  │  Algorithm:    ECDSA P-256                                            │ │
│  │  Issuer:       StellaOps Scanner v1.42.0                              │ │
│  │  Trust Tier:   VENDOR                                                 │ │
│  │  Valid From:   2025-01-01T00:00:00Z                                   │ │
│  │  Valid Until:  2026-01-01T00:00:00Z                                   │ │
│  │                                                                       │ │
│  │  [View Certificate]  [Verify Signature]                               │ │
│  │                                                                       │ │
│  └───────────────────────────────────────────────────────────────────────┘ │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Component Summary

WireframeAngular ComponentRoute
Proof Ledger ViewProofLedgerComponent/scans/:id/proof
Score Replay PanelScoreReplayModalComponentModal overlay
Unknowns QueueUnknownsQueueComponent/unknowns
Reachability ExplainReachabilityExplainComponent/findings/:id/reachability
Proof Chain InspectorProofChainInspectorComponentModal overlay

Design Tokens

TokenValueUsage
--color-verified#22c55eVerified status badges
--color-mismatch#ef4444Failed verification
--color-unknown#3b82f6Unknown/pending status
--color-hot#dc2626HOT band indicators
--color-warm#f97316WARM band indicators
--color-cold#2563ebCOLD band indicators

Accessibility


Approval

UX Guild: ☑ Approved 2025-12-20 Product Management: ☑ Approved 2025-12-20 Accessibility Review: ☐ Pending


References