Files
git.stella-ops.org/docs/ui-analysis/03_TRIAGE_POLICY_OPS_SCREENS.md

59 KiB

Stella Ops UI Structure - Part 3: Triage, Policy & Ops Screens


1. TRIAGE SECTION

1.1 Artifact Workspace

Route: /triage/artifacts Component: TriageArtifactsComponent Location: src/app/features/triage/triage-artifacts.component.ts

┌────────────────────────────────────────────────────────────────────────────────┐
│                       ARTIFACT WORKSPACE                                        │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌──────────────────────────────────────────────────────────────────────────┐  │
│ │ [Search artifacts...] [Registry ▼] [Status ▼] [Risk Level ▼]            │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ ARTIFACTS LIST ─────────────────────────────────────────────────────────┐  │
│ │ Image Name             │ Tag      │ Risk  │ Findings │ VEX    │ Actions │  │
│ ├────────────────────────┼──────────┼───────┼──────────┼────────┼─────────┤  │
│ │ registry/app-svc       │ v1.2.3   │ 🔴    │ 45       │ 3      │ [→]     │  │
│ │ registry/api-gateway   │ latest   │ 🟠    │ 23       │ 1      │ [→]     │  │
│ │ registry/worker        │ 2.0.0    │ 🟢    │ 5        │ 5      │ [→]     │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────────────────────────┘

1.2 Artifact Detail / Triage Workspace

Route: /triage/artifacts/:artifactId Component: TriageWorkspaceComponent Location: src/app/features/triage/triage-workspace.component.ts

┌────────────────────────────────────────────────────────────────────────────────┐
│ TRIAGE WORKSPACE: registry/app-svc:v1.2.3                                      │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─────────────────────────────────────────────────────────────────────────────┐│
│ │ [Findings] [Components] [VEX Decisions] [Attestations] [Evidence] [History]││
│ └─────────────────────────────────────────────────────────────────────────────┘│
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ ARTIFACT INFO ─────────────────────────────────────────────────────────────┐│
│ │ Digest: sha256:abc123...  │ Created: 2024-01-15  │ Size: 245MB            ││
│ │ Risk Score: 78 (High)     │ Total CVEs: 45       │ Exceptions: 3          ││
│ └─────────────────────────────────────────────────────────────────────────────┘│
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ TRIAGE ACTIONS ─────────────────────────────────────────────────────────┐  │
│ │ Selected: 5 findings                                                      │  │
│ │ [Create VEX] [Add Exception] [Request Review] [Export Evidence]          │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ FINDINGS LIST ──────────────────────────────────────────────────────────┐  │
│ │ ☐ │ Sev │ CVE           │ Component      │ Status    │ VEX     │ Except │  │
│ ├───┼─────┼───────────────┼────────────────┼───────────┼─────────┼────────┤  │
│ │ ☑ │ 🔴  │ CVE-2024-1234 │ log4j@2.14.1   │ Open      │         │        │  │
│ │ ☑ │ 🔴  │ CVE-2024-5678 │ spring@5.2.1   │ Triaged   │ ⚑       │        │  │
│ │ ☐ │ 🟠  │ CVE-2024-9012 │ jackson@2.9    │ Excepted  │         │ ✓      │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────────────────────────┘
  • TriageAttestationDetailModalComponent
  • VexDecisionModalComponent
  • Components in src/app/features/triage/components/

1.3 Exception Queue

Route: /exceptions Component: TriageArtifactsComponent (reused) Location: src/app/features/triage/triage-artifacts.component.ts


1.4 Audit Bundles

Route: /triage/audit-bundles Component: TriageAuditBundlesComponent Location: src/app/features/triage/triage-audit-bundles.component.ts

Create Route: /triage/audit-bundles/new Component: TriageAuditBundleNewComponent

┌────────────────────────────────────────────────────────────────────────────────┐
│                        AUDIT BUNDLES                                            │
├────────────────────────────────────────────────────────────────────────────────┤
│ [Search bundles...] [Status ▼] [Date Range] [+ New Bundle]                     │
├────────────────────────────────────────────────────────────────────────────────┤
│ │ Bundle ID      │ Created      │ Artifacts │ Status    │ Signed  │ Actions │ │
│ ├────────────────┼──────────────┼───────────┼───────────┼─────────┼─────────┤ │
│ │ AUDIT-2024-001 │ 2024-01-15   │ 12        │ Complete  │ ✓       │ [↓] [→] │ │
│ │ AUDIT-2024-002 │ 2024-01-14   │ 8         │ Pending   │         │ [→]     │ │
│ │ AUDIT-2024-003 │ 2024-01-13   │ 25        │ Complete  │ ✓       │ [↓] [→] │ │
└────────────────────────────────────────────────────────────────────────────────┘

1.5 Risk Dashboard

Route: /risk Component: RiskDashboardComponent Location: src/app/features/risk/risk-dashboard.component.ts

┌────────────────────────────────────────────────────────────────────────────────┐
│                       RISK PROFILES                                             │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ RISK OVERVIEW ──────────────────────────────────────────────────────────┐  │
│ │    ┌───────────────┐                                                      │  │
│ │   /       72       \    Overall Risk Score                                │  │
│ │  │   ↓ 3% from     │    ────────────────────────────────────────────────│  │
│ │   \   last week   /     • Critical Findings: 12                          │  │
│ │    └───────────────┘     • High Findings: 45                             │  │
│ │                          • Active Exceptions: 23                          │  │
│ │                          • Compliance Gaps: 5                             │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ RISK BY ARTIFACT ───────────────────────────────────────────────────────┐  │
│ │ Artifact         │ Score │ Trend  │ Critical │ High │ Exceptions        │  │
│ ├──────────────────┼───────┼────────┼──────────┼──────┼───────────────────┤  │
│ │ app-svc          │ 85    │ ↑ +5   │ 5        │ 12   │ 3                 │  │
│ │ api-gateway      │ 62    │ ↓ -8   │ 2        │ 8    │ 2                 │  │
│ │ worker           │ 35    │ = 0    │ 0        │ 3    │ 1                 │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
├─ RISK DRIFT ───────────────────────────────────────────────────────────────────┤
│ │  [Time-series chart showing risk score changes over time]                 │  │
│ │       100 ┤                                                               │  │
│ │        75 ┤      ╭──╮    ╭─────                                          │  │
│ │        50 ┤  ╭───╯  ╰────╯                                               │  │
│ │        25 ┤──╯                                                            │  │
│ │         0 └────────────────────────────────────────────────────────────   │  │
│ │           Jan     Feb     Mar     Apr     May     Jun                     │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────────────────────────┘

2. POLICY SECTION

2.1 Policy Studio - Workspace

Route: /policy-studio/packs Component: PolicyWorkspaceComponent Location: src/app/features/policy-studio/workspace/policy-workspace.component.ts Required Scope: policy:read

┌────────────────────────────────────────────────────────────────────────────────┐
│                        POLICY STUDIO                                            │
├────────────────────────────────────────────────────────────────────────────────┤
│ [+ New Pack]  [Search packs...]  [Status ▼]  [Environment ▼]                  │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ POLICY PACKS ───────────────────────────────────────────────────────────┐  │
│ │ Pack Name          │ Version │ Status    │ Envs      │ Rules │ Actions  │  │
│ ├────────────────────┼─────────┼───────────┼───────────┼───────┼──────────┤  │
│ │ security-baseline  │ v2.3.0  │ Active    │ Prod,Stg  │ 45    │ [Edit]   │  │
│ │ compliance-pci     │ v1.0.0  │ Draft     │ -         │ 23    │ [Edit]   │  │
│ │ internal-standards │ v3.1.0  │ Pending   │ Dev       │ 67    │ [Review] │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────────────────────────┘

2.2 Policy Editor

Route: /policy-studio/packs/:packId/editor Component: PolicyEditorComponent Location: src/app/features/policy-studio/editor/policy-editor.component.ts Required Scope: policy:author

┌────────────────────────────────────────────────────────────────────────────────┐
│ POLICY EDITOR: security-baseline v2.3.0                                        │
├────────────────────────────────────────────────────────────────────────────────┤
│ [Editor] [YAML] [Simulate] [Approvals] [Rules] [Dashboard]                     │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─────────────────────────────┬────────────────────────────────────────────┐  │
│ │ RULES TREE                  │ RULE DETAILS                               │  │
│ │ ─────────────               │ ─────────────────────────────────────────  │  │
│ │ ▼ vulnerability-gates       │ Rule: block-critical-cves                  │  │
│ │   ├── block-critical-cves   │ ────────────────────────────────────────── │  │
│ │   ├── warn-high-cves        │ Description:                               │  │
│ │   └── require-fix-path      │ Block artifacts with critical CVEs         │  │
│ │ ▼ compliance-checks         │                                            │  │
│ │   ├── require-sbom          │ Condition:                                 │  │
│ │   ├── verify-signatures     │ cvss_score >= 9.0 AND status == "open"     │  │
│ │   └── check-licenses        │                                            │  │
│ │ ▼ quality-gates             │ Action: BLOCK                              │  │
│ │   ├── test-coverage         │ Message: "Critical CVE detected..."       │  │
│ │   └── code-review           │                                            │  │
│ │                             │ [Edit Rule] [Test Rule] [Delete]           │  │
│ └─────────────────────────────┴────────────────────────────────────────────┘  │
├─ ACTIONS ──────────────────────────────────────────────────────────────────────┤
│ [Save Draft] [Validate] [Submit for Review] [History]                          │
└────────────────────────────────────────────────────────────────────────────────┘

2.3 Policy YAML Editor

Route: /policy-studio/packs/:packId/yaml Component: PolicyYamlEditorComponent Location: src/app/features/policy-studio/yaml/policy-yaml-editor.component.ts Required Scope: policy:author


2.4 Policy Simulation

Route: /policy-studio/packs/:packId/simulate Component: PolicySimulationComponent Location: src/app/features/policy-studio/simulation/policy-simulation.component.ts Required Scope: policy:simulate

┌────────────────────────────────────────────────────────────────────────────────┐
│ POLICY SIMULATION: security-baseline v2.3.0                                    │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ INPUT ──────────────────────────────────────────────────────────────────┐  │
│ │ Artifact: [Select artifact... ▼]  Environment: [Staging ▼]              │  │
│ │ [Run Simulation]                                                          │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ SIMULATION RESULTS ─────────────────────────────────────────────────────┐  │
│ │ Overall Verdict: 🔴 BLOCKED                                              │  │
│ │ ─────────────────────────────────────────────────────────────────────── │  │
│ │ Rule                    │ Result   │ Details                            │  │
│ │ ────────────────────────┼──────────┼────────────────────────────────────│  │
│ │ block-critical-cves     │ 🔴 BLOCK │ 3 critical CVEs found              │  │
│ │ warn-high-cves          │ 🟡 WARN  │ 12 high CVEs found                 │  │
│ │ require-sbom            │ 🟢 PASS  │ SBOM present and valid             │  │
│ │ verify-signatures       │ 🟢 PASS  │ Valid signature from trusted key   │  │
│ │ check-licenses          │ 🟡 WARN  │ GPL-3.0 detected in 2 components   │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
├─ EXPLAIN ──────────────────────────────────────────────────────────────────────┤
│ │ [AI-powered explanation of simulation results]                           │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────────────────────────┘

2.5 Policy Approvals

Route: /policy-studio/packs/:packId/approvals Component: PolicyApprovalsComponent Location: src/app/features/policy-studio/approvals/policy-approvals.component.ts Required Scope: policy:review OR policy:approve


2.6 Policy Rule Builder

Route: /policy-studio/packs/:packId/rules Component: PolicyRuleBuilderComponent Location: src/app/features/policy-studio/rule-builder/policy-rule-builder.component.ts Required Scope: policy:author


2.7 Policy Explain

Route: /policy-studio/packs/:packId/explain/:runId Component: PolicyExplainComponent Location: src/app/features/policy-studio/explain/policy-explain.component.ts Required Scope: policy:read


2.8 Policy Dashboard

Route: /policy-studio/packs/:packId/dashboard Component: PolicyDashboardComponent Location: src/app/features/policy-studio/dashboard/policy-dashboard.component.ts Required Scope: policy:read


2.9 Orchestrator Dashboard

Route: /orchestrator Component: OrchestratorDashboardComponent Location: src/app/features/orchestrator/orchestrator-dashboard.component.ts Required Scope: orch:read

┌────────────────────────────────────────────────────────────────────────────────┐
│                     ORCHESTRATOR DASHBOARD                                      │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ SUMMARY ────────────────────────────────────────────────────────────────┐  │
│ │ Running: 5  │  Queued: 12  │  Completed: 1,234  │  Failed: 23            │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
├────────────────────────────────────────────────────────────────────────────────┤
│ [Search jobs...] [Type ▼] [Status ▼] [Date Range]                              │
├────────────────────────────────────────────────────────────────────────────────┤
│ │ Job ID      │ Type        │ Artifact       │ Status   │ Started   │ Action│ │
│ ├─────────────┼─────────────┼────────────────┼──────────┼───────────┼───────┤ │
│ │ JOB-12345   │ Scan        │ app-svc:v1.2.3 │ Running  │ 2m ago    │ [→]   │ │
│ │ JOB-12344   │ Policy      │ api-gw:latest  │ Complete │ 5m ago    │ [→]   │ │
│ │ JOB-12343   │ Reachability│ worker:2.0.0   │ Failed   │ 10m ago   │ [↻]   │ │
│ │ JOB-12342   │ Export      │ bundle-001     │ Complete │ 15m ago   │ [↓]   │ │
└────────────────────────────────────────────────────────────────────────────────┘

2.10 Orchestrator Jobs

Route: /orchestrator/jobs Component: OrchestratorJobsComponent Location: src/app/features/orchestrator/orchestrator-jobs.component.ts Required Scope: orch:read


2.11 Orchestrator Job Detail

Route: /orchestrator/jobs/:jobId Component: OrchestratorJobDetailComponent Location: src/app/features/orchestrator/orchestrator-job-detail.component.ts Required Scope: orch:read


2.12 Orchestrator Quotas

Route: /orchestrator/quotas Component: OrchestratorQuotasComponent Location: src/app/features/orchestrator/orchestrator-quotas.component.ts Required Scope: orch:operator


3. OPS SECTION

3.1 SBOM Sources

Route: /sbom-sources Location: src/app/features/sbom-sources/

Sub-routes:

Path Component Title
/sbom-sources SourcesListComponent SBOM Sources
/sbom-sources/new SourceWizardComponent Create SBOM Source
/sbom-sources/:id SourceDetailComponent Source Details
/sbom-sources/:id/edit SourceWizardComponent Edit Source
┌────────────────────────────────────────────────────────────────────────────────┐
│                         SBOM SOURCES                                            │
├────────────────────────────────────────────────────────────────────────────────┤
│ [+ New Source]  [Search sources...]  [Type ▼]  [Status ▼]                      │
├────────────────────────────────────────────────────────────────────────────────┤
│ │ Source Name     │ Type      │ URL                  │ Status  │ Last Sync  │ │
│ ├─────────────────┼───────────┼──────────────────────┼─────────┼────────────┤ │
│ │ docker-hub      │ Registry  │ registry.docker.io   │ 🟢 OK   │ 2m ago     │ │
│ │ github-actions  │ CI        │ github.com/org       │ 🟢 OK   │ 5m ago     │ │
│ │ gitlab-ci       │ CI        │ gitlab.company.com   │ 🟡 Warn │ 1h ago     │ │
│ │ local-registry  │ Registry  │ registry.local:5000  │ 🔴 Error│ 2d ago     │ │
└────────────────────────────────────────────────────────────────────────────────┘

3.2 Quota Dashboard

Route: /ops/quotas Location: src/app/features/quota-dashboard/

Sub-routes:

Path Component
/ops/quotas QuotaDashboardComponent
/ops/quotas/tenants TenantQuotaTableComponent
/ops/quotas/tenants/:tenantId TenantQuotaDetailComponent
/ops/quotas/throttle ThrottleContextComponent
/ops/quotas/alerts QuotaAlertConfigComponent
/ops/quotas/forecast QuotaForecastComponent
/ops/quotas/reports QuotaReportExportComponent
┌────────────────────────────────────────────────────────────────────────────────┐
│                        QUOTA DASHBOARD                                          │
├──────────────────┬─────────────────────────────────────────────────────────────┤
│ NAVIGATION       │ QUOTA OVERVIEW                                              │
│ ─────────────    │ ───────────────────────────────────────────────────────── │
│ [Overview]       │ ┌────────────┐ ┌────────────┐ ┌────────────┐              │
│ [Tenant Usage]   │ │ Scan Quota │ │ API Calls  │ │ Storage    │              │
│ [Throttle]       │ │ 67% used   │ │ 45% used   │ │ 82% used   │              │
│ [Forecast]       │ │ ████░░     │ │ ███░░░     │ │ █████░     │              │
│ [Alert Config]   │ └────────────┘ └────────────┘ └────────────┘              │
│ [Reports]        │                                                            │
│                  │ ┌─ QUOTA TRENDS ─────────────────────────────────────────┐│
│                  │ │ [Time-series chart]                                     ││
│                  │ └─────────────────────────────────────────────────────────┘│
│                  │                                                            │
│                  │ ┌─ ALERTS ────────────────────────────────────────────────┐│
│                  │ │ ⚠ Storage quota at 82% - forecast exhaustion in 14 days││
│                  │ │ ⚠ Tenant "prod-team" exceeded scan rate limit           ││
│                  │ └─────────────────────────────────────────────────────────┘│
└──────────────────┴─────────────────────────────────────────────────────────────┘

3.3 Dead-Letter Queue

Route: /ops/orchestrator/dead-letter Location: src/app/features/deadletter/

Sub-routes:

Path Component
/ops/orchestrator/dead-letter Dashboard
/ops/orchestrator/dead-letter/queue Queue Browser
┌────────────────────────────────────────────────────────────────────────────────┐
│                      DEAD-LETTER QUEUE                                          │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ QUEUE STATS ────────────────────────────────────────────────────────────┐  │
│ │ Total: 23  │  Retryable: 18  │  Permanent: 5  │  Oldest: 2 days          │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
├────────────────────────────────────────────────────────────────────────────────┤
│ [Search...] [Error Type ▼] [Job Type ▼] [Retry All] [Purge Permanent]          │
├────────────────────────────────────────────────────────────────────────────────┤
│ │ Job ID      │ Type      │ Error                │ Retries │ Actions       │ │
│ ├─────────────┼───────────┼──────────────────────┼─────────┼───────────────┤ │
│ │ JOB-ERR-001 │ Scan      │ Timeout connecting...│ 3/5     │ [↻] [🗑] [→] │ │
│ │ JOB-ERR-002 │ Export    │ Out of memory        │ 5/5     │ [🗑] [→]      │ │
│ │ JOB-ERR-003 │ Policy    │ Invalid policy pack  │ 2/5     │ [↻] [🗑] [→] │ │
└────────────────────────────────────────────────────────────────────────────────┘

3.4 SLO Monitoring

Route: /ops/orchestrator/slo Location: src/app/features/slo-monitoring/

Sub-routes:

Path Component
/ops/orchestrator/slo Dashboard
/ops/orchestrator/slo/alerts Alerts
/ops/orchestrator/slo/definitions Definitions
┌────────────────────────────────────────────────────────────────────────────────┐
│                       SLO MONITORING                                            │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ SLO STATUS ─────────────────────────────────────────────────────────────┐  │
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐              │  │
│ │ │ Scan Latency    │ │ API Availability│ │ Policy Eval     │              │  │
│ │ │ Target: < 30s   │ │ Target: 99.9%   │ │ Target: < 100ms │              │  │
│ │ │ Current: 28s    │ │ Current: 99.95% │ │ Current: 85ms   │              │  │
│ │ │ 🟢 HEALTHY      │ │ 🟢 HEALTHY      │ │ 🟢 HEALTHY      │              │  │
│ │ └─────────────────┘ └─────────────────┘ └─────────────────┘              │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ BURN RATE ──────────────────────────────────────────────────────────────┐  │
│ │ SLO Name         │ Budget │ Burned │ Rate    │ Status   │ TTL          │  │
│ │ ─────────────────┼────────┼────────┼─────────┼──────────┼──────────────│  │
│ │ Scan Latency     │ 0.1%   │ 0.02%  │ 0.5x    │ 🟢 Safe  │ 45 days      │  │
│ │ API Availability │ 0.1%   │ 0.05%  │ 1.2x    │ 🟡 Watch │ 18 days      │  │
│ │ Policy Eval      │ 0.1%   │ 0.01%  │ 0.2x    │ 🟢 Safe  │ 90+ days     │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────────────────────────┘

3.5 Platform Health

Route: /ops/health Location: src/app/features/platform-health/

Sub-routes:

Path Component
/ops/health PlatformHealthDashboardComponent
/ops/health/services/:serviceName ServiceDetailComponent
/ops/health/incidents IncidentTimelineComponent
┌────────────────────────────────────────────────────────────────────────────────┐
│                      PLATFORM HEALTH DASHBOARD                                  │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ SERVICE STATUS ─────────────────────────────────────────────────────────┐  │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐       │  │
│ │ │ Scanner  │ │ Policy   │ │ Authority│ │ VEX Hub  │ │ Evidence │       │  │
│ │ │ 🟢 OK    │ │ 🟢 OK    │ │ 🟢 OK    │ │ 🟡 Warn  │ │ 🟢 OK    │       │  │
│ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘       │  │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐       │  │
│ │ │ Scheduler│ │ Graph    │ │ Integrat.│ │ Notifier │ │ Telemetry│       │  │
│ │ │ 🟢 OK    │ │ 🟢 OK    │ │ 🔴 Error │ │ 🟢 OK    │ │ 🟢 OK    │       │  │
│ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘       │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ DEPENDENCIES ───────────────────────────────────────────────────────────┐  │
│ │ PostgreSQL: 🟢   │   Redis: 🟢   │   RabbitMQ: 🟢   │   S3: 🟢          │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ RECENT INCIDENTS ───────────────────────────────────────────────────────┐  │
│ │ Time         │ Service      │ Severity  │ Status    │ Duration         │  │
│ │ 10:23 UTC    │ Integrations │ 🔴 High   │ Active    │ 15m (ongoing)    │  │
│ │ 09:45 UTC    │ VEX Hub      │ 🟡 Medium │ Resolved  │ 8m               │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────────────────────────┘

3.6 Feed Mirror & AirGap

Route: /ops/feeds Location: src/app/features/feed-mirror/

Sub-routes:

Path Component
/ops/feeds FeedMirrorDashboardComponent
/ops/feeds/mirror/:mirrorId MirrorDetailComponent
/ops/feeds/airgap/import AirgapImportComponent
/ops/feeds/airgap/export AirgapExportComponent
/ops/feeds/version-locks VersionLockComponent
┌────────────────────────────────────────────────────────────────────────────────┐
│                    FEED MIRROR & AIRGAP OPERATIONS                              │
├────────────────────────────────────────────────────────────────────────────────┤
│ [Dashboard] [Import Bundle] [Export Bundle] [Version Locks]                    │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ FEED STATUS ────────────────────────────────────────────────────────────┐  │
│ │ Feed Name           │ Version    │ Last Sync  │ Status  │ Size        │  │
│ │ ────────────────────┼────────────┼────────────┼─────────┼─────────────│  │
│ │ NVD                 │ 2024-01-15 │ 2h ago     │ 🟢 OK   │ 2.3 GB      │  │
│ │ Trivy               │ 2024-01-15 │ 1h ago     │ 🟢 OK   │ 856 MB      │  │
│ │ OSV                 │ 2024-01-14 │ 1d ago     │ 🟡 Stale│ 1.2 GB      │  │
│ │ GitHub Advisories   │ 2024-01-15 │ 30m ago    │ 🟢 OK   │ 245 MB      │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ AIRGAP BUNDLES ─────────────────────────────────────────────────────────┐  │
│ │ Bundle ID      │ Created      │ Size    │ Signed  │ Status    │ Action │  │
│ │ ───────────────┼──────────────┼─────────┼─────────┼───────────┼────────│  │
│ │ AIRGAP-2024-01 │ 2024-01-15   │ 4.5 GB  │ ✓       │ Ready     │ [↓]    │  │
│ │ AIRGAP-2024-02 │ 2024-01-10   │ 4.2 GB  │ ✓       │ Imported  │ [→]    │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────────────────────────┘

3.7 Offline Kit

Route: /ops/offline-kit Location: src/app/features/offline-kit/

Sub-routes:

Path Component
/ops/offline-kit OfflineKitComponent (shell)
/ops/offline-kit/dashboard OfflineDashboardComponent
/ops/offline-kit/bundles BundleManagementComponent
/ops/offline-kit/verify VerificationCenterComponent
/ops/offline-kit/jwks JwksManagementComponent

3.8 AOC Compliance

Route: /ops/aoc Location: src/app/features/aoc-compliance/

Sub-routes:

Path Component
/ops/aoc AocComplianceDashboardComponent
/ops/aoc/violations GuardViolationsListComponent
/ops/aoc/ingestion IngestionFlowComponent
/ops/aoc/provenance ProvenanceValidatorComponent
/ops/aoc/report ComplianceReportComponent

3.9 Scheduler Operations

Route: /scheduler Location: src/app/features/scheduler-ops/

Sub-routes:

Path Component
/scheduler/runs SchedulerRunsComponent
/scheduler/schedules ScheduleManagementComponent
/scheduler/workers WorkerFleetComponent
┌────────────────────────────────────────────────────────────────────────────────┐
│                      SCHEDULER OPERATIONS                                       │
├────────────────────────────────────────────────────────────────────────────────┤
│ [Runs] [Schedules] [Workers]                                                    │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ SCHEDULED JOBS ─────────────────────────────────────────────────────────┐  │
│ │ Schedule Name   │ Cron         │ Next Run      │ Last Run   │ Status    │  │
│ │ ────────────────┼──────────────┼───────────────┼────────────┼───────────│  │
│ │ daily-scan      │ 0 0 * * *    │ in 4h 23m     │ 19h ago    │ 🟢 Active │  │
│ │ hourly-sync     │ 0 * * * *    │ in 23m        │ 37m ago    │ 🟢 Active │  │
│ │ weekly-report   │ 0 0 * * 0    │ in 3d 4h      │ 3d ago     │ 🟢 Active │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ WORKER FLEET ───────────────────────────────────────────────────────────┐  │
│ │ Worker ID    │ Status   │ Current Job  │ Queue    │ Uptime   │ CPU     │  │
│ │ ─────────────┼──────────┼──────────────┼──────────┼──────────┼─────────│  │
│ │ worker-01    │ 🟢 Busy  │ JOB-12345    │ scan     │ 5d 4h    │ 45%     │  │
│ │ worker-02    │ 🟢 Idle  │ -            │ scan     │ 5d 4h    │ 12%     │  │
│ │ worker-03    │ 🔴 Down  │ -            │ export   │ -        │ -       │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────────────────────────┘

3.10 Doctor Diagnostics

Route: /ops/doctor Component: DoctorDashboardComponent Location: src/app/features/doctor/doctor-dashboard.component.ts

┌────────────────────────────────────────────────────────────────────────────────┐
│                      DOCTOR DIAGNOSTICS                                         │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ SYSTEM HEALTH CHECK ────────────────────────────────────────────────────┐  │
│ │ [Run Full Diagnostics]                                                    │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
├────────────────────────────────────────────────────────────────────────────────┤
│ ┌─ DIAGNOSTIC RESULTS ─────────────────────────────────────────────────────┐  │
│ │ Check                   │ Status   │ Details                  │ Action  │  │
│ │ ────────────────────────┼──────────┼──────────────────────────┼─────────│  │
│ │ Database connectivity   │ 🟢 Pass  │ 5ms latency              │         │  │
│ │ Redis connectivity      │ 🟢 Pass  │ 2ms latency              │         │  │
│ │ Certificate validity    │ 🟡 Warn  │ Expires in 14 days       │ [Fix]   │  │
│ │ Feed freshness          │ 🟢 Pass  │ All feeds < 24h old      │         │  │
│ │ Storage capacity        │ 🟡 Warn  │ 82% used                 │ [→]     │  │
│ │ Worker health           │ 🔴 Fail  │ 1 of 3 workers down      │ [Fix]   │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
├─ RECOMMENDATIONS ──────────────────────────────────────────────────────────────┤
│ │ 1. Renew TLS certificate before expiration                               │  │
│ │ 2. Consider expanding storage or enabling cleanup policies               │  │
│ │ 3. Investigate worker-03 failure and restart if necessary                │  │
│ └──────────────────────────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────────────────────────┘