Files
git.stella-ops.org/docs/modules/ui/architecture-rework.md

12 KiB

UI Rework Architecture - Release Control Plane

Ownership: UI Guild, Platform Team Status: Planned Related: Current UI Architecture, Wireframes, Migration Map

This document defines the target UI architecture for Stella Ops as an evidence-based release control plane with hybrid reachability as a first-class gate and explanation layer.


0) Vision Summary

The current UI tells users "scanner + admin console." The new UI must communicate:

  1. "What is deployed where" (by digest, per environment/target)
  2. "What is allowed to ship next" (promotion requests + approvals)
  3. "Why it is allowed/blocked" (policy gates + reachability evidence)
  4. "Where the evidence is" (one-click proof chain and export)

Everything else (vuln explorer, SBOM graph, VEX hub, feeds, ops health) is supporting detail.


1) New UX Mental Model

1.1 Core Objects (first-class nouns everywhere)

Object Description
Release Bundle of component-to-digest mappings (immutable identity)
Environment Dev/QA/Staging/Prod (policies, windows, approvals)
Promotion Request to move a Release to an Environment
Deployment Execution instance (workflow run against targets)
Evidence Packet Signed bundle of inputs/outputs of a decision/run

1.2 Core Jobs (UI must optimize for these first)

  1. Ship a release: create -> request promotion -> approve -> deploy
  2. Explain/justify a decision: why allowed/blocked + evidence
  3. Operate with confidence: drift, CVE updates, replay, audit export

2) Information Architecture

2.1 Current Top-Level Nav (scanner-centric)

HOME / ANALYZE / TRIAGE / POLICY / OPS / NOTIFY / ADMIN

2.2 New Top-Level Nav (release control plane)

CONTROL PLANE / RELEASES / APPROVALS / SECURITY / EVIDENCE / OPERATIONS / SETTINGS

2.3 Navigation Mapping

New Section Contains Replaces
Control Plane Pipeline overview, Action Inbox, Pending Promotions, Drift/Risk Home dashboard
Releases Release list, Release detail, Environment detail Release Orchestrator (hidden)
Approvals Approval inbox, Approval detail Release Orchestrator approvals
Security Overview, Findings, Vulnerabilities, SBOM Graph, VEX, Exceptions Analyze + Triage + VEX Hub
Evidence Packets, Proof Chains, Replay/Verify, Export, Audit Bundles Scattered evidence views
Operations Orchestrator, Quotas, Dead-letter, SLO, Health, Feeds, Scheduler Ops/* + Scheduler
Settings Integrations, Trust, Admin, Notifications, Policy Governance Console/Admin + scattered config

3) Shell & Layout Architecture

3.1 Shell Blueprint

+------------------------------------------------------------------------------+
| Stella Ops   [Global Search: release|digest|CVE|env]   [Tenant] [User]       |
| Offline: OK | Feed Snapshot: 2026-01-15 | Policy: v3.1 | Evidence: ON        |
+---------------+--------------------------------------------------------------+
| CONTROL PLANE | Breadcrumb: Section > Page                                   |
| RELEASES      |                                                              |
| APPROVALS     |  <router-outlet>                                             |
| SECURITY      |                                                              |
| EVIDENCE      |                                                              |
| OPERATIONS    |                                                              |
| SETTINGS      |                                                              |
+---------------+--------------------------------------------------------------+

3.2 Shell Components

Component Responsibility
AppShellComponent Top-level layout with topbar + sidebar + outlet + overlay hosts
AppTopbarComponent Global search, tenant context, status chips, user menu
AppSidebarComponent Left navigation rail with nav groups and items
BreadcrumbComponent Context-aware breadcrumbs from router data
GlobalSearchComponent Unified search across releases, digests, CVEs, environments
ContextChipsRowComponent Offline status, feed snapshot, policy baseline, evidence mode

4) Folder Structure (Angular 17+ Standalone)

src/app/
  core/                     # auth, api client, guards, nav config, app init
  layout/                   # app shell, sidebar, topbar, page scaffolding
  shared/
    ui/                     # design system primitives (buttons, chips, tables)
    domain/                 # domain widgets (digest chip, gate badges, evidence link)
    overlays/               # drawers/modals (evidence drawer, witness drawer)
    pipes/                  # formatting
    util/                   # helpers, comparators, trackBy fns
  features/
    control-plane/          # / - Control Plane Overview
    releases/               # /releases, /releases/:id
    approvals/              # /approvals, /approvals/:id
    environments/           # /environments, /environments/:id
    deployments/            # /deployments, /deployments/:id
    security/               # /security/*
    evidence/               # /evidence/*
    reachability/           # /witness/:id
    operations/             # /operations/*
    settings/               # /settings/*

5) Shared Domain Widgets (The Moat UI)

These components encode Stella's differentiators and must be consistent everywhere.

5.1 Digest Identity

Component Inputs Behavior
DigestChipComponent digest, label?, variant Short digest display, copy on click, full on hover
BundleDigestHeaderComponent releaseId, bundleDigest, createdAt, sourceRef Release identity block

5.2 Gate System

Component Inputs Behavior
GateBadgeComponent state, label PASS/WARN/BLOCK badges
GateSummaryPanelComponent gates[], policyRef, snapshotRef Compact gate list with drill-down
GateExplainDrawerComponent gateRunId K4 lattice explanation, rule hits, evidence

5.3 Evidence UX

Component Inputs Behavior
EvidenceLinkComponent evidenceId, type, verified, signed Consistent evidence link
EvidencePacketSummaryComponent EvidencePacketHeaderVM Who/What/Why/How/When audit block
ProofChainLinkComponent subjectDigest Standard proof chain entry

5.4 Reachability Witness

Component Inputs Behavior
ReachabilityStateChipComponent state, confidence Reachable/Unreachable/Uncertain + confidence
WitnessPathPreviewComponent path[], guards, deterministic Call path preview with drill-down
WitnessViewerComponent witnessId Full witness page with exports and replay

6) Flagship Pages

6.1 Control Plane Overview (/)

Goal: Answer in one screen: what's deployed, what's pending, what changed, what needs attention.

Components:

  • EnvironmentPipelineWidgetComponent - Dev -> QA -> Staging -> Prod visualization
  • ActionInboxWidgetComponent - Pending approvals, blocked promotions, failed deployments
  • DriftRiskDeltaWidgetComponent - CVE updates, feed staleness, config drifts
  • PendingPromotionsTableComponent - Release promotions waiting for action

6.2 Release Detail (/releases/:releaseId)

Goal: One flagship screen tying promotion + gates + reachability + evidence + proof chain.

Tabs:

  • Overview (deployment map, gate summary, security impact, latest evidence)
  • Components (digest inventory)
  • Gates (detailed policy evaluation)
  • Promotions (promotion history)
  • Deployments (deployment runs)
  • Evidence (linked evidence packets)
  • Proof Chain (full proof chain viewer)

6.3 Approval Detail (/approvals/:approvalId)

Goal: Everything needed to make a decision without navigating away.

Panels:

  • Diff-first panel (what changed)
  • Gates panel (expandable gate results)
  • Decision panel (approve/reject/comment)
  • Reachability Witness panel (the moat)
  • Evidence quick panel

6.4 Evidence Packet Viewer (/evidence/:evidenceId)

Goal: Evidence as structured "who/what/why/how/when" record + bundle contents + verify.

Sections:

  • Summary (audit-friendly header)
  • Contents (SBOM, verdict, witness slice, VEX, attestations)
  • Verification (signature + Rekor inclusion proofs)

7) State Management

7.1 Signal Store Pattern

Each major page/container has a dedicated store service:

@Injectable()
export class ReleaseDetailStore {
  private state = signal<ReleaseDetailState>({ ... });

  release = computed(() => this.state().release);
  gateSummary = computed(() => this.state().gateSummary);

  load(releaseId: string) { /* triggers effects + sets loading/error */ }
  refresh() { /* re-runs queries */ }
  requestPromotion() { /* command method */ }
}

7.2 Cross-Cutting Stores

Store Responsibility
AppContextStore Tenant, user, offline mode, feed snapshot, evidence mode
GlobalSearchStore Query -> aggregated results across types
OverlayStore Open/close drawers (evidence, witness, gate explain)

8) Overlays (Drawers/Modals)

Essential for "small pages, deep drill-down" requirement:

Overlay Purpose
EvidencePacketDrawerComponent Opens from anywhere; condensed evidence view
WitnessDrawerComponent Preview witness path + quick export + open full
GateExplainDrawerComponent K4 lattice reasoning + rule hits + evidence anchors
CreateReleaseModalComponent New release creation flow
RequestPromotionModalComponent Promotion request flow
RollbackModalComponent Rollback confirmation
RequestExceptionModalComponent Exception request flow

9) UX Contracts

9.1 Gate State Presentation

State Badge Color
PASS [PASS] Green
WARN [WARN] Amber
BLOCK [BLOCK] Red

Always show with one-line reason.

9.2 Reachability State Presentation

State Display
Reachable State + Confidence + Witness link
Unreachable State + Confidence (0.90+)
Uncertain State + Confidence + "why uncertain" + resolution hints

9.3 Digest Visibility

  • Show short digest everywhere (sha256:abc...123)
  • Full digest on hover/copy
  • Copy buttons for operational fields

9.4 Evidence Traceability

  • Policy baseline version shown where decisions are made
  • Feed snapshot version shown where decisions are made
  • "Open Evidence" and "Open Proof Chain" always one click away

10) Implementation Priority

Phase 1 (Highest ROI)

  1. Make / the Control Plane Overview (pipeline + inbox + drift)
  2. Consolidate Settings (stop configuration fragmentation)
  3. Make Approvals evidence-first with reachability witness (moat on display)

Phase 2 (Core Product)

  1. Shell & navigation redesign (left rail)
  2. Releases feature (list + detail flagship)
  3. Evidence unification

Phase 3 (Polish)

  1. Security consolidation (merge Analyze + Triage)
  2. Environments & Deployments features
  3. Route migration & legacy redirect telemetry


Last updated: 2026-01-18