diff --git a/core/http/react-ui/src/pages/Middleware.jsx b/core/http/react-ui/src/pages/Middleware.jsx index 34d55d049..363b35f61 100644 --- a/core/http/react-ui/src/pages/Middleware.jsx +++ b/core/http/react-ui/src/pages/Middleware.jsx @@ -931,7 +931,8 @@ function eventDetails(e) { } case 'admission': { const retry = e.duration_ms != null ? `retry-after ${Math.round(e.duration_ms / 1000)}s` : '' - return `HTTP 503 rejected · ${retry}` + // Older audit rows were recorded as 503; newer ones as 429. + return `HTTP ${e.status_code || 429} rejected · ${retry}` } default: { const len = e.length != null ? `len ${e.length}` : '' diff --git a/core/services/routing/admission/admission.go b/core/services/routing/admission/admission.go index 168248181..f37273373 100644 --- a/core/services/routing/admission/admission.go +++ b/core/services/routing/admission/admission.go @@ -1,6 +1,6 @@ // Package admission is routing-module subsystem 5: per-model // concurrency control + audit. The middleware acquires a slot -// before the handler runs; on full, the request gets 503 with +// before the handler runs; on full, the request gets 429 with // Retry-After so clients back off rather than pile on. The audit // row goes into the shared event store alongside PII and proxy // rows so admins see a single timeline of routing pressure. diff --git a/core/services/routing/pii/types.go b/core/services/routing/pii/types.go index c2e2510df..ad15ea462 100644 --- a/core/services/routing/pii/types.go +++ b/core/services/routing/pii/types.go @@ -109,7 +109,7 @@ const ( // model's MaxConcurrent ceiling is full. The Host field carries // the model name (overloading the existing column rather than // adding a new one — admins read it as "the thing that was - // busy"); StatusCode is 503. + // busy"); StatusCode is 429. KindAdmission EventKind = "admission" )