Files
git.stella-ops.org/docs/features/checked/web/release-investigation-routes.md
master fdf95e0f46 docs: module dossier + install/quickstart sync for truthful cutover sprints
- API_CLI_REFERENCE.md, INSTALL_GUIDE.md, quickstart.md, architecture/integrations.md, dev/DEV_ENVIRONMENT_SETUP.md, integrations/LOCAL_SERVICES.md: reflect real-service wiring.
- docs/modules/**: module dossier updates across the modules touched by SPRINT_20260415_001..007 + SPRINT_20260416_003..017 + SPRINT_20260417_018..024 + SPRINT_20260418_025 + SPRINT_20260419_026.
- docs/features/checked/web/**: update feature notes where UI changed.
- docs/qa/feature-checks/runs/web/evidence-presentation-ux/: QA evidence artifacts.
- docs/setup/**, docs/technical/**: align with setup wizard contracts.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 14:45:09 +03:00

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 default 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)