feat(ui): reconnect release investigation routes [SPRINT-022]
Mount deploy-diff, change-trace, and timeline under /releases/investigation as bounded secondary routes. Timeline uses correlation-based model to avoid collision with shipped run-workspace tab. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
# Sprint 20260308-022 - FE Unreachable Release Investigation Routes
|
||||
|
||||
## Topic & Scope
|
||||
- Integrate the disconnected release-investigation route files into the canonical Releases product instead of reviving them as separate legacy products.
|
||||
- Cover the disconnected `timeline`, `deploy-diff`, and `change-trace` route families.
|
||||
- Important correction: the old timeline route cannot reclaim `/releases/runs/:runId/timeline` because that path is already owned by the shipped run workspace. This sprint must decide whether timeline functionality is absorbed into the current run workspace or mounted as a bounded secondary investigation route.
|
||||
- Working directory: `src/Web/StellaOps.Web`.
|
||||
- Allowed coordination edits: `docs/modules/ui/orphan-revival-batch/README.md`, `docs/modules/ui/TASKS.md`, `docs/modules/ui/implementation_plan.md`, `docs/features/checked/web/`, `src/Web/StellaOps.Web/src/app/routes/releases.routes.ts`, `src/Web/StellaOps.Web/src/app/features/timeline/`, `src/Web/StellaOps.Web/src/app/features/deploy-diff/`, `src/Web/StellaOps.Web/src/app/features/change-trace/`, `src/Web/StellaOps.Web/src/app/features/deployments/`, and mounted release or deployment host components that expose entry points.
|
||||
- Expected evidence: route-focused Angular tests, one checked-feature note, and sprint execution-log updates.
|
||||
|
||||
## Dependencies & Concurrency
|
||||
- Hard dependency inside the orphan revival batch: none.
|
||||
- External prerequisite already satisfied: the current `/releases` run workspace and deployment history are already canonical and mounted.
|
||||
- Safe parallelism:
|
||||
- Can run in parallel with sprints `013` through `020`.
|
||||
- Can run in parallel with sprints `021` and `023` because route-parent ownership does not overlap.
|
||||
|
||||
## Documentation Prerequisites
|
||||
- `docs/modules/ui/workflow-visualization-replay/README.md`
|
||||
- `docs/modules/ui/orphan-revival-batch/README.md`
|
||||
- `src/Web/StellaOps.Web/AGENTS.md`
|
||||
- `src/Web/StellaOps.Web/src/app/routes/releases.routes.ts`
|
||||
- `src/Web/StellaOps.Web/src/app/features/timeline/timeline.routes.ts`
|
||||
- `src/Web/StellaOps.Web/src/app/features/deploy-diff/deploy-diff.routes.ts`
|
||||
- `src/Web/StellaOps.Web/src/app/features/change-trace/change-trace.routes.ts`
|
||||
|
||||
## Delivery Tracker
|
||||
|
||||
### FE-URI-001 - Freeze canonical release-investigation URL contract
|
||||
Status: DONE
|
||||
Dependency: none
|
||||
Owners: Developer (FE), Product Manager
|
||||
Task description:
|
||||
- Freeze the canonical URLs, entry points, and ownership rules for timeline, deploy diff, and change trace before reconnecting anything.
|
||||
- Resolve the timeline duplication explicitly by choosing absorb-into-current-run-workspace or bounded-secondary-route, then record the decision.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Canonical URL contract is recorded in the execution log.
|
||||
- [x] Timeline absorb-vs-secondary-route decision is recorded.
|
||||
- [x] Deploy-diff and change-trace hosts are identified inside the Releases product.
|
||||
|
||||
### FE-URI-002 - Reconnect deploy-diff and change-trace
|
||||
Status: DONE
|
||||
Dependency: FE-URI-001
|
||||
Owners: Developer (FE)
|
||||
Task description:
|
||||
- Mount the disconnected deploy-diff and change-trace routes under canonical Releases-owned URLs and wire entry points from current deployment history or release detail contexts.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Deploy diff is reachable from a canonical Releases-owned URL.
|
||||
- [x] Change trace is reachable from a canonical Releases-owned URL.
|
||||
- [x] Entry points come from mounted deployment or release surfaces, not legacy dead navigation.
|
||||
|
||||
### FE-URI-003 - Integrate timeline investigation flow
|
||||
Status: DONE
|
||||
Dependency: FE-URI-001
|
||||
Owners: Developer (FE)
|
||||
Task description:
|
||||
- Implement the recorded timeline decision by either absorbing the disconnected timeline capability into the current run workspace or mounting it as a bounded secondary route that does not collide with the shipped run tab.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Timeline functionality is reachable through the canonical Releases shell without colliding with the shipped run tab contract.
|
||||
- [x] The final shape matches the decision recorded in `FE-URI-001`.
|
||||
- [x] Any deliberately excluded legacy timeline behaviors are documented.
|
||||
|
||||
### FE-URI-004 - Verify and document release-investigation reconnection
|
||||
Status: DONE
|
||||
Dependency: FE-URI-002
|
||||
Owners: Test Automation, Documentation author
|
||||
Task description:
|
||||
- Add focused route and host-integration coverage for the reconnected release-investigation routes and document the shipped slice.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Route-focused Angular tests cover the canonical release-investigation URLs.
|
||||
- [x] Checked-feature note exists under `docs/features/checked/web/`.
|
||||
- [x] UI plan/task docs reflect the release-investigation reconnection.
|
||||
|
||||
## Execution Log
|
||||
| Date (UTC) | Update | Owner |
|
||||
| --- | --- | --- |
|
||||
| 2026-03-08 | Sprint created from the orphan-revival batch to integrate disconnected release-investigation routes into the canonical Releases product. | Project Manager |
|
||||
| 2026-03-08 | FE-URI-001: URL contract frozen. Timeline decision: bounded-secondary-route at /releases/investigation/timeline (not absorb). Rationale: investigation timeline is correlation-based across services, distinct from run workspace timeline tab showing execution flow. Deploy-diff at /releases/investigation/deploy-diff, change-trace at /releases/investigation/change-trace. | Developer (FE) |
|
||||
| 2026-03-08 | FE-URI-002: DEPLOY_DIFF_ROUTES and changeTraceRoutes mounted under /releases/investigation/ via loadChildren. Breadcrumb data added to both route files. | Developer (FE) |
|
||||
| 2026-03-08 | FE-URI-003: TIMELINE_ROUTES mounted at /releases/investigation/timeline as bounded secondary route. No collision with shipped runs/:runId/timeline tab. Legacy standalone /timeline route not revived. | Developer (FE) |
|
||||
| 2026-03-08 | FE-URI-004: Route-focused tests created at releases.routes.spec.ts. Checked-feature note at docs/features/checked/web/release-investigation-routes.md. | Developer (FE) |
|
||||
|
||||
## Decisions & Risks
|
||||
- Decision: disconnected timeline, deploy-diff, and change-trace flows must live under the canonical Releases product.
|
||||
- Risk: the old timeline route duplicates a shipped run-tab path and cannot be re-mounted blindly.
|
||||
- Mitigation: freeze the URL contract first and require an explicit absorb-vs-secondary-route decision before implementation.
|
||||
- Decision (FE-URI-001): Timeline mounted as bounded-secondary-route at /releases/investigation/timeline. Rationale: the investigation timeline is a correlation-based tool (keyed by correlationId, spans multiple services) that is conceptually different from the run workspace timeline tab (keyed by runId, shows execution flow). Absorbing would force two distinct UIs into one component. The /releases/investigation/ prefix clearly signals these are cross-cutting analysis tools, not run-specific tabs.
|
||||
- Deliberately excluded: the old standalone /timeline top-level route is not revived; users access investigation timeline through the Releases shell.
|
||||
|
||||
## Next Checkpoints
|
||||
- 2026-03-09: release-investigation URL contract frozen.
|
||||
- 2026-03-11: route-integration criteria agreed.
|
||||
Reference in New Issue
Block a user