3.4 KiB
Release Investigation Routes Reconnection
Module
Web
Status
IMPLEMENTED
Sprint
SPRINT_20260308_022_FE_unreachable_release_investigation_routes
Description
Integrated disconnected release-investigation route families (timeline, deploy-diff, change-trace) into the canonical Releases product under a bounded /releases/investigation/ prefix. The investigation timeline is mounted as a secondary route to avoid colliding with the shipped run workspace tab at /releases/runs/:runId/timeline.
Canonical URL Contract
/releases/investigation/timeline- Investigation timeline overview/releases/investigation/timeline/:correlationId- Correlated event drill-in/releases/investigation/deploy-diff- Deployment diff workspace; direct load shows a recovery state when nofrom/todigests are present/releases/investigation/change-trace- Change trace workspace; direct load shows a recovery state until a comparison or trace id is selected/releases/investigation/change-trace/:traceId- Specific trace detail
Direct-Load Workspace Contract
/releases/investigation/deploy-diffno longer fails withMissing Parameters. Direct navigation now showsNo Comparison Selectedplus recovery actions back to/releases/deploymentsand/releases/overview./releases/investigation/change-traceno longer renders an inertNo Change Trace Loadedshell. Direct navigation now showsNo Comparison Selectedplus recovery actions to/releases/deployments, or back to deploy-diff whenfrom/todigests are already present.- Both workspaces preserve tenant/scope query context when it exists and fall back to the canonical
demo-prodtenant on a fresh shell load.
Timeline Decision
Bounded-secondary-route (not absorb-into-run-workspace). The investigation timeline is a correlation-based tool that spans multiple services by correlationId, which is conceptually different from the run workspace's timeline tab showing run execution flow. Mounting it under /releases/investigation/timeline avoids URL collision and keeps both capabilities distinct.
Implementation Details
- Route file:
src/Web/StellaOps.Web/src/app/routes/releases.routes.ts- Added three
loadChildrenentries underinvestigation/prefix
- Added three
- Feature routes updated:
src/Web/StellaOps.Web/src/app/features/timeline/timeline.routes.ts- Added breadcrumb, title, sprint refsrc/Web/StellaOps.Web/src/app/features/deploy-diff/deploy-diff.routes.ts- Updated canonical URL referencesrc/Web/StellaOps.Web/src/app/features/change-trace/change-trace.routes.ts- Added breadcrumb, title, sprint ref
- Tests:
src/Web/StellaOps.Web/src/app/routes/releases.routes.spec.ts - Recheck (2026-03-09):
deploy-diffis now backed by the live lineage compare contract instead of the dead/api/v1/sbom/diffpath.change-traceis now backed by the restored/api/change-traces/buildand/api/change-traces/{traceId}compatibility endpoints in SbomService.- Focused verification passed on
src/Web/StellaOps.Web/src/app/features/deploy-diff/pages/deploy-diff.page.spec.tsandsrc/Web/StellaOps.Web/src/app/features/change-trace/change-trace-viewer.component.spec.ts.
Deliberately Excluded Legacy Behaviors
- The old timeline route at
/timeline(standalone top-level) is not revived - Direct mounting at
/releases/runs/:runId/timelinefor the investigation timeline is explicitly avoided (that path is owned by the run workspace)