Platform Ops Consolidation
Status: Shipped on 2026-03-07
Recommendation
Keep one consolidated operator shell under Ops > Operations and absorb the useful legacy platform-ops surfaces into it.
- Canonical mount:
/ops/operations - Suggested user-facing title:
Operations - Suggested overview page title:
Platform Ops
This is not a restoration of an abandoned product. It is a consolidation of operator navigation, overview grouping, and missing widgets into the existing route tree.
Shipped Scope
- Mounted one grouped
Ops > Operationsoverview with blocking-strip status, quick submenu chips, pending-action callouts, and an explicit Setup ownership boundary. - Standardized canonical route helpers under
/ops/operations/*and rewired active overview and child-page links away from dead/platform/ops/*paths. - Added legacy alias redirects for both
/platform-ops/*and/platform/ops/*into the live Operations shell. - Preserved agent-fleet and topology ownership under
Setup > Topologywhile adding direct Operations handoffs where runtime monitoring needs to cross that boundary. - Added focused route, component, and Playwright verification plus a checked-feature note at
docs/features/checked/web/operations-consolidation-ui.md.
Why This Is The Right Shape
- The current app already routes operators through
/ops/operations. - The dead and weak-route
platform-opspages overlap with the live ops shell rather than introducing a separate domain. - Restoring the old shell would recreate fragmentation between overview pages, diagnostics, quotas, AOC, and air-gap operations.
- The correct move is to strengthen one overview and one child-route tree.
Operator Modes
1. Control Room Mode
- Used by operators scanning for blocking platform issues.
- Focus: overview, blocking cards, and high-priority drills.
2. Subsystem Specialist Mode
- Used by operators responsible for one area such as quotas, offline kit, job queues, or AOC.
- Focus: a dedicated child route reached from grouped cards.
3. Triage Handoff Mode
- Used when another shell surfaces an ops problem and links into operations.
- Focus: deep link into the relevant child route with preserved return context.
Recommended IA
Overview groups
Blocking- data integrity
- AOC compliance
- critical platform alerts
Execution- jobs and queues
- scheduler
- dead-letter
- signals
Health- health and SLO
- diagnostics
- system status
Supply And Airgap- feeds and airgap
- offline kit
- pack registry
Capacity- quotas and limits
Communications- notifications
Child routes
OverviewData IntegrityJobs & QueuesHealth & SLOFeeds & AirgapOffline KitQuotas & LimitsAOC ComplianceDiagnosticsSignalsPack RegistryNotifications
Page Anatomy
Overview page
- top blocking strip:
- open incidents
- highest-risk subsystem
- degraded status count
- grouped cards:
- each card shows status, trend, queue depth, or freshness
- each card links to a single child route
- lower sections:
- recent changes
- pending operator actions
- cross-links to Setup-owned topology when infra ownership is involved
Child routes
- keep a consistent subpage layout:
- status summary cards
- main table or chart
- action rail
- diagnostics or evidence side panel when relevant
Route Contract
Prefer the current route family and tighten it rather than creating new paths.
Canonical routes
/ops/operations/ops/operations/jobs-queues/ops/operations/data-integrity/ops/operations/health-slo/ops/operations/feeds-airgap/ops/operations/offline-kit/ops/operations/quotas/ops/operations/aoc/ops/operations/doctor/ops/operations/signals/ops/operations/packs/ops/operations/notifications
Alias and cleanup rules
- legacy
/platform-ops/*bookmarks should redirect into/ops/operations/* - duplicate overview routes should be retired once card parity is reached
- child-route labels should match the sidebar and overview cards exactly
Verification
- Angular:
npx ng test --watch=false --include src/tests/platform-ops/platform-ops-routes.spec.ts --include src/tests/platform-ops/platform-ops-overview-page.component.spec.ts --include src/tests/platform-ops/platform-feeds-airgap-page.component.spec.ts --include src/tests/platform-ops/data-integrity-pages.spec.ts --include src/tests/navigation/legacy-redirects.spec.ts
- Playwright:
PLAYWRIGHT_PORT=4410 npx playwright test tests/e2e/operations-consolidation.spec.ts --workers=1
- Checked feature record:
docs/features/checked/web/operations-consolidation-ui.md
What To Merge
Preserve as the main shell
PlatformOpsOverviewPageComponentoperations.routes.ts
Absorb from legacy Platform Ops
PlatformOpsOverviewComponent- federation and telemetry summary cards that still add value
- data-integrity pages still missing from the live grouped overview
- any distinctive capacity or compliance widgets not already surfaced
Single Actions And Supporting Surfaces
Agent fleet
- primary home:
Setup > Topology - operations overview may show health summary and deep-link out
Diagnostics
- keep as
Ops > Operations > Diagnostics - avoid a second top-level doctor product entry
- diagnostic runs are single-flight from the Console: while a run is active, run and re-run controls stay disabled and the page shows completion percentage plus queued/running/completed check state
- active-run progress is owned by the shared Doctor store so progress remains visible when an operator leaves and returns to the Diagnostics route during the same Console session
AOC violations and reports
- keep overview status on the main page
- full detail stays in its own child route
Offline import/export helpers
- keep inside
Offline KitorFeeds & Airgap - do not create separate sidebar products
Cross-Product Entry Points
Mission Control- links to degraded subsystem routes
Setup > Topology- links back to operations when infra state impacts runtime operations
EvidenceorReleases- links into data integrity, signals, or pack registry when evidence freshness blocks a workflow
UI Standards For Implementation
- One shell, one overview, one submenu tree.
- Group cards by operator concern, not by backend service name alone.
- Preserve stable deep links from cards to subpages.
- Keep Setup-owned infrastructure management distinct from Ops-owned runtime monitoring.
- Treat legacy routes as migration aliases only.
Non-Goals
- Do not revive
/platform-ops/*as a parallel route tree. - Do not duplicate topology ownership under Ops.
- Do not create separate overview pages for each subsystem when grouped cards already solve discoverability.
Source Inputs
docs/UI_GUIDE.mddocs/modules/ui/operations/observability-guide.mddocs/modules/notify/operations/observability.mdsrc/Web/StellaOps.Web/src/app/routes/operations.routes.tssrc/Web/StellaOps.Web/src/app/features/platform/ops/platform-ops-overview-page.component.tssrc/Web/StellaOps.Web/src/app/features/platform-ops/platform-ops-overview.component.tssrc/Web/StellaOps.Web/src/app/features/aoc-compliance/aoc-compliance.routes.ts
