Skip to main content

CISO Readability Review — UI Screenshots vs Product Spec

Date: 2026-03-03 Trigger: Local Docker build of sv0-platform (v0.2-dev) with seed data, automated QA (visual-qa + ux-audit), correlated against Notion-synced product specs. Status: Research complete — actionable gaps identified. Test environment: Docker Compose (mongo 7.0, api, ui on :8080), tenant demo-w1 (105 entities, 10 workloads, 6 risk clusters). QA results: 11/11 pages PASS (visual), 10/10 flows PASS (UX audit), 0 issues.

Seed data caveat: This review used demo-w1 seed data (51 findings, 105 entities, 10 workloads). Production environments will likely have larger datasets, which would amplify the readability issues described — particularly on table-heavy pages like Findings and Entities.


Executive Summary

The v0.2 UI is functionally solid — all pages render, navigation works, data flows correctly, accessibility passes. The design system is consistent and the progressive disclosure pattern (Overview → Cluster → Paths → Detail) is well-executed.

However, the UI currently serves analysts better than CISOs. The product specs (Clarity UX spec, UX feedback docs, Authority Path concept review) define a clear CISO-first mental model that is only partially implemented. The biggest gaps are missing verdict sentences, missing evidence grades, and title framing that uses platform jargon instead of execution-determined language.


Method

  1. Built sv0-platform locally via docker compose up --build
  2. Seeded demo-w1 tenant (10 workloads, W1.1 full dataset)
  3. Ran scripts/visual-qa.ts (Playwright, 11 pages, headless Chromium)
  4. Ran scripts/ux-audit.ts (Playwright, 8 audit sections, 10 flows)
  5. Captured 26 screenshots across both suites
  6. Correlated each screenshot against Notion-synced product specs (4 UX feedback docs) and 3 existing product reviews (listed in related field above)

CISO Readability Spectrum

PageCISO-ReadablePrimary AudienceScreenshot
Overview / DashboardPartiallyCISO + Analystscreenshot
Data DomainsYesCISOscreenshot
IdentitiesYesCISO + Analystscreenshot
Execution ChainsPartiallyAnalystscreenshot
ExposuresPartiallyAnalystscreenshot
Authority Path DetailPartiallyAnalyst (best for CISO demos)screenshot
Cluster DetailPartiallyAnalystscreenshot
FindingsNoAnalystscreenshot
EntitiesNoAnalystscreenshot
Graph ExplorerNoAnalystscreenshot
Settings / Syncs / TemporalN/AOperator

Page-by-Page Analysis

Overview Dashboard

Overview Dashboard showing hero tiles with 29 Authority Paths and 19 Executed Paths with Invalid Ownership, plus Top Risk Clusters

What renders: Title "Autonomous Authority Surface", two hero tiles (29 Authority Paths, 19 Executed Paths with Invalid Ownership), four stat cards (Active Autonomous 5, Dormant Authority 2, Autonomous Workloads 7, Operator-Assisted 3), Top Risk Clusters section with cards (Orphaned + Sensitive P0, Orphaned + Sensitive + LLM P0, Unbound + Sensitive P0, LLM Egress P1).

Spec RequirementCurrent UIStatus
Title: "Observed Autonomous Execution (30d)""Autonomous Authority Surface"Gap — too abstract
Hero tile 1: Total executions (big number) + deltaShows path count (29) not execution countGap — wrong metric promoted
Top risk clusters with verdict sentenceCards show path counts + domain tags, no verdictGap — missing verdict sentence
Functional cluster namesUses attribute-style names ("Orphaned + Sensitive")Gap — spec says use functional names
P0/P1 priority badgesPresentAligned
"+N new paths (30d)" trendPresent on cluster cardsAligned

Gap detail — verdict sentences: The Clarity spec prescribes each cluster card should include a sentence like:

"13 autonomous paths exercised Finance/HR/Customer-scoped authority and invoked external endpoints 681 times in the last 30 days — all under orphaned ownership."

Current: Just "13 Paths / 681 Observed runtime executions (30d) / 3 identities / 4 workloads."

The data to compose verdict sentences is already present on each card — this is a rendering change, not a data change.


Cluster Detail (Authority Paths filtered by cluster)

Cluster Detail showing Orphaned + Sensitive filter with 13 authority paths, contextual banner, and path table

What renders: Blue contextual banner explaining the cluster ("Authority paths with no active owner that reach sensitive or restricted data domains"), summary stats (13 paths, 681 executions/30d, 13 lack valid ownership), table of authority paths with 9 columns.

Spec RequirementCurrent UIStatus
Contextual cluster bannerPresent — plain English explanationAligned
"N lack valid ownership" in redPresentAligned
Authority path table columnsAll 9 present (ID, Path, Executions, Last Exec, Findings, Ownership, Egress, Status, First Seen)Aligned
Bold name and execution count columnsRegular weightGap — should be bold per spec
Evidence grade indicator (A/B/C)Not presentGap

The banner at the top of this page is the best CISO-facing element in the entire UI — it translates technical state into a risk statement. This pattern should be replicated on other pages.


Authority Path Row Expanded

Authority Path row expanded showing VIA ROLES, SOURCE SYSTEM, and FINDING TYPES chips

What renders: Inline expansion showing VIA ROLES (sql_clinical_reader, sql_admin_reader), SOURCE SYSTEM (Entra), FINDING TYPES (scope drift, orphaned ownership, reachable sensitive domain, llm egress) as chips. "View details" link.

This is correctly scoped as analyst drill-down. Progressive disclosure pattern works well — expand without leaving the page, then navigate to full detail via "View details."


Authority Path Detail

Authority Path Detail showing execution flow diagram, risk condition cards with durations, and Create ticket button

What renders: Header with path name + plain-English description ("Autonomous authority path actively executing against customer data under orphaned ownership"), visual flow diagram (workload → identity → connection → resource with RUNS_AS / CALLS / REACHES edge labels), active risk conditions cards (scope drift since 11d, invalid owner since 45d, sensitive data access since 95d, LLM egress since 95d), execution metrics, "Create ticket" button.

Spec RequirementCurrent UIStatus
Execution path diagram (dominant, above fold)Present — flow diagram with color-coded nodesAligned
Active risk conditions stripPresent — cards with "since Xd" durationsAligned
Runtime activity (30d executions big number)Present but not visually dominantGap — should be larger
Ownership decomposition by boundary (automation owner, SP owner, app reg owner)Shows ownership but decomposition unclearGap
Evidence grade indicatorNot presentGap
"Create ticket" buttonPresentAligned
Plain-English header descriptionPresentAligned

This page is the strongest CISO-facing artifact in the platform. The visual flow diagram makes abstract graph relationships tangible. The risk condition cards with duration create urgency. This should be the primary page promoted for executive demos and the first candidate for PDF/share export.


Exposures

Exposures table showing 23 workloads with severity, sensitive domains, and binding status

What renders: Table of 23 workloads with columns: Workload (with source badge), Findings, Severity, Sensitive Domains, Binding.

CISO assessment: Partially readable. The red "critical" severity badges are immediately alarming. Source badges (ServiceNow, Foundry, Entra) help with context. However, the "Binding" column (Bound/Unbound) is cryptic without explanation. All 23 rows showing "critical" reduces the signal — if everything is critical, the classification loses meaning on this page.

Recommendation: Add summary bar ("6 of 23 workloads are Unbound — operating without verified identity binding"), add tooltip on "Binding" column header.


Findings

Findings table showing 51 findings with severity badges, type, truncated descriptions, and status

What renders: Flat table of 51 findings with columns: Severity, Type, Description (truncated text with entity hashes), Source, Status, Detected.

CISO assessment: No. This is the least CISO-friendly data page. Descriptions contain hash identifiers (ea5a25fe...), all sources show "evaluator", all statuses show "active" — the uniformity removes visual triage value. 51 findings in a flat table with no grouping or visual summary is overwhelming. Production datasets with hundreds of findings would amplify this problem significantly.

Spec alignment: The product specs say findings should be surfaced within the cluster → path drill-down flow, not as a standalone flat table. The Findings column in the paths table and the risk conditions on the path detail already handle this correctly. This standalone page is analyst territory.

Recommendation: Consider demoting this page from primary nav to an analyst sub-section, since the data is already surfaced effectively in the cluster → path drill-down. If retained as a top-level page, add grouping by finding type with counts per severity, replace hash IDs with human-readable names, and add a summary chart at the top.


Data Domains

Data Domains showing 7 domain cards with resource counts and sensitivity classification

What renders: Card layout showing 7 domains (Finance, Customer, HR, IT Operations, Engineering, Security, Identity) with resource counts, sensitivity classification (restricted/confidential), and resource name lists.

CISO assessment: Yes. This is the most naturally CISO-readable page. CISOs understand data classification (restricted vs confidential) intuitively. Domain names map to business functions. Resource names (Oncology_Patient_Histories, Billing_Payment_Methods) convey real-world meaning.

Recommendation: Add "Reached by X authority paths" count to each domain card to show exposure. Add warning badge for domains involved in active findings.


Execution Chains

Execution Chains table showing 6 chains with egress, ownership, and sensitivity badges

What renders: Compact table of 6 chains with: Name, Destination, Egress (external/internal/llm badges), Ownership (owned/orphaned/ambiguous), Max Sensitivity, Entities, Last Seen.

CISO assessment: Partially readable. The badge color-coding for Egress (red external, green internal, yellow llm) is effective. "Ownership: orphaned" is immediately concerning. However, what an "execution chain" actually is requires explanation.

Recommendation: Add subtitle explaining execution chains, add composite "Risk Level" column synthesizing egress + ownership + sensitivity.


Graph Explorer

Graph Explorer full view showing 105 nodes with entity type filter sidebar

Graph Explorer focus mode showing readable node labels and edge annotations

CISO assessment: No. The full 105-node view is unreadable at default zoom — node labels are illegible. This is correctly scoped as an analyst exploration tool and the Notion docs do not prescribe it for CISOs.

Note: The focus mode (second screenshot) is dramatically more readable. Edge labels (OWNED_BY, HAS_ROLE, GRANTS, RUNS_AS) become visible and create a readable narrative. Consider defaulting the graph to a "top risk paths" preset rather than showing all 105 nodes.


Identities

Identities table showing 10 service identities with source badges and status

CISO assessment: Yes. Only 10 rows, descriptive names (svc-hr-sync, svc-audit-export), source badges. A CISO can immediately see: "10 service identities, split between Entra and ServiceNow, all active."

Recommendation: Add "Findings" count column to show which identities are problematic. Add "Owner" column for accountability.


Entity Detail

Entity Detail page for sn-int-user-hr-sync showing Properties, Graph, Timeline, Ownership, and Findings tabs

CISO assessment: Partially. The entity description is clear ("ServiceNow integration user for HR data sync via Entra SP client credentials"). The Findings tab with red "1" badge draws attention. But raw properties (client id, identitySubtype) are technical.

Note: The breadcrumb uses a hash ID (29283a22a265e3a5c24d8325) instead of the entity name — this should display the human-readable name.


Operator Pages (Settings, Syncs, Temporal)

Settings page with tenant configuration and sync history Syncs page showing 3 completed entra_servicenow syncs Temporal Compare page with entity search field

These are correctly scoped as operator/analyst tools. Not CISO-facing. The Temporal Compare page has a notable UX issue: it's a dead end without suggestions — no pre-populated entities, no "recently changed" prompts.


Critical Gaps (Sorted by CISO Impact)

1. Missing Verdict Sentences on Cluster Cards

Spec: Each cluster card must include a composable sentence:

"<N> autonomous paths exercised <Domain>-scoped authority and invoked <Endpoint Type> <X> times in the last 30 days."

Current: Path counts and domain tags only. A CISO must mentally assemble meaning.

Fix effort: Low — data already present on each card (path count, execution count, domains). This is a template rendering change.

2. Missing Evidence Grades (A/B/C)

Spec: The execution evidence feasibility study recommends visible grades:

  • Grade A — Confirmed execution (deterministic proof from logs)
  • Grade B — Inferred execution (temporal correlation)
  • Grade C — Standing authority only (no execution evidence)

This is the platform's competitive differentiator ("we show what DID execute, not what COULD") and it is not visible anywhere in the UI yet.

Fix effort: Medium — requires the evidence grade materializer (planned in the implementation plan).

3. Dashboard Title Framing

Spec: The Clarity spec and UX feedback docs use execution-determined language — e.g., "Observed Autonomous Execution (30d)."

Current: "Autonomous Authority Surface" — sounds abstract rather than execution-determined.

Suggestion: Align the dashboard title with the spec's execution-determined framing. The exact wording should be iterated with the product team, but the direction is clear: foreground "observed execution" rather than "authority surface."

Fix effort: Trivial — text change only.

4. Hero Metric: Execution Count, not Path Count

Spec: Tile 1 should be total executions (big number, execution-determined). Tile 2 should be total executed paths.

Current: Tile 1 shows path count (29). Execution count exists in cluster cards (681, 663, etc.) but is not promoted to the top level.

Fix effort: Low — aggregate execution count from API and display as hero tile.

5. Missing Trend Deltas on Hero Metrics

Spec: "+/- vs prior 30d" on key metrics.

Current: Cluster cards show "+9 new paths (30d)" but hero tiles have no trend.

Fix effort: Low-Medium — requires posture snapshot comparison (data exists in posture_snapshots collection).

6. Ownership Decomposition by Boundary

Spec: Path detail should show three distinct ownership roles:

  • Automation/agent owner (business owner)
  • Service principal owner (runtime identity)
  • App registration owner (config identity)

Current: Shows ownership but unclear whether it decomposes by these three boundaries.

Fix effort: Medium — requires ownership boundary mapping in the evaluator.


What Already Works (Aligned with Spec)

These elements should be preserved and replicated:

  1. Cluster contextual banner — Plain-English risk statement when filtering by cluster
  2. Authority Path Detail flow diagram — The strongest CISO artifact; makes graph relationships tangible
  3. Risk condition cards with "since Xd" — Creates urgency and accountability
  4. P0/P1 priority badges — Immediately recognizable severity
  5. Data Domains card layout — Natural business language, CISO-intuitive
  6. Progressive disclosure flow — Overview → Cluster → Paths → Detail
  7. "Create ticket" button — Enables CISO-to-analyst workflow
  8. Source system badges — Color-coded origin identification
  9. "+N new paths (30d)" trend indicators on cluster cards

Recommendations for Next Iteration

PriorityChangeEffortImpact
1Add verdict sentences to cluster cardsLowHigh — immediate CISO comprehension
2Align dashboard title with spec's execution-determined framingTrivialHigh — frames the product narrative
3Promote total execution count as hero tileLowHigh — execution-determined positioning
4Add evidence grade indicator (A/B/C) to authority path rowsMediumHigh — competitive differentiator
5Add trend deltas to hero metricsLow-MediumMedium — shows posture direction
6Decompose ownership by boundary in path detailMediumMedium — accountability clarity
7Replace hash IDs in breadcrumbs with entity namesTrivialLow — polish
8Add "Risk Paths" preset to Graph ExplorerLowLow — reduces graph overwhelm

QA Test Results Reference

Both QA suites ran against Docker build on localhost:8080 with demo-w1 tenant.

Visual QA (11 pages)

PageStatusLoad (ms)
DashboardPASS633
ExposuresPASS635
FindingsPASS707
EntitiesPASS673
IdentitiesPASS605
Data DomainsPASS605
Execution ChainsPASS607
Graph ExplorerPASS647
SyncsPASS618
Temporal ComparePASS624
SettingsPASS596

Navigation flow: 7/7 sidebar links correct.

UX Audit (10 flows)

FlowStatusDuration
First-Run ExperiencePASS7.6s
Overview → Cluster DetailPASS7.9s
Authority Paths → Filter → Expand → DetailPASS6.5s
Graph Explorer → Click → FocusPASS8.1s
Identities → Entity DetailPASS4.8s
Settings PagePASS2.7s
Interaction DesignPASS4.3s
Visual ConsistencyPASS7.4s
AccessibilityPASS9.1s
Error ScenariosPASS1.7s

Performance Metrics

PageLoad (ms)Network ReqsFailedConsole ErrorsDOM Nodes
Overview2172500219
Clusters2126400192
Authority Paths2133400863
Identities2111400244
Data Domains2116400158
Graph Explorer36315001803
Settings2111400123

Implementation Status

Updated: 2026-03-08

The 8 prioritised recommendations from this review were implemented across two platform PRs:

sv0-platform PR #16 — CISO Readability Tier 1 (executive-facing UI)

Addressed recommendations:

  • #1 Missing verdict sentences on cluster cards — Implemented
  • #3 Dashboard title framing — Implemented (titles now use execution-determined language)
  • #4 Hero metric: execution count, not path count — Implemented
  • #5 Missing trend deltas on hero metrics — Implemented

sv0-platform PR #17 — CISO Readability Tier 2 (enriched table views)

Addressed recommendations:

  • #2 Missing evidence grades (A/B/C) — Implemented
  • #6 Ownership decomposition by boundary — Implemented
  • Table column enrichment across Findings, Entities, and Authority Paths views

Deferred

The two remaining gaps identified in the review are tracked separately:

  • Execution count as primary sort metric — being addressed in Plan C (Clarity UX Restructure)
  • Authority Path Detail flow diagram enhancements — tracked in sv0-platform #40