Files
git.stella-ops.org/docs/features/checked/web/release-investigation-routes.md

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 no from/to digests 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-diff no longer fails with Missing Parameters. Direct navigation now shows No Comparison Selected plus recovery actions back to /releases/deployments and /releases/overview.
  • /releases/investigation/change-trace no longer renders an inert No Change Trace Loaded shell. Direct navigation now shows No Comparison Selected plus recovery actions to /releases/deployments, or back to deploy-diff when from/to digests are already present.
  • Both workspaces preserve tenant/scope query context when it exists and fall back to the canonical demo-prod tenant 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 loadChildren entries under investigation/ prefix
  • Feature routes updated:
    • src/Web/StellaOps.Web/src/app/features/timeline/timeline.routes.ts - Added breadcrumb, title, sprint ref
    • src/Web/StellaOps.Web/src/app/features/deploy-diff/deploy-diff.routes.ts - Updated canonical URL reference
    • src/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-diff is now backed by the live lineage compare contract instead of the dead /api/v1/sbom/diff path.
    • change-trace is now backed by the restored /api/change-traces/build and /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.ts and src/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/timeline for the investigation timeline is explicitly avoided (that path is owned by the run workspace)