X_RATE_LIMIT_SCOPE_UNSET
Means
the deployment has not said where the rate limiter keeps its counters
Typical cause
an enabled rateLimit with no scope, at defineHttpConfig. Reachable only from an embedder that builds its own config: scope is boot-owned, so configureHttp() type-refuses it and a process booted by x dev or apps/web/server.ts DERIVES it from the store it installed. scope used to default to 'process', so login: { limit: 5 } against the 3 web replicas this repo's own chart ships enforced 15 per window, with a green x verify and nothing anywhere to read. assertRateLimitScope only ever fired for an app that said 'shared', so the silent case was exactly the one nobody declared. One process is still a legal answer; it is no longer an assumed one
Fix
defineHttpConfig({ rateLimit: { scope: 'process' } }) if this app runs as ONE replica, or scope: 'shared' plus httpServer({ routes, rateLimitStore: postgresRateLimitStore({ executor }) }) for a fleet-wide limit