docs(web): archive scope-preserving actions sprint

This commit is contained in:
master
2026-03-08 15:29:13 +02:00
parent e169018f4a
commit bbe0100861

View File

@@ -0,0 +1,88 @@
# Sprint 20260307-016 - FE Mission Control Scope-Preserving Actions
## Topic & Scope
- Repair mission-control and mission-board summary/action links so they preserve the active tenant, region, environment, and time-window scope when routing into downstream surfaces.
- Eliminate reliance on target-route redirects accidentally keeping or dropping query parameters depending on the destination module.
- Add focused Angular coverage for the affected mission links, then replay the broken actions with live Playwright from `https://stella-ops.local`.
- Working directory: `src/Web/StellaOps.Web`.
- Expected evidence: focused Angular tests, live Playwright action checks on mission board/alerts/activity links, and sprint execution log updates.
## Dependencies & Concurrency
- Depends on the earlier mission-board route and environment-scope fixes (`SPRINT_20260307_012`, `SPRINT_20260307_013`, and `SPRINT_20260307_015`) because this iteration preserves the already-correct global scope instead of redefining it.
- Safe parallelism: stay inside `src/Web/StellaOps.Web` plus this sprint file; do not touch unrelated navigation/settings/sidebar/user-menu work that other agents are editing.
- Scope is limited to mission-control and mission-board action links, not downstream page data models.
## Documentation Prerequisites
- `src/Web/StellaOps.Web/AGENTS.md`
- `src/Web/StellaOps.Web/src/app/features/dashboard-v3/dashboard-v3.component.ts`
- `src/Web/StellaOps.Web/src/app/features/mission-control/mission-alerts-page.component.ts`
- `src/Web/StellaOps.Web/src/app/features/mission-control/mission-activity-page.component.ts`
## Delivery Tracker
### FE-MISSION-001 - Reproduce scope loss from mission action links
Status: DONE
Dependency: none
Owners: QA
Task description:
- Replay the live mission alerts/activity actions from the authenticated shell with Playwright.
- Capture which links drop `tenant`, `regions`, and `environments` when leaving mission-control surfaces.
Completion criteria:
- [x] Live Playwright evidence shows the exact mission actions that lose active scope.
- [x] The defect is reduced to a specific link-contract pattern instead of a generic downstream page issue.
### FE-MISSION-002 - Make mission action links explicitly preserve active scope
Status: DONE
Dependency: FE-MISSION-001
Owners: Developer
Task description:
- Update mission-board and mission-control action links so they use explicit query-param merge semantics.
- Keep the fix scoped to the action layer so downstream pages receive the already-selected global context without route-specific patches.
Completion criteria:
- [x] Mission-board summary, alert, activity, and cross-domain action links preserve active scope during navigation.
- [x] Mission-control alerts and activity action links preserve active scope during navigation.
### FE-MISSION-003 - Add focused Angular coverage for scope-preserving links
Status: DONE
Dependency: FE-MISSION-002
Owners: Test Automation
Task description:
- Add focused tests that assert the affected mission action links use the explicit query-param merge contract.
- Keep the coverage under `src/app/core/testing` so it remains in the focused Angular test include set.
Completion criteria:
- [x] Focused Angular tests assert the relevant mission links use `queryParamsHandling="merge"`.
- [x] The tests fail before the fix and pass after it.
### FE-MISSION-004 - Replay mission actions live after the patch
Status: DONE
Dependency: FE-MISSION-003
Owners: QA
Task description:
- Re-run the previously broken mission alerts/activity actions against the live authenticated shell.
- Confirm the downstream pages keep the original tenant/region/environment scope after navigation.
Completion criteria:
- [x] Live Playwright confirms approvals, disposition, data-integrity, and release-runs actions retain the scoped query string.
- [x] Live Playwright confirms the fixed links no longer depend on destination-route behavior to keep context.
## Execution Log
| Date (UTC) | Update | Owner |
| --- | --- | --- |
| 2026-03-07 | Sprint created after live Playwright from `/mission-control/alerts` and `/mission-control/activity` showed several actions dropping `tenant=demo-prod&regions=us-east&environments=stage` on navigation, while others kept it only by route-specific accident. | QA |
| 2026-03-07 | Updated mission-board plus dedicated mission alerts/activity links to use explicit `queryParamsHandling=\"merge\"` and added focused coverage in `src/app/core/testing/mission-scope-links.component.spec.ts`; focused Angular run passed for `dashboard-v3`, mission-scope-links, and `platform-context.store`. | Developer |
| 2026-03-07 | Live Playwright on the rebuilt stack confirmed the original broken mission links now keep `tenant`, `regions`, and `environments`, but a deeper race remained: fresh authenticated navigations could still collapse scoped URLs back to tenant-only during global context initialization. | QA |
| 2026-03-07 | Fixed the context hydration race in `PlatformContextStore` by retaining the latest pending scope query until initialization completes, then added a focused store regression covering late-arriving route scope during bootstrap. | Developer |
| 2026-03-07 | Rebuilt the Web bundle, synced `dist/stellaops-web/browser` into the live `compose_console-dist` volume, and re-ran live Playwright on `/mission-control/board`, `/mission-control/alerts`, and `/mission-control/activity` with `timeWindow=7d`. Source URLs and representative actions now retain `tenant=demo-prod&regions=us-east&environments=stage&timeWindow=7d` through downstream routes such as `/releases/approvals`, `/security/disposition`, and `/releases/runs`. | QA |
## Decisions & Risks
- Decision: fix scope preservation at the mission-link layer with explicit query-param merge semantics rather than modifying every downstream route that currently receives an empty or partial query string.
- Risk: the main dashboard uses the same static mission links, so the fix must cover both the dedicated mission-control pages and the mission-board surface in the same iteration.
- Decision: treat the later tenant-only URL collapse as a context-initialization defect in `PlatformContextStore`, not another mission-page routing issue, because the scoped route arrived before context initialization completed and the store only remembered the first query override.
- Decision: keep the default `24h` time window omission from `scopeQueryPatch()` unchanged; live verification used a non-default `7d` value to prove that explicit time-window scope now survives initialization and navigation.
## Next Checkpoints
- 2026-03-07: land the scope-preserving mission action patch and focused Angular coverage.
- 2026-03-07: replay the affected mission actions with live Playwright and continue the authenticated page/action sweep.