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 │ │ ✓ │ │
│ └──────────────────────────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────────────────────────┘
Related Components:
TriageAttestationDetailModalComponentVexDecisionModalComponent- 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 │ │
│ └──────────────────────────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────────────────────────┘