docs(router): archive header binding sprint

This commit is contained in:
master
2026-03-08 15:34:26 +02:00
parent 69813807a9
commit c4b9373bf5
2 changed files with 1 additions and 1 deletions

View File

@@ -0,0 +1,77 @@
# Sprint 20260307-011 - Router Case-Insensitive Forwarded Header Binding
## Topic & Scope
- Remove the live `Failed to persist global context preferences.` degradation that still occurs after Topology operator actions on `https://stella-ops.local`.
- Fix the Router ASP.NET bridge so forwarded HTTP headers remain case-insensitive after request-frame transport round-trips.
- Add focused Router regression coverage for lowercase `content-type` on JSON request dispatch and verify the repaired live user flow with Playwright.
- Working directory: `src/Router/__Libraries/StellaOps.Microservice.AspNetCore`.
- Expected evidence: targeted Router tests, rebuilt `platform` container on the live stack, and Playwright artifacts for the affected topology actions.
## Dependencies & Concurrency
- Upstream dependency: `docs/implplan/SPRINT_20260307_010_FE_context_preferences_canonical_payload.md` aligned the Web payload with the Platform v2 contract and reduced the live failure from gateway `404` to service-side `400`.
- Safe parallelism: stay inside the Router ASP.NET bridge, its focused tests, Router docs, and sprint/task-board updates. Do not edit unrelated Web navigation or settings work from other agents.
- Deployment dependency: the live fix only requires rebuilding the `platform` image because the failing bridge code executes inside the Platform service process.
## Documentation Prerequisites
- `docs/modules/router/architecture.md`
- `src/Router/AGENTS.md`
- `src/Router/__Libraries/StellaOps.Microservice.AspNetCore/AGENTS.md`
## Delivery Tracker
### ROUTER-HDR-001 - Reproduce the live context persistence failure after the frontend contract fix
Status: DONE
Dependency: none
Owners: QA
Task description:
- Replay the Topology environment detail operator actions with live Playwright after the Web payload was corrected.
- Capture the remaining request/response behavior and determine whether the fault still sits in the gateway/bridge path or in Platform business logic.
Completion criteria:
- [x] Live Playwright reproduces the degraded banner after Topology operator actions.
- [x] Captured requests show the canonical payload emitted by Web.
- [x] Evidence isolates the remaining failure to Router-dispatched service execution rather than route discovery.
### ROUTER-HDR-002 - Restore case-insensitive forwarded header handling in the ASP.NET bridge
Status: DONE
Dependency: ROUTER-HDR-001
Owners: Developer
Task description:
- Update `AspNetRouterRequestDispatcher` so forwarded headers behave according to HTTP semantics after frame transport round-trips.
- Add a focused regression that round-trips a lowercase `content-type` header and verifies JSON request metadata survives dispatch.
- Ensure minimal-API request-body detection is populated so JSON body binding continues to work after Router frame dispatch.
Completion criteria:
- [x] Lowercase forwarded `content-type` reaches dispatched ASP.NET endpoints.
- [x] The regression fails on the broken behavior and passes with the fix.
- [x] The change remains scoped to Router bridge semantics without unrelated transport rewrites.
### ROUTER-HDR-003 - Rebuild Platform and verify the live topology operator actions
Status: DONE
Dependency: ROUTER-HDR-002
Owners: QA
Task description:
- Rebuild the `stellaops/platform:dev` image with the Router bridge fix, recreate only the Platform container, and replay the affected operator actions using Playwright.
- Confirm the degraded banner disappears and the downstream routes still render with the persisted environment context.
Completion criteria:
- [x] Live Playwright confirms the degraded banner is gone for `Open Targets`, `Open Agents`, `Open Runs`, and `Open Security Triage`.
- [x] `PUT /api/v2/context/preferences` succeeds on the live stack.
- [x] The downstream routes remain functional after context persistence updates.
## Execution Log
| Date (UTC) | Update | Owner |
| --- | --- | --- |
| 2026-03-07 | Sprint created after live Playwright replay on `https://stella-ops.local/setup/topology/environments/dev/posture` still showed `EVENTS: DEGRADED Failed to persist global context preferences.` even after the Web payload was reduced to canonical v2 fields. | QA |
| 2026-03-07 | Rebuilt only `platform` with the latest Router transport changes and replayed the live flow. The request path moved from gateway `404` to routed `400`, proving route registration was fixed and the remaining failure was inside dispatched request execution. | QA |
| 2026-03-07 | Live capture showed `PUT /api/v2/context/preferences` carrying canonical JSON while Router logs confirmed dispatch to `platform/1.0.0-alpha1`; the remaining suspicion is case-sensitive header rehydration dropping HTTP/2 lowercase `content-type` before ASP.NET body binding. | QA |
| 2026-03-07 | Added focused Router bridge regressions, including a real minimal-API JSON body-binding replay. The stronger test reproduced the same `400` until the dispatcher restored case-insensitive header lookup and populated ASP.NET request-body detection for frame-dispatched POST/PUT/PATCH requests. | Developer |
| 2026-03-07 | Rebuilt and recreated only `platform`, then replayed the four Topology operator actions with live Playwright. `PUT /api/v2/context/preferences` now returns `200` and the UI remains on `EVENTS: CONNECTED` for Targets, Agents, Runs, and Security Triage. | QA |
## Decisions & Risks
- Decision: fix the Router bridge at the header rehydration layer instead of widening Platform contracts or adding UI-side workarounds.
- Decision: include explicit ASP.NET request-body detection in the bridge because header casing alone was insufficient for minimal-API JSON binding after request-frame dispatch.
- Residual risk: other services using the same bridge should still be covered by broader Playwright/API sweeps because this fix addresses the common body-binding path but does not validate every endpoint surface.
## Next Checkpoints
- 2026-03-07: continue live Playwright QA sweeps now that Topology operator actions no longer degrade global context persistence.