Stella Ops Web UI information architecture
Status: Current source-aligned reference (2026-07-13)
This document describes the operator-visible navigation, role paths, and action boundaries of the Stella Ops Web console. Source code remains authoritative when this document and the implementation differ.
Authorities
- Sidebar grouping and labels:
NAVIGATION_GROUPS - Navigation forcing tests:
navigation.config.spec.ts - Router families and compatibility redirects:
app.routes.ts - Route inventory forcing test:
ux-route-inventory.spec.ts - Shared navigation/route access and persona profiles:
route-access.ts - Web scope mirror:
scopes.ts - Canonical issued-scope catalog:
StellaOpsScopes.cs - Role and ABAC intent: Stella Ops user roles
Navigation model
The rail presents five mission pillars in this order. A router family is not automatically a rail destination: app.routes.ts owns resolvability, while NAVIGATION_GROUPS owns what the operator sees. Contextual and compatibility routes may therefore remain reachable without creating another first-level menu item.
Home
└─ Dashboard
Vulnerabilities
├─ Exposure
├─ Images
└─ Intelligence
Deployment
├─ Releases
├─ Promotions
└─ Environments
Proof
├─ Chain
├─ Estate
└─ Compliance
Operate
├─ Operations
├─ Connections
├─ Access
└─ Settings
Every pillar stays within the four-destination first-level limit enforced by navigation.config.spec.ts. Removing a duplicate door does not remove its owner route or valid deep links.
Pillars, destinations, and owner surfaces
Home
| First-level destination | Route | Purpose | Access |
|---|---|---|---|
| Dashboard | / | Persona- and scope-filtered daily health, readiness, and onboarding overview. | Authenticated shell; cards remain scope-filtered. |
Dashboard is the overview, not an owner for release, security, proof, or administration mutations. Its cards hand off to the owning destination with the current subject and scope context.
Vulnerabilities
| First-level destination | Route | Owner and contextual surfaces | Navigation visibility |
|---|---|---|---|
| Exposure | /security/exposure | Action-led lenses for reachable risk, CVEs, images, releases, environments, and open work. Vulnerability and finding details remain contextual routes. | Any of findings:read, vuln:view, advisory:read. |
| Images | /security/image-inventory | Cross-registry scan coverage and verdict posture. An image opens the existing Image Security dossier at /security/images. | Exact registry:read; scan and configuration scopes do not substitute for inventory read. |
| Intelligence | /security/intelligence | Read-oriented feed freshness, distro, VEX/trust, and mirror coverage. Source configuration remains under Operate > Connections or Operations. | Any of advisory:read, vex:read. |
Exposure is the canonical risk-work entry. Older Risk Overview, Vulnerability Database, Findings Explorer, and Triage Queue doors are represented as Exposure lenses or contextual routes rather than parallel rail entries.
Advisory & VEX Sources preserves a read-only Mirror view for advisory:read. Mirror domain creation, configuration, credential regeneration, and deletion require the backend-aligned integration:write or integration:operate claim at both route and action boundaries. VEX statement creation is not exposed: VexHub has no authenticated statement-create endpoint, so /ops/policy/vex/create redirects to search until that server contract exists.
Deployment
| First-level destination | Route | Owner and contextual surfaces | Navigation visibility |
|---|---|---|---|
| Releases | /releases | Release library. Children: My services (/developer/services), Components (/releases/components), and release-content Bundles (/releases/bundles). | Any of release:read, release:write, release:publish; child gates are narrower. |
| Promotions | /releases/promotions | Gate, approve, and ship flow. Children: Approvals (/releases/approvals), Deployments (/releases/deployments), and Gate policies (/ops/policy/packs). | Any of release:read, release:write, release:publish, orch:read, orch:operate, policy:read. |
| Environments | /environments/overview | Deployed/runtime terrain and gate status. Topology & hosts (/ops/platform-setup) owns environment, target, host, and agent setup. | Any of orch:read, orch:operate. |
The same destinations reorder for the active persona; scope gates do not change. Operations and Security lead with Promotions, while Developer, Compliance, and Overview lead with the release library. Environments remains the third door.
Proof
| First-level destination | Route | Owner and contextual surfaces | Navigation visibility |
|---|---|---|---|
| Chain | Parent shelf | Chain of Custody (/evidence/custody), Verify (/evidence/verify), Proof Chains (/evidence/proofs), and Audit Trail (/ops/operations/audit). Audit tabs use tab=all-events, timeline, correlations, exports, or bundles; the exports and bundles tabs are visible and mounted only with export.viewer, so the shell never eagerly issues Export Center reads for a timeline-only session. | Per-child evidence, audit, release, signing, VEX, or verify gates; there is no all-scopes group gate. |
| Estate | /evidence/estate | Deployed version by environment crossed with evidence posture. Cells hand off to Chain of Custody with a subject query value. | Any of release:read, release:write, release:publish, orch:read. |
| Compliance | /compliance | Compliance cockpit with distinct routes /compliance/nis2, /compliance/dora, and /compliance/cra; also cross-lists the Transparency ledger (/setup/trust-signing/transparency, ui.admin). Legacy /assurance/* redirects here (c10 R1). | Any of policy:read, policy:audit, notify.viewer, findings:read. |
Proof distinguishes three questions: trace one record through Chain, inspect deployed proof coverage in Estate, and review regulator-facing coverage in Compliance. Audit Trail is the evidence audit surface even though its owner route remains under /ops/operations; it is not the same as Operate > Access > Admin activity or Settings > Trust Center > Audit.
Verify is an active deterministic read operation: its route requires replay:read. It reruns a recorded gate decision from sealed evidence and reports whether the result reproduces. Explicit durable replay token, bundle, or snapshot production remains gated by replay:write.
Operate
Operate is the quiet back-of-house pillar. It groups owner workspaces into four questions and pushes administration gates to the relevant child so non-admin operators retain their lanes.
| First-level destination | Owner children and routes | Access summary |
|---|---|---|
| Operations | Schedules (/ops/operations/jobengine), Feeds & Vuln Data (/ops/operations/feeds-airgap), Scripts (/ops/scripts), Health (/ops/operations/doctor), Asset Inventory (/inventory). | Per-child orch:*, advisory/VEX read, ops.health, ui.admin, or graph:read. |
| Connections | Integrations (/setup/integrations) with Registries, Advisory & VEX, and Secrets children. | ui.admin. |
| Access | Tenants (/console-admin/tenants), Users (/console-admin/users), Roles (/console-admin/roles), Clients (/console-admin/clients), Tokens (/console-admin/tokens), Admin activity (/console-admin/audit), and Branding (/console-admin/branding) — the console-admin shell’s tabs, each a direct Access door (the “Tenants & Access” wrapper that duplicated its first child’s route was dissolved, c12 R1); Identity Providers (/setup/identity-providers). The shell page h1 is “Tenants & Access”. | ui.admin for the tenant/user/role/client/token/activity/branding doors; platform.idp.admin for Identity Providers. |
| Settings | Trust Center (/setup/trust-signing) and Telemetry Federation (/ops/operations/federation). | ui.admin for Trust Center; the matching telemetry participation or federation read/write scopes for federation pages. |
Security Data, Tenant & Branding, System Settings, and Platform Status are not duplicate first-level doors. Their valid functionality is owned by Feeds & Vuln Data, Tenants & Access, User Preferences/Appearance, or Health respectively; compatibility routes remain a router concern.
Role-oriented paths
Stella Ops authorizes with token scopes and backend ABAC, not a role name alone. The first four persona profiles below mirror PERSONA_ROUTE_MATRICES; they determine expected visibility, not an unconditional permission grant. Platform Access Administrator is a capability path governed by admin scopes rather than a fifth dashboard persona.
| User | Primary path | Expected actions | Mutation boundary |
|---|---|---|---|
| Executive Assurance Viewer | Home > Dashboard; Proof > Compliance, Estate, Chain/Audit/Verify; Deployment > Releases. | Review deployment, assurance, policy, finding, evidence, export, and audit posture; deterministically verify a recorded gate decision. | The profile is read-oriented and carries replay:read, but no replay production, vulnerability operation, release, policy, exception, or administration mutation scope. |
| Release Operations Steward | Home > Dashboard; Deployment > Promotions, Environments, Releases; Operate > Operations. | Compose/update releases, operate deployments, scan when needed, and inspect proof. | Profile includes release:write, orch:operate, and scanner:scan. Approve/reject still requires release:publish, which is not part of the base persona profile. |
| Security Risk Manager | Home > Dashboard; Vulnerabilities > Exposure, Images, Intelligence; Deployment > Promotions; Proof > Chain. | Investigate risk, browse tenant registry images, request scans, inspect VEX/advisories, simulate policy, and follow evidence. | Profile includes registry:read, vuln:investigate, scanner:scan, policy:simulate, raw-evidence vex:read, and the distinct VexHub statement-read claim vexhub:read; it does not include VexHub administration, registry administration, release:publish, exceptions:approve, or bypass scopes. |
| Service Release Contributor | Home > Dashboard; Deployment > Releases > My services; scoped Exposure and proof handoffs. | Select an owned service/digest, inspect scan/policy/findings, update an allowed environment or request promotion. | Requires release:write plus serviceIds, repositoryIds, imageNamespaces, environmentIds, maxEnvironmentType, and directUpdateAllowed. Backend checks repeat the service/environment/digest constraints. |
| Platform Access Administrator | Operate > Access, Connections, and Settings. | Manage tenants, users, roles, clients, tokens, branding, integrations, trust, and identity providers. | ui.admin opens Console Administration/integration/trust owners; Identity Providers specifically requires platform.idp.admin. Backend commands may require finer scopes and fresh authorization. |
Service contribution never implies broad operator, publisher, approver, bypass, or admin power. If directUpdateAllowed is false or the target is outside the user ABAC envelope, the UI must create an approval-required request or show why the action is unavailable.
Read visibility versus mutation authority
| Surface or action | Read/route visibility | Additional mutation authority |
|---|---|---|
| Approvals | /releases/approvals is visible with release:read. | Approve/reject requires release:publish, a valid decision state, and the decision reason/signing rules enforced by the surface and backend. Gate bypass is separate: release:gate-bypass. |
| Deployments | Deployment activity is readable with the release/orchestrator read envelope. | Operating a deployment requires orch:operate or the explicitly supported release:write path, plus backend policy/ABAC. |
| Scan now | Image/release context may be readable without scan authority. | Triggering a scan requires scanner:scan. |
| Images inventory | /security/image-inventory and its registry/image reads require registry:read. | Scan now still requires scanner:scan; Auto-scan configuration still requires integration:write. |
| Verify | Proof records may be readable through evidence scopes. | /evidence/verify requires replay:read; durable replay production requires replay:write. |
| Contributor update | My services requires the contributor scope profile. | release:write and all service/environment/digest ABAC checks; direct mutation additionally requires directUpdateAllowed=true. |
| Console Administration | Operate > Access is shown only for its child gates. | Console Administration requires ui.admin; Identity Provider mutation requires platform.idp.admin. |
Admin and ui.admin are guard wildcards in the Web route-access helper, but issued claims still come from the Authority catalog and backend endpoints remain the final authorization boundary.
Context, deep links, and Back behavior
Canonical owner pages must accept contextual handoffs without becoming duplicate menu doors. The shared context-route-state.ts defines the common contract:
returnTois an application-local absolute path. Values not starting with/, protocol-relative values beginning//, and values containing control characters are rejected.- Scope context uses
tenant/tenantId,region/regions,environment/environments,timeWindow, andstagequery keys. - View state may use
tab,panel,drawer,scope, orview. - Cross-pillar evidence handoffs use the documented subject passport:
/evidence/custody?subject=<URL-encoded canonical subject>. New producers usesubject; typeddigest/purl/releasekeys are compatibility inputs only. Owner details retain their path ids, and a source addsreturnToonly when it needs an exact Back destination. - Back follows a valid
returnTo; otherwise it returns to the target’s canonical owner list. Query merging must retain unrelated scope keys.
Current examples:
- Exposure -> vulnerability detail -> Chain of Custody carries the CVE in
subjectand preserves the originating Exposure lens inreturnTo. - Estate cells open
/evidence/custody?subject=...while retaining the active scope query. - Release and approval details build explicit
returnTovalues before handing off to findings, proof, or release-flow surfaces. - Audit sections use one owner route with a
tabquery, while Assurance framework lenses use distinct canonical routes rather than a framework query parameter. - Legacy route helpers preserve relevant query and fragment context when redirecting to a current owner route; new links should target the current route directly.
Canonical terminology
| Term | Meaning and placement |
|---|---|
| Dashboard | The Home overview. It summarizes and hands off; it does not own domain mutations. |
| Exposure | The Vulnerabilities work entry for reachable risk, lenses, and open work. Do not recreate separate Risk Overview or Triage Queue rail doors. |
| Approvals | Signed promotion decisions under Deployment > Promotions, not a top-level pillar. |
| Chain of Custody | The subject-level evidence trace under Proof > Chain. |
| Estate | Deployed version by environment crossed with evidence posture under Proof. |
| Verify | Deterministic gate replay from sealed evidence under Proof > Chain; a scoped verification action, not a generic evidence status label. |
| Compliance / Assurance | Compliance is the Proof destination; /assurance is its cockpit and framework route family. |
| Audit Trail | Evidence/audit records under Proof > Chain. Keep it distinct from Admin activity and Trust Center Audit. |
| Bundles | Under Deployment, release-content bundles; under Audit Trail, sealed evidence/audit bundles. Always qualify the context. |
Related documentation
- Web UI architecture
- Accessibility
- Component library
- Stella Ops user roles
- Historical v2 rewire package
