Skip to content

[Backend][Deploy] #1971 routing residuals: nginx doesn't proxy /mcp (split topology), wrong-verb GET on POST-only routes now 404s not 405s, PWA denylist misses /hubs and /health #1992

Description

@Chris0Jeky

Residuals from the Codex round on PR #1990 (post-fix-round head), tracked at the ceiling.

  1. Split-container topology: deploy/nginx/reverse-proxy.conf proxies /api/, /hubs/, /health/ (trailing slash) but not /mcp and not the bare prefixes — so the new 404 contract is API-side only there; unknown /mcp/* and bare prefixes still get the SPA from nginx. One location block each closes it end-to-end.
  2. Wrong-verb GET/HEAD on a real POST-only route (e.g. GET on a triage/execute endpoint) now routes to the GET fallback → 404, where the framework previously synthesized 405. Fail-safe and arguably enumeration-friendlier, but it is a contract change PR fix(backend): #1971 unknown /api/* returns 404, not the SPA fallback #1990's review missed — decide: accept-and-document (OpenAPI already implies methods) or restore 405 via a post-routing check.
  3. PWA: vite.config.ts navigateFallbackDenylist covers /api/ and /mcp but not /hubs/ or /health/ — an installed PWA answers those NAVIGATIONS with the cached shell before the backend is consulted (pre-existing; bounds [Backend][API] Unknown /api/* paths return 200 + index.html — the SPA fallback swallows API 404s #1971's fix in the browser).

Refs: PR #1990, #1971, ADR-0036 amendment 2026-08-22.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Priority IRelease-blocking/trust-breaking now. Per q-3 (2026-08-23) this tranche + #1876 = the v0.1.2 scope.backendPrimary implementation impact in .NET API/domain/application/infrastructure.hardeningReliability, safety, operability, and production-readiness improvements.testingTest coverage, harnesses, regression prevention, and verification pipeline work.

    Projects

    Status
    Review

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions