20 KiB
Stella Ops UI Structure - Part 5: Route Summary & Observations
1. COMPLETE ROUTE TABLE
1.1 Home & Dashboard Routes
| Route | Component | Location | Guards |
|---|---|---|---|
/ |
HomeDashboardComponent |
features/home/ | requireAuthGuard |
/welcome |
WelcomePageComponent |
features/welcome/ | - |
/dashboard/sources |
SourcesDashboardComponent |
features/dashboard/ | - |
1.2 Analyze Routes
| Route | Component | Location | Guards |
|---|---|---|---|
/findings |
FindingsContainerComponent |
features/findings/container/ | requireAuthGuard |
/findings/:scanId |
FindingsContainerComponent |
features/findings/container/ | requireAuthGuard |
/vulnerabilities |
VulnerabilityExplorerComponent |
features/vulnerabilities/ | requireAuthGuard |
/vulnerabilities/:vulnId |
VulnerabilityDetailComponent |
features/vulnerabilities/ | requireAuthGuard |
/graph |
GraphExplorerComponent |
features/graph/ | requireAuthGuard |
/lineage |
LineageGraphContainerComponent |
features/lineage/components/ | requireAuthGuard |
/lineage/:artifact/compare |
LineageCompareComponent |
features/lineage/components/ | requireAuthGuard |
/lineage/compare |
LineageCompareComponent |
features/lineage/components/ | requireAuthGuard |
/reachability |
ReachabilityCenterComponent |
features/reachability/ | requireAuthGuard |
/admin/vex-hub |
VexHubDashboardComponent |
features/vex-hub/ | requireAuthGuard |
/admin/vex-hub/search |
VexStatementSearchComponent |
features/vex-hub/ | requireAuthGuard |
/admin/vex-hub/search/detail/:id |
VexStatementDetailComponent |
features/vex-hub/ | requireAuthGuard |
/admin/vex-hub/stats |
VexHubStatsComponent |
features/vex-hub/ | requireAuthGuard |
/admin/vex-hub/consensus |
VexConsensusComponent |
features/vex-hub/ | requireAuthGuard |
/admin/vex-hub/explorer |
VexHubComponent |
features/vex-hub/ | requireAuthGuard |
/analyze/unknowns |
unknownsRoutes | features/unknowns-tracking/ | requireAuthGuard |
/analyze/patch-map |
PatchMapComponent |
features/binary-index/ | requireAuthGuard |
/scans/:scanId |
ScanDetailPageComponent |
features/scans/ | - |
/compare/:currentId |
CompareViewComponent |
features/compare/components/ | requireAuthGuard |
/cvss/receipts/:receiptId |
CvssReceiptComponent |
features/cvss/ | requireAuthGuard |
1.3 Triage Routes
| Route | Component | Location | Guards |
|---|---|---|---|
/triage/artifacts |
TriageArtifactsComponent |
features/triage/ | requireAuthGuard |
/triage/artifacts/:artifactId |
TriageWorkspaceComponent |
features/triage/ | requireAuthGuard |
/triage/audit-bundles |
TriageAuditBundlesComponent |
features/triage/ | requireAuthGuard |
/triage/audit-bundles/new |
TriageAuditBundleNewComponent |
features/triage/ | requireAuthGuard |
/exceptions |
TriageArtifactsComponent |
features/triage/ | requireAuthGuard |
/risk |
RiskDashboardComponent |
features/risk/ | requireAuthGuard |
1.4 Policy Routes
| Route | Component | Location | Guards |
|---|---|---|---|
/policy-studio/packs |
PolicyWorkspaceComponent |
features/policy-studio/workspace/ | requirePolicyViewerGuard |
/policy-studio/packs/:packId/editor |
PolicyEditorComponent |
features/policy-studio/editor/ | requirePolicyAuthorGuard |
/policy-studio/packs/:packId/yaml |
PolicyYamlEditorComponent |
features/policy-studio/yaml/ | requirePolicyAuthorGuard |
/policy-studio/packs/:packId/simulate |
PolicySimulationComponent |
features/policy-studio/simulation/ | requirePolicySimulatorGuard |
/policy-studio/packs/:packId/approvals |
PolicyApprovalsComponent |
features/policy-studio/approvals/ | requirePolicyReviewOrApproveGuard |
/policy-studio/packs/:packId/rules |
PolicyRuleBuilderComponent |
features/policy-studio/rule-builder/ | requirePolicyAuthorGuard |
/policy-studio/packs/:packId/explain/:runId |
PolicyExplainComponent |
features/policy-studio/explain/ | requirePolicyViewerGuard |
/policy-studio/packs/:packId/dashboard |
PolicyDashboardComponent |
features/policy-studio/dashboard/ | requirePolicyViewerGuard |
/orchestrator |
OrchestratorDashboardComponent |
features/orchestrator/ | requireOrchViewerGuard |
/orchestrator/jobs |
OrchestratorJobsComponent |
features/orchestrator/ | requireOrchViewerGuard |
/orchestrator/jobs/:jobId |
OrchestratorJobDetailComponent |
features/orchestrator/ | requireOrchViewerGuard |
/orchestrator/quotas |
OrchestratorQuotasComponent |
features/orchestrator/ | requireOrchOperatorGuard |
1.5 Ops Routes
| Route | Component | Location | Guards |
|---|---|---|---|
/sbom-sources |
SourcesListComponent |
features/sbom-sources/components/ | requireAuthGuard |
/sbom-sources/new |
SourceWizardComponent |
features/sbom-sources/components/ | requireAuthGuard |
/sbom-sources/:id |
SourceDetailComponent |
features/sbom-sources/components/ | requireAuthGuard |
/sbom-sources/:id/edit |
SourceWizardComponent |
features/sbom-sources/components/ | requireAuthGuard |
/ops/quotas |
quotaRoutes | features/quota-dashboard/ | requireAuthGuard |
/ops/quotas/tenants |
TenantQuotaTableComponent |
features/quota-dashboard/ | requireAuthGuard |
/ops/quotas/tenants/:tenantId |
TenantQuotaDetailComponent |
features/quota-dashboard/ | requireAuthGuard |
/ops/quotas/throttle |
ThrottleContextComponent |
features/quota-dashboard/ | requireAuthGuard |
/ops/quotas/alerts |
QuotaAlertConfigComponent |
features/quota-dashboard/ | requireAuthGuard |
/ops/quotas/forecast |
QuotaForecastComponent |
features/quota-dashboard/ | requireAuthGuard |
/ops/quotas/reports |
QuotaReportExportComponent |
features/quota-dashboard/ | requireAuthGuard |
/ops/orchestrator/dead-letter |
deadletterRoutes | features/deadletter/ | requireAuthGuard |
/ops/orchestrator/slo |
sloRoutes | features/slo-monitoring/ | requireAuthGuard |
/ops/health |
platformHealthRoutes | features/platform-health/ | requireAuthGuard |
/ops/feeds |
feedMirrorRoutes | features/feed-mirror/ | requireAuthGuard |
/ops/feeds/mirror/:mirrorId |
MirrorDetailComponent |
features/feed-mirror/ | requireAuthGuard |
/ops/feeds/airgap/import |
AirgapImportComponent |
features/feed-mirror/ | requireAuthGuard |
/ops/feeds/airgap/export |
AirgapExportComponent |
features/feed-mirror/ | requireAuthGuard |
/ops/feeds/version-locks |
VersionLockComponent |
features/feed-mirror/ | requireAuthGuard |
/ops/offline-kit |
offlineKitRoutes | features/offline-kit/ | requireAuthGuard |
/ops/aoc |
AOC_COMPLIANCE_ROUTES | features/aoc-compliance/ | requireAuthGuard |
/ops/doctor |
DOCTOR_ROUTES | features/doctor/ | requireAuthGuard |
/scheduler |
schedulerOpsRoutes | features/scheduler-ops/ | requireAuthGuard |
/scheduler/runs |
SchedulerRunsComponent |
features/scheduler-ops/ | requireAuthGuard |
/scheduler/schedules |
ScheduleManagementComponent |
features/scheduler-ops/ | requireAuthGuard |
/scheduler/workers |
WorkerFleetComponent |
features/scheduler-ops/ | requireAuthGuard |
1.6 Notify Routes
| Route | Component | Location | Guards |
|---|---|---|---|
/notify |
NotifyPanelComponent |
features/notify/ | - |
1.7 Admin Routes
| Route | Component | Location | Guards |
|---|---|---|---|
/console/admin |
consoleAdminRoutes | features/console-admin/ | requireAuthGuard + ui.admin |
/console/admin/tenants |
TenantsListComponent |
features/console-admin/tenants/ | authority:tenants:read |
/console/admin/users |
UsersListComponent |
features/console-admin/users/ | authority:users:read |
/console/admin/roles |
RolesListComponent |
features/console-admin/roles/ | authority:roles:read |
/console/admin/clients |
ClientsListComponent |
features/console-admin/clients/ | authority:clients:read |
/console/admin/tokens |
TokensListComponent |
features/console-admin/tokens/ | authority:tokens:read |
/console/admin/audit |
AuditLogComponent |
features/console-admin/audit/ | authority:audit:read |
/console/admin/branding |
BrandingEditorComponent |
features/console-admin/branding/ | authority:branding:read |
/admin/audit |
auditLogRoutes | features/audit-log/ | requireAuthGuard |
/admin/notifications |
adminNotificationsRoutes | features/admin-notifications/ | requireAuthGuard |
/admin/trust |
trustAdminRoutes | features/trust-admin/ | requireAuthGuard + signer:read |
/admin/policy/governance |
policyGovernanceRoutes | features/policy-governance/ | requireAuthGuard |
/admin/policy/simulation |
policySimulationRoutes | features/policy-simulation/ | requireAuthGuard |
/admin/registries |
registryAdminRoutes | features/registry-admin/ | requireAuthGuard |
/admin/issuers |
issuerTrustRoutes | features/issuer-trust/ | requireAuthGuard |
/ops/scanner |
scannerOpsRoutes | features/scanner-ops/ | requireAuthGuard |
/concelier/trivy-db-settings |
TrivyDbSettingsPageComponent |
features/trivy-db-settings/ | - |
1.8 Console Routes
| Route | Component | Location | Guards |
|---|---|---|---|
/console/profile |
ConsoleProfileComponent |
features/console/ | - |
/console/status |
ConsoleStatusComponent |
features/console/ | - |
/console/configuration |
CONFIGURATION_PANE_ROUTES | features/configuration-pane/ | requireAuthGuard |
1.9 Release Orchestrator Routes
| Route | Component | Location | Guards |
|---|---|---|---|
/release-orchestrator |
DASHBOARD_ROUTES | features/release-orchestrator/dashboard/ | requireAuthGuard |
/release-orchestrator/environments |
ENVIRONMENT_ROUTES | features/release-orchestrator/environments/ | requireAuthGuard |
/release-orchestrator/releases |
RELEASE_ROUTES | features/release-orchestrator/releases/ | requireAuthGuard |
/release-orchestrator/workflows |
WORKFLOW_ROUTES | features/release-orchestrator/workflows/ | requireAuthGuard |
/release-orchestrator/approvals |
APPROVAL_ROUTES | features/release-orchestrator/approvals/ | requireAuthGuard |
/release-orchestrator/deployments |
DEPLOYMENT_ROUTES | features/release-orchestrator/deployments/ | requireAuthGuard |
/release-orchestrator/evidence |
EVIDENCE_ROUTES | features/release-orchestrator/evidence/ | requireAuthGuard |
1.10 Evidence Routes
| Route | Component | Location | Guards |
|---|---|---|---|
/evidence |
evidenceExportRoutes | features/evidence-export/ | requireAuthGuard |
/evidence/bundles |
EvidenceBundlesComponent |
features/evidence-export/ | requireAuthGuard |
/evidence/export |
ExportCenterComponent |
features/evidence-export/ | requireAuthGuard |
/evidence/replay |
ReplayControlsComponent |
features/evidence-export/ | requireAuthGuard |
/evidence/provenance |
ProvenanceVisualizationComponent |
features/evidence-export/ | requireAuthGuard |
/evidence-packs |
EvidencePackListComponent |
features/evidence-pack/ | requireAuthGuard |
/evidence-packs/:packId |
EvidencePackViewerComponent |
features/evidence-pack/ | requireAuthGuard |
/proofs/:subjectDigest |
ProofChainComponent |
features/proof-chain/ | requireAuthGuard |
1.11 Integration Routes
| Route | Component | Location | Guards |
|---|---|---|---|
/integrations |
integrationHubRoutes | features/integration-hub/ | requireAuthGuard |
/integrations/registries |
IntegrationListComponent |
features/integration-hub/ | requireAuthGuard |
/integrations/scm |
IntegrationListComponent |
features/integration-hub/ | requireAuthGuard |
/integrations/ci |
IntegrationListComponent |
features/integration-hub/ | requireAuthGuard |
/integrations/hosts |
IntegrationListComponent |
features/integration-hub/ | requireAuthGuard |
/integrations/feeds |
IntegrationListComponent |
features/integration-hub/ | requireAuthGuard |
/integrations/activity |
IntegrationActivityComponent |
features/integration-hub/ | requireAuthGuard |
/integrations/:integrationId |
IntegrationDetailComponent |
features/integration-hub/ | requireAuthGuard |
1.12 Other Routes
| Route | Component | Location | Guards |
|---|---|---|---|
/ai-runs |
AiRunsListComponent |
features/ai-runs/ | requireAuthGuard |
/ai-runs/:runId |
AiRunViewerComponent |
features/ai-runs/ | requireAuthGuard |
/change-trace |
changeTraceRoutes | features/change-trace/ | requireAuthGuard |
/setup |
setupWizardRoutes | features/setup-wizard/ | - |
/auth/callback |
AuthCallbackComponent |
features/auth/ | - |
** |
redirectTo: '' | - | - |
2. ROUTE COUNT SUMMARY
| Category | Route Count |
|---|---|
| Home & Dashboard | 3 |
| Analyze | 20 |
| Triage | 6 |
| Policy | 12 |
| Ops | 30+ |
| Notify | 1 |
| Admin | 17+ |
| Console | 3 |
| Release Orchestrator | 7 |
| Evidence | 8 |
| Integrations | 8 |
| Other | 5 |
| TOTAL | ~120+ routes |
3. OBSERVATIONS
3.1 Navigation Structure Observations
-
7 top-level navigation groups defined in
navigation.config.ts:- HOME, ANALYZE, TRIAGE, POLICY, OPS, NOTIFY, ADMIN
-
Deep nesting in OPS section: The Ops navigation group contains sub-items with their own children (e.g., Quotas has 6 sub-routes, SLO Monitoring has 3 sub-routes)
-
Admin section size: Admin group contains 17+ items in the navigation configuration
-
Inconsistent route prefixes:
- VEX Hub is at
/admin/vex-hubbut shown in Analyze menu - Scanner Ops is at
/ops/scannerbut listed under Admin menu - Some scheduler routes are at
/scheduler(not/ops/scheduler)
- VEX Hub is at
3.2 Feature Module Observations
-
77 feature directories under
src/app/features/ -
Duplicate/similar named modules:
evidence/andevidence-export/andevidence-pack/andevidence-thread/proof/andproof-chain/andproof-studio/andproofs/unknowns/andunknowns-tracking/integrations/andintegration-hub/vex-hub/andvex-studio/triage/andtriage-inbox/policy/andpolicy-gates/andpolicy-governance/andpolicy-simulation/andpolicy-studio/
-
Orphaned/unused modules (exist as directories but not in main routes):
advisory-ai/aoc/(vsaoc-compliance/)evidence/(vsevidence-export/)exceptions/(route uses triage component)integrations/(vsintegration-hub/)opsmemory/policy/(vspolicy-studio/)proof/(vsproof-chain/)proofs/(vsproof-chain/)releases/(vs release-orchestrator)runs/sbom/scores/secret-detection/settings/snapshot/sources/triage-inbox/unknowns/(vsunknowns-tracking/)verdicts/vex-studio/vuln-explorer/(vsvulnerabilities/)
3.3 Route Path Observations
-
Mixed path conventions:
- Some use
/admin/prefix:/admin/vex-hub,/admin/trust,/admin/audit - Some use
/console/admin/:/console/admin/tenants,/console/admin/users - Some use
/ops/:/ops/quotas,/ops/health,/ops/feeds - Some use root:
/scheduler,/evidence,/integrations
- Some use
-
Inconsistent pluralization:
/vulnerabilities(plural) vs/risk(singular)/findings(plural) vs/graph(singular)/integrations(plural) vs/scheduler(singular)
-
Deep routes:
/policy-studio/packs/:packId/explain/:runId- 5 segments/admin/vex-hub/search/detail/:id- 5 segments/ops/orchestrator/dead-letter/queue- 4 segments
3.4 Guard/Scope Observations
-
Different guard patterns used:
requireAuthGuard- basic authenticationrequireOrchViewerGuard- orchestrator read accessrequireOrchOperatorGuard- orchestrator operator accessrequirePolicyViewerGuard- policy readrequirePolicyAuthorGuard- policy authoringrequirePolicySimulatorGuard- policy simulationrequirePolicyReviewerGuard- policy reviewrequirePolicyApproverGuard- policy approvalrequirePolicyReviewOrApproveGuard- either review or approve
-
Scope-based access defined in navigation config:
graph:readfor SBOM Graphpolicy:author,policy:simulate,policy:review,policy:approve,policy:readui.adminfor Admin section
-
Some routes have no guards:
/welcome,/notify,/scans/:scanId,/concelier/trivy-db-settings
3.5 Dashboard Screen Observations
Multiple dashboard screens exist across the application:
- Home Dashboard (
/) - Security overview - Orchestrator Dashboard (
/orchestrator) - Job management - Policy Dashboard (
/policy-studio/packs/:packId/dashboard) - Per-pack metrics - Quota Dashboard (
/ops/quotas) - License/quota metrics - Platform Health Dashboard (
/ops/health) - Service health - Feed Mirror Dashboard (
/ops/feeds) - Feed sync status - Offline Dashboard (
/ops/offline-kit/dashboard) - Offline mode - AOC Compliance Dashboard (
/ops/aoc) - Compliance metrics - Release Dashboard (
/release-orchestrator) - Release pipeline - VEX Hub Dashboard (
/admin/vex-hub) - VEX statements - Doctor Dashboard (
/ops/doctor) - Diagnostics - SLO Dashboard (
/ops/orchestrator/slo) - SLO health - Dead-Letter Dashboard (
/ops/orchestrator/dead-letter) - Failed jobs - Audit Dashboard (
/admin/audit) - Audit overview - Trust Dashboard (
/admin/trust/keys) - Signing keys - Sources Dashboard (
/dashboard/sources) - SBOM sources
3.6 Configuration/Settings Screen Observations
Multiple locations for configuration:
- Setup Wizard (
/setup) - Initial setup - Configuration Pane (
/console/configuration) - Integration config - Integration Hub (
/integrations) - Integration catalog - Console Admin (
/console/admin/*) - User/tenant/role management - Trust Admin (
/admin/trust) - Keys/certificates - Registry Admin (
/admin/registries) - Registry tokens - Notification Admin (
/admin/notifications) - Notification rules - Policy Governance (
/admin/policy/governance) - Policy config - Scanner Ops (
/ops/scanner/settings) - Scanner settings - Quota Alert Config (
/ops/quotas/alerts) - Alert thresholds - SLO Definitions (
/ops/orchestrator/slo/definitions) - SLO config - Trivy DB Settings (
/concelier/trivy-db-settings) - Trivy config
3.7 Evidence/Proof Screen Observations
Multiple locations for evidence-related functionality:
- Evidence Center (
/evidence) - Bundles, export, replay, provenance - Evidence Packs (
/evidence-packs) - Pack list/viewer - Proof Chain (
/proofs/:subjectDigest) - Proof visualization - Audit Bundles (
/triage/audit-bundles) - Audit evidence - Release Evidence (
/release-orchestrator/evidence) - Release evidence
3.8 Shared Component Observations
Large number of shared components in src/app/shared/components/:
- 100+ shared components
- Mix of UI primitives (button, card, modal) and domain-specific (finding-detail, vex-status-chip)
- Some components are highly specific (e.g.,
dsse-envelope-viewer,lattice-diagram)
3.9 Feature Overlap Observations
- Findings vs Triage: Both handle vulnerability findings with different workflows
- VEX Hub vs Triage VEX: VEX decisions can be made in both places
- Evidence in multiple places: Evidence features spread across 5 different feature modules
- Policy in multiple places: Policy features spread across 5 different feature modules
- Audit logs in multiple places: Console admin audit, unified audit log, trust audit, etc.
3.10 UI Pattern Observations
-
Consistent patterns used:
- Tab navigation within features
- Slide-out detail panels
- Data tables with filters and pagination
- Status badges with color coding (🟢🟡🔴)
- Skeleton loading states
-
Dashboard card pattern: Used on home dashboard and several other dashboards
-
Wizard pattern: Used in setup wizard, source wizard, key rotation wizard
-
Split-pane pattern: Used in policy editor, triage workspace