46 lines
3.4 KiB
Markdown
46 lines
3.4 KiB
Markdown
# 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)
|