Fix release health multi-scope evidence contracts
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# Sprint 20260307-012 - FE Mission Control Release Health Environment Resolution
|
||||
|
||||
## Topic & Scope
|
||||
- Repair `/mission-control/release-health` so it resolves and displays the active environment instead of rendering an empty environment header shell.
|
||||
- Reuse the already-synced global query context (`environment`, `environments`, `env`) as a fallback when the route has no `:environmentId` segment.
|
||||
- Add focused Web tests for query-driven environment resolution and the explicit no-environment empty state, then verify the live route with Playwright.
|
||||
- Working directory: `src/Web/StellaOps.Web`.
|
||||
- Expected evidence: focused Web unit tests, live Playwright verification on `https://stella-ops.local`, and sprint execution log updates.
|
||||
|
||||
## Dependencies & Concurrency
|
||||
- Depends on the earlier Topology context persistence iterations (`SPRINT_20260307_010` and `SPRINT_20260307_011`) because `/mission-control/release-health` now receives stable synced query context from the global platform context store.
|
||||
- Safe parallelism: stay inside `src/Web/StellaOps.Web` plus sprint updates; do not touch unrelated settings/sidebar/user-menu work already in progress from other agents.
|
||||
- QA lead: route was previously listed as FALLBACK in `docs/qa/baseline-test-results-2026-02-26.md`, so this pass revalidates that route at current runtime behavior instead of treating the old baseline as the final truth.
|
||||
|
||||
## Documentation Prerequisites
|
||||
- `src/Web/StellaOps.Web/AGENTS.md`
|
||||
- `src/Web/StellaOps.Web/src/app/routes/mission-control.routes.ts`
|
||||
- `src/Web/StellaOps.Web/src/app/features/topology/environment-posture-page.component.ts`
|
||||
|
||||
## Delivery Tracker
|
||||
|
||||
### FE-RH-001 - Reproduce the live release-health context resolution gap
|
||||
Status: DONE
|
||||
Dependency: none
|
||||
Owners: QA
|
||||
Task description:
|
||||
- Replay `/mission-control/release-health` with live Playwright after the Topology context persistence fix landed.
|
||||
- Confirm whether the page resolves an environment or still renders the generic header/empty summaries.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Live Playwright captures the current `release-health` page behavior.
|
||||
- [x] The route defect is isolated to environment resolution rather than route existence.
|
||||
|
||||
### FE-RH-002 - Resolve environment context from route or synced query state
|
||||
Status: DONE
|
||||
Dependency: FE-RH-001
|
||||
Owners: Developer
|
||||
Task description:
|
||||
- Update `EnvironmentPosturePageComponent` so it falls back to query-context environment identifiers when the route lacks `:environmentId`.
|
||||
- Show an explicit guidance message when no environment can be resolved instead of rendering a misleading empty summary.
|
||||
- Add focused unit tests for query fallback and the no-environment state.
|
||||
|
||||
Completion criteria:
|
||||
- [x] `/mission-control/release-health` resolves `dev` from synced query context and loads posture data.
|
||||
- [x] The component shows an explicit empty-state/error message when no environment is available.
|
||||
- [x] Focused unit tests cover both the query fallback and missing-environment behavior.
|
||||
|
||||
### FE-RH-003 - Replay the live mission-control release-health route
|
||||
Status: DONE
|
||||
Dependency: FE-RH-002
|
||||
Owners: QA
|
||||
Task description:
|
||||
- Replay the live route with Playwright after the Web patch is built into the running stack.
|
||||
- Confirm the page shows a resolved environment label/region and that the quick links remain user-reachable.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Live Playwright shows the resolved environment label instead of the generic header shell.
|
||||
- [x] Quick links from `release-health` remain reachable without degraded state.
|
||||
|
||||
## Execution Log
|
||||
| Date (UTC) | Update | Owner |
|
||||
| --- | --- | --- |
|
||||
| 2026-03-07 | Sprint created after live Playwright on `/mission-control/release-health` showed the route no longer fell back, but still rendered a generic environment header with empty summaries because the component expected a route param that the mission-control route never provided. | QA |
|
||||
| 2026-03-07 | Added query-context environment fallback plus explicit no-environment guidance in `EnvironmentPosturePageComponent`; focused Angular specs for query fallback and missing-context behavior passed via `npx ng test --watch=false --include src/app/core/testing/environment-posture-page.component.spec.ts --include src/app/core/testing/global-context-http.interceptor.spec.ts`. | Developer |
|
||||
| 2026-03-07 | Replayed `/mission-control/release-health` with live Playwright after rebuilding the Web bundle. The route resolved `Development · us-east`, Pack22 requests returned `200`, and the action links to Release Runs, Findings, and Decision Capsules stayed reachable without degraded state. | QA |
|
||||
|
||||
## Decisions & Risks
|
||||
- Decision: fix the component at the environment-resolution layer rather than adding a route parameter to mission-control, because the route is already fed by the global query context sync and should honor that state.
|
||||
- Decision: keep the shared multi-scope/evidence contract work in Sprint `20260307-013` because the component fix alone did not address narrowed region scope or the missing evidence adapter.
|
||||
- Risk: other routes may still mount shared components with mismatched parameter expectations, so the broader mission-control sweep should continue after this fix.
|
||||
|
||||
## Next Checkpoints
|
||||
- 2026-03-07: continue the mission-control/topology Playwright sweep for the next live defects outside this component-specific environment-resolution fix.
|
||||
@@ -0,0 +1,102 @@
|
||||
# Sprint 20260307-013 - Platform Release Health Multi-Scope Evidence Adapter
|
||||
|
||||
## Topic & Scope
|
||||
- Repair the Pack22 release-health contract so multi-region context is preserved across Platform read models instead of being collapsed to the first selected region.
|
||||
- Add the missing `/api/v2/evidence/packs` adapter required by shared topology and mission-control environment surfaces.
|
||||
- Align the Web release-health/topology environment surfaces with multi-region environment scope so headers and evidence summaries no longer degrade into `unknown-region` or silent `404 -> empty` behavior.
|
||||
- Working directory: `src/Platform/StellaOps.Platform.WebService`.
|
||||
- Expected evidence: focused Platform endpoint tests, focused Web unit tests, live Playwright verification on `https://stella-ops.local`, and updated docs.
|
||||
|
||||
## Dependencies & Concurrency
|
||||
- Depends on `SPRINT_20260307_012_FE_mission_control_release_health_environment_resolution` for the initial route/query-context repair in the shared release-health component.
|
||||
- Safe parallelism: Platform contract work may update the consuming Web release-health/topology files and the global context interceptor, but must not touch unrelated UI/navigation/settings work already in progress from other agents.
|
||||
- This iteration is scoped to release-health/topology/evidence contract correctness only; broader evidence UX and cross-module correlation filters remain separate follow-up work.
|
||||
|
||||
## Documentation Prerequisites
|
||||
- `src/Platform/AGENTS.md`
|
||||
- `src/Web/StellaOps.Web/AGENTS.md`
|
||||
- `docs/modules/platform/architecture-overview.md`
|
||||
- `docs/modules/ui/v2-rewire/S00_endpoint_contract_ledger_v2_pack22.md`
|
||||
|
||||
## Delivery Tracker
|
||||
|
||||
### PLAT-RH-001 - Reproduce multi-scope release-health contract failures
|
||||
Status: DONE
|
||||
Dependency: none
|
||||
Owners: QA
|
||||
Task description:
|
||||
- Replay `/mission-control/release-health` with live Playwright after the route fallback fix and capture the real backend request set.
|
||||
- Confirm whether the route still narrows context incorrectly or calls missing evidence contracts.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Live Playwright captures the actual request/response set for release-health.
|
||||
- [x] Root cause is reduced to concrete contract defects instead of generic empty-state rendering.
|
||||
|
||||
### PLAT-RH-002 - Preserve multi-select scope through Platform read models
|
||||
Status: DONE
|
||||
Dependency: PLAT-RH-001
|
||||
Owners: Developer
|
||||
Task description:
|
||||
- Update the global Web context propagation and Platform release read models so multi-region/multi-environment scope remains a real filter set instead of collapsing to the first selected value.
|
||||
- Add targeted backend tests that prove comma-delimited scope filters are honored deterministically.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Multi-region scope no longer collapses to `region=<first-selected>` semantics for release-health traffic.
|
||||
- [x] Release read-model endpoints honor comma-delimited region/environment filters.
|
||||
- [x] Targeted backend tests prove deterministic multi-scope behavior.
|
||||
|
||||
### PLAT-RH-003 - Add the Pack22 evidence packs adapter for release-health/topology
|
||||
Status: DONE
|
||||
Dependency: PLAT-RH-001
|
||||
Owners: Developer
|
||||
Task description:
|
||||
- Implement `/api/v2/evidence/packs` in Platform as the Pack22 read-model adapter required by shared topology and mission-control environment views.
|
||||
- Return deterministic list payloads derived from release evidence posture instead of allowing the UI to hit a nonexistent route.
|
||||
|
||||
Completion criteria:
|
||||
- [x] `/api/v2/evidence/packs` returns `200` on the live stack.
|
||||
- [x] Shared topology/release-health consumers can load decision capsule summaries without silent `404` fallback.
|
||||
- [x] Targeted backend tests cover deterministic list behavior and policy wiring.
|
||||
|
||||
### PLAT-RH-004 - Rebind shared environment surfaces to multi-scope summaries
|
||||
Status: DONE
|
||||
Dependency: PLAT-RH-002
|
||||
Owners: Developer
|
||||
Task description:
|
||||
- Update the shared environment posture/detail UI so multi-region environment scope renders an accurate label instead of `unknown-region`.
|
||||
- Keep the route query fallback from Sprint 012 while making the shared presentation reflect the resolved scope and live evidence contract.
|
||||
|
||||
Completion criteria:
|
||||
- [x] `/mission-control/release-health` shows a resolved environment label and multi-region summary.
|
||||
- [x] Shared topology environment surfaces stop showing `unknown-region` for valid multi-scope selections.
|
||||
- [x] Focused Web tests cover multi-region scope presentation and context propagation.
|
||||
|
||||
### PLAT-RH-005 - Replay the live release-health flow end to end
|
||||
Status: DONE
|
||||
Dependency: PLAT-RH-003
|
||||
Owners: QA
|
||||
Task description:
|
||||
- Rebuild only the touched Platform/Web artifacts, redeploy them, and replay the release-health route plus its action links with live Playwright.
|
||||
- Confirm the page loads real data contracts and no longer masks missing evidence or narrowed region scope.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Live Playwright shows a resolved environment/region summary without `unknown-region`.
|
||||
- [x] Live Playwright captures `200` responses for the release-health evidence/read-model requests.
|
||||
- [x] Release-health action links remain reachable after the contract fixes.
|
||||
|
||||
## Execution Log
|
||||
| Date (UTC) | Update | Owner |
|
||||
| --- | --- | --- |
|
||||
| 2026-03-07 | Sprint created after live Playwright on `/mission-control/release-health` showed two deeper contract defects: global context narrowed multi-region scope to `region=apac`, and the shared component called missing `/api/v2/evidence/packs` routes while rendering false empty summaries. | QA |
|
||||
| 2026-03-07 | Updated the global context HTTP interceptor and Platform release read models to preserve comma-delimited region/environment scope sets end to end; focused Angular specs passed and focused Platform endpoint tests passed through the Platform test executable (`Total: 8, Errors: 0, Failed: 0, Skipped: 0`). | Developer |
|
||||
| 2026-03-07 | Added the Platform `/api/v2/evidence/packs` adapter, rebuilt the scoped Platform container and Web bundle, and replayed `/mission-control/release-health` plus shared topology environment actions with live Playwright. Post-auth route checks were clean, Pack22 requests returned `200`, and the shared action links stayed reachable without degraded state. | QA |
|
||||
|
||||
## Decisions & Risks
|
||||
- Decision: treat the release-health failure as a shared Pack22 contract problem, not a one-off FE route bug, because the same evidence/scope defects impact shared topology environment surfaces.
|
||||
- Decision: keep the iteration scoped to Platform read models plus the directly affected Web consumers, rather than broadening into general evidence UX work.
|
||||
- Decision: implement `/api/v2/evidence/packs` as a deterministic Platform read-model adapter derived from release run evidence posture so Pack22 surfaces consume a canonical Console backend contract instead of probing nonexistent evidence routes.
|
||||
- Risk: the signed-out shell still emits unauthenticated `/api/v2/context/*` and `/api/v1/doctor/scheduler/trends/categories/*` bootstrap requests before auth is established; that is a separate live defect for the next QA/developer iteration.
|
||||
- Risk: other pages may still assume single-region scope in ad hoc component code; continue Playwright sweeps after this iteration lands.
|
||||
|
||||
## Next Checkpoints
|
||||
- 2026-03-07: start the next live-auth/bootstrap iteration on the signed-out shell `401` requests discovered during the topology sweep.
|
||||
@@ -87,7 +87,7 @@ graph TD
|
||||
Observability -.-> Notify
|
||||
```
|
||||
|
||||
Platform Service (StellaOps.Platform.WebService) aggregates cross-service status for the Console UI (health, quotas, onboarding, preferences, global search) and does not mutate raw evidence.
|
||||
Platform Service (StellaOps.Platform.WebService) aggregates cross-service status for the Console UI (health, quotas, onboarding, preferences, global search) and does not mutate raw evidence. Pack22 environment posture surfaces also consume Platform v2 read-model adapters, including `/api/v2/evidence/packs`, with comma-delimited `region` and `environment` scope sets preserved end to end so multi-select Console context is not collapsed by the backend.
|
||||
|
||||
Key boundaries:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user