Console (Web UI) Guide

The Stella Ops Console is the web UI for CTO, DevOps, security manager, developer, auditor, and administrator workflows inside the customer/operator organization. It is built for fast triage and auditability: decisions link back to concrete evidence, and workflows continue to work in air-gapped deployments via Offline Kit snapshots.

This is a usage guide (what the Console does and how to operate it). For UI implementation architecture, see docs/modules/ui/architecture.md.

Scope

Out of scope: API shapes, schema details, and UI component implementation.

Primary User Paths

The Console should keep four role paths explicit:

UserConsole promisePrimary pages
CTOSee whether the intended software is deployed as expected and whether that state satisfies compliance posture.Dashboard, Assurance, Evidence, Audit, Release overview
DevOpsControl topology, promotion paths, deployments, and approval queues.Environments, Deployments, Releases, Approvals, Operations
Security managerReview findings and security risk that influence release gates.Security, Risk Overview, Image Security, Triage Queue, Advisory Sources, Policy audit
DeveloperUpdate or request updates for owned microservice Docker images in allowed environments.Developer services, image candidates, allowed environment updates, release request detail

The developer path must not be hidden inside admin or broad operator pages. Developers need a scoped view of owned services, candidate image digests, current deployed digests, scan/policy status, allowed environments, and promotion/update requests. The current Console route is /developer/services; it aggregates live Release Control deployments, releases, and security findings, filters by service/environment ABAC when those claims are issued, and only enables direct updates or approval requests that the backend will authorize.

See docs/product/user-roles.md for the canonical role boundaries. See docs/modules/ui/persona-workspace-gap-analysis.md for the current page-level gap analysis from the local console crawl.

Core Concepts

Console Appearance

Workspaces (Navigation)

The Console is organized into workspaces. Names vary slightly by build, but the intent is stable:

Developer Image Update Workflow

  1. Open Developer services or the service-specific release page.
  2. Select one owned microservice and review its current deployed digest by environment.
  3. Select a candidate image digest produced by CI/registry integration.
  4. Confirm scan, SBOM, reachability, and policy status.
  5. If the target environment permits developer self-service, submit the image update for that service/environment.
  6. If the target environment requires approval, create a promotion/update request for DevOps, security, or policy approvers.
  7. Review the resulting evidence and audit trail from the service page or release request detail.

Developer tokens must be constrained by tenant plus service/environment ABAC. A developer update action should never require ui.admin, broad orch:operate, release:bypass, policy:approve, or unrestricted release:publish.

Current implementation note: /developer/services can queue a real Release Orchestrator deployment only when the session includes explicit release:write, owned service claims, allowed environment claims, maxEnvironmentType, directUpdateAllowed=true, a non-blocking gate, and an immutable candidate digest. If the live release projection does not yet expose the newest image, the developer can paste the new sha256: digest into the candidate field; mutable tags still do not enable the action. If direct update is not allowed or a gate requires review, the page can create a developer update approval request through POST /api/v1/release-orchestrator/approvals/developer-requests when the service, environment, and digest ABAC checks pass. Release Orchestrator enforces the same rules server-side for both direct deployment creation and approval-request creation.

When no visible release matches the contributor token, My Services shows the effective service, repository, image-namespace, environment, ceiling, and direct-update claims that were actually used. It never substitutes tenant-wide data. The recovery state tells the contributor to have an access administrator align those identifiers and offers one real Scan an image action when the session can scan.

Developer block explanations distinguish missing ownership claims, missing immutable digests, stale scan/feed freshness, incomplete SBOM evidence, policy gates, and findings risk. The developer links into findings and SBOM inventory keep the same service context as a read-only filter, so remediation context is visible without exposing security-manager controls.

Developer-originated requests remain visible to operators without becoming operator power for the developer. /releases/approvals labels developer service updates separately from DevOps promotions, security exceptions, and policy gates. /releases/deployments exposes service, initiating developer, source type, and digest filters, and shows a read-only developer-originated request panel sourced from the live approvals API; approval actions remain outside the developer view unless the user also holds operator/approver scopes.

Tenant administrators assign this access from Setup > Identity & Access > Users by choosing role/service-release-contributor or the legacy role/release-developer bundle, then filling service IDs, repository IDs, image namespaces, environment IDs, environment ceiling, and direct-update policy. The form warns before combining service-release contribution with broad admin, operator, bypass, publisher, or policy-approver roles.

Common Operator Workflows

Review Assurance Packs

Open Proof > Compliance (/assurance) to review optional NIS2, DORA, CRA, and future framework packs. This route is the portfolio overview; each current framework opens as a distinct cockpit route rather than an in-page tab:

  1. Review the NIS2, DORA, and CRA readiness cards, then check the priority queue for blocked or unavailable packs.
  2. Use the pack matrix to compare enablement, owner, mode, export readiness, reporting readiness, and the primary review workspace.
  3. Open /assurance/nis2, /assurance/dora, or /assurance/cra from its readiness card or the Compliance sidebar children. Each cockpit shows framework-specific evidence workspaces, scoped readiness actions, evidence lanes, setup gaps, and pack details.
  4. Open a pack workspace only after confirming whether the blocker is Authority setup, ExportCenter readiness, or reporting handoff readiness. Use All frameworks in the cockpit header to return to the portfolio overview.
  5. Treat disabled packs as optional tenant setup choices, not failed compliance.

The Assurance page must keep customer/operator settings separate from sealed deployment posture, signing secrets, and legal certification claims. It may show live readiness and operator-owned configuration counts, but it must not label Stella Ops as NIS2, DORA, or CRA compliant.

Triage a Finding

  1. Open Findings. The default view is Active findings, not baseline review, so the page should immediately show scoped findings or an actionable empty state.
  2. If the selected tenant/region/environment has no rows, use the empty-state actions: scan an image, open the SBOM graph, review advisory sources, or view all tenant findings when rows exist outside the selected scope.
  3. Switch to Review only when comparing a scan against a baseline or investigating material changes between scans.
  4. Open a finding to review:
    • Verdict + “why” summary
    • Effective VEX status and issuer provenance
    • Reachability/impact signals (when available)
    • Policy explanation trace and the gate that produced the verdict
  5. Record a triage action (assign/comment/ack/mute/exception request) with justification.
  6. Export an evidence bundle when review, escalation, or offline verification is required.

See docs/VULNERABILITY_EXPLORER_GUIDE.md for the conceptual model and determinism requirements.

AI Remediation and Pull Requests

The AI Remediate panel provides automated remediation guidance and can create pull requests to fix vulnerabilities.

Opening the AI Remediate Panel:

  1. From a finding detail view, click AI Remediate.
  2. The panel generates remediation recommendations (upgrade, patch, mitigate, workaround).
  3. Review recommendations sorted by priority and effort level.

Creating a Remediation PR:

When SCM connections are configured:

  1. Select an SCM connection from the dropdown.
  2. Click Open PR to create a pull request with the recommended fix.
  3. Monitor progress with the loading indicator.
  4. On success, view the PR link, branch name, and CI status.

PR Status Display:

StatusBadgeDescription
DraftGrayPR created as draft
OpenGreenPR open for review
Review RequestedGreenReview explicitly requested
ApprovedBluePR approved
Changes RequestedYellowChanges requested by reviewer
MergedPurplePR merged
ClosedRedPR closed without merge

CI Status Indicators:

StatusColorDescription
PendingYellowCI checks queued
RunningYellowCI checks in progress
SuccessGreenAll CI checks passed
FailureRedOne or more CI checks failed
SkippedGrayCI checks skipped

When SCM Not Configured:

If no SCM connections are available, the panel shows a link to the Integrations Hub to configure GitHub, GitLab, or other SCM providers.

Error Handling:

ErrorDescriptionAction
No SCM connectionNo provider configuredConfigure in Integrations Hub
SCM auth failedAuthentication expiredRe-authenticate provider
Repository not foundRepo no longer accessibleVerify repository access
Branch conflictBranch already existsUse existing PR or delete branch
Rate limitedAPI rate limit exceededWait and retry
PR already existsDuplicate PRView existing PR

Remediation PR Settings:

Configure remediation PR behavior in Settings > AI > Remediation Pull Requests:

SettingDefaultDescription
Enable Remediation PRsOnAllow creating pull requests from AI suggestions
Attach Evidence CardOnInclude evidence card reference in PR description
Add AI Summary CommentOnPost AI-generated summary comment on the PR
Auto-assign ReviewersOffAutomatically assign default reviewers
Apply Default LabelsOnAdd configured labels to created PRs

Organization-Level Settings:

Some settings are controlled at the organization level:

Storage Key: stellaops.remediation-pr.preferences

Review VEX Conflicts and Issuer Trust

See docs/VEX_CONSENSUS_GUIDE.md for the underlying concepts.

Contextual Helper and Educational Empty States

Command Palette Help

Glossary Tooltips

Status Chip Guidance

Export and Verify Evidence Bundles

See docs/OFFLINE_KIT.md for packaging and offline verification workflows.

Export Evidence Cards (v1.1)

Evidence Cards are single-file exports containing SBOM excerpt, DSSE envelope, and optional Rekor receipt for offline verification.

To export an Evidence Card:

  1. Open an evidence pack from Findings or Runs workspace.
  2. Click the Export dropdown in the pack viewer header.
  3. Select Evidence Card for full export or Evidence Card (Compact) for a smaller file without full SBOM.
  4. The browser downloads a .evidence-card.json file.

Evidence Card contents:

Content types:

See docs/api/evidence-decision-api.openapi.yaml for the complete schema.

Grey Queue and Unknowns Triage

The Grey Queue surfaces observations with uncertain status requiring operator attention or additional evidence. This is distinct from the standard triage queue.

Grey Queue Panel Features:

Observation States:

StateBadge ColorDescription
PendingDeterminizationYellowEvidence incomplete; monitoring active
DisputedOrangeConflicting evidence; manual adjudication required
GuardedPassBlueAllowed with runtime guardrails
ResolvedGreenOperator has made a determination

Accessing the Grey Queue:

  1. Navigate to Findings > Grey Queue tab.
  2. Filter by observation state, priority band, or trigger type.
  3. Click an item to open the Grey Queue Panel with full details.
  4. Review conflicts and suggested next actions.
  5. Take a triage action (resolve, escalate, or defer) with justification.

Conflict Display:

Conflicts show the source disagreements:

See docs/VEX_CONSENSUS_GUIDE.md for conflict detection semantics.

Risk Line Display

The Risk Line is an always-visible summary bar in finding detail views showing reachability evidence at a glance.

Risk Line Sections:

SectionDisplayDescription
ReachabilityScore (0-100%) with progress barLikelihood that vulnerable code is reachable from application entry points
RuntimeBadge (Confirmed/Not Observed/Unknown/Pending)Whether runtime monitoring has observed the vulnerable code path executing
EvidenceRekor link with log indexTransparency log entry for verifiable evidence timestamp
MethodBadge (Hybrid/Runtime/Static/None)Analysis method used to determine reachability

Reachability Score Levels:

LevelScore RangeColorMeaning
High>= 70%RedStrong evidence of reachability; prioritize remediation
Medium30-69%AmberModerate evidence; may warrant investigation
Low< 30%GreenLow likelihood of reachability
UnknownGrayNo reachability analysis available

Runtime Status Badges:

StatusIconColorDescription
Confirmed[+]GreenRuntime traces observed execution through vulnerable path
Not Observed[-]YellowMonitoring active but path not observed in window
Pending[?]BlueAnalysis in progress
Unknown[–]GrayNo runtime monitoring data available

Evidence Link:

When evidence is anchored to a Rekor transparency log:

Graceful Fallbacks:

Trace Export

Export reachability call graphs for offline analysis or integration with other tools.

Export Formats:

FormatExtensionUse Case
GraphSON.graphson.jsonGraph databases (TinkerPop, JanusGraph)
JSON.trace.jsonGeneral purpose, human-readable
SARIF.sarifIDE integration, GitHub Code Scanning

To Export a Trace:

  1. Open a finding with reachability evidence.
  2. In the reachability panel, click Export.
  3. Select the desired format.
  4. The file downloads with a deterministic filename: {artifactDigest}_{findingId}.{format}

Export Contents:

Determinism Guarantee:

Exports use deterministic ordering:

AI Code Guard Badge

The AI Code Guard Badge displays scan results for AI-generated code in scan and PR views.

Badge States:

StateIconColorDescription
PassCheckGreenNo findings or all findings are low severity
ReviewWarningAmberWarnings requiring human review
BlockXRedCritical or high severity findings blocking release
ErrorDashGrayScan encountered an error
PendingSearchBlueScan in progress

Count Badge:

When findings exist, a count badge shows the total with severity-based coloring:

Accessibility:

The badge includes proper ARIA attributes:

Usage:

The badge appears in:

Binary Diff Explain Panel

The Binary Diff Explain Panel shows binary artifact comparison evidence in the evidence panel tabs.

Panel Sections:

SectionDescription
SummaryHash comparison, size delta, modification stats, confidence score
SectionsBinary sections with offset, size, type, and modification status
Symbol ChangesAdded/removed/modified symbols with addresses and size changes
FooterAnalysis timestamp and export button

Section Status:

StatusBorder ColorDescription
IdenticalNoneSection unchanged between versions
ModifiedAmberSection contents differ
AddedGreenSection exists only in head
RemovedRedSection exists only in base

Segment Types:

TypeBadge ColorDescription
codeBlueExecutable code section (.text)
dataPurpleWritable data section (.data)
rodataAmberRead-only data section (.rodata)
headerGrayFile headers
symbolGreenSymbol tables

Symbol Change Types:

TypeDescription
functionFunction/method symbol
variableData variable symbol
importImported symbol from external library
exportExported public symbol

Confidence Levels:

LevelScore RangeBadge
High>= 90%Green “High (95%)”
Medium70-89%Amber “Medium (78%)”
Low< 70%Red “Low (45%)”

Export:

Click Export to download the full binary diff analysis as JSON for offline review or integration with other tools.

Show More:

When sections or symbols exceed 5 items, a “Show More” button expands the full list. Click “Show Less” to collapse.

Runtime-Confirmed Call Graph

The reachability call graph highlights runtime-confirmed paths:

Legend:

KeyIconColorDescription
Runtime Confirmed[+]GreenEdge observed in runtime execution traces
Static Analysis[~]IndigoEdge inferred from static code analysis
Unknown[?]GrayEdge status not determined
Entry Point[>]BlueApplication entry point or public API
Vulnerable[!]RedLocation of vulnerable code

User Settings:

Runtime overlays and trace export can be toggled in Settings > Display Preferences:

Display Preferences

The Display Preferences panel allows users to customize triage and finding views. Settings are persisted to browser localStorage and apply immediately.

Access: Navigate to Settings > Display > Triage Display Preferences

Available Settings:

SettingDefaultDescription
Show Runtime OverlaysOnHighlight runtime-confirmed edges in call graphs
Enable Trace ExportOnShow GraphSON/JSON/SARIF export buttons in reachability panel
Show Risk LineOnDisplay the risk line summary bar in finding detail views
Show Signed Override IndicatorsOnDisplay DSSE badge and Rekor link for signed VEX overrides
Expand Runtime EvidenceOffExpand runtime evidence section by default

Graph Settings:

SettingDefaultRangeDescription
Max Graph Nodes5010-200Maximum nodes to render in call graph visualizations
Runtime Highlight StyleBothBold/Color/BothHow runtime-confirmed edges are highlighted

Storage Key: stellaops.display.preferences

Reset: Click Reset to Defaults to restore all settings to their default values.

Offline / Air-Gap Expectations

Setup Wizard

The Setup Wizard provides a guided interface for initial platform configuration and reconfiguration. It communicates with the Platform backend via /api/v1/setup/* endpoints.

Wizard Features

Wizard Steps

The wizard guides operators through these configuration areas:

StepCategoryRequiredDescription
DatabaseInfrastructureYesPostgreSQL connection and migrations
CacheInfrastructureYesValkey/Redis connection
VaultSecurityNoHashiCorp Vault, Azure Key Vault, or AWS Secrets Manager
Settings StoreConfigurationNoConsul, etcd, or PostgreSQL-backed configuration
RegistryIntegrationNoContainer registry connections
TelemetryObservabilityNoOTLP endpoint configuration

Using the Wizard

  1. Access the Setup Wizard from Admin > Configuration Wizard or during first-run.
  2. Complete required steps (Database, Cache) before optional integrations.
  3. Use Test Connection to validate credentials before applying.
  4. Review validation checks (Doctor diagnostics) for each step.
  5. Use dry-run mode to preview changes before committing.
  6. After completion, restart services to apply the configuration.

Determinization Configuration Pane

The Determinization Config Pane allows policy admins to view and edit grey queue settings.

Accessing the Configuration Pane:

  1. Navigate to Admin > Policy Configuration.
  2. Select the Determinization tab.
  3. Non-admins see read-only view; admins see an Edit button.

Configuration Sections:

SectionDescription
Reanalysis TriggersToggle events that trigger grey queue reanalysis
Conflict HandlingSet actions for different conflict types
Environment ThresholdsConfigure per-environment (dev/staging/prod) thresholds

Editing Configuration:

  1. Click Edit to enter edit mode.
  2. Modify trigger toggles, conflict actions, or thresholds.
  3. Server-side validation errors appear inline.
  4. Provide a change reason (required for audit trail).
  5. Click Save to apply changes.
  6. View change history in the Audit Log section.

Environment Threshold Presets:

EnvironmentMinConfidenceMaxEntropyEPSS Threshold
Development0.400.70.6
Staging0.600.50.4
Production0.750.30.3

Notes:

Reconfiguration

To modify existing configuration:

See docs/setup/setup-wizard-ux.md for detailed UX specifications and CLI parity.

Security and Access

Observability and Accessibility

Deploy and Install References

Detailed References

Operator-facing deep dives (Console):

UX and interaction contracts: