X_RATE_LIMIT_NOT_SHARED
Means
the app declared a fleet-wide rate limit and the store keeps its counters per process
Typical cause
rateLimit.scope: 'shared' against memoryRateLimitStore(), whose scope is 'process'. assertRateLimitScope compares the two inside httpPipeline, before the socket opens — the outcome it PREVENTS is N replicas each enforcing the full bucket, so a declared limit: 5 costs 5 × N, silently. Also raised when enabled: false sits under scope: 'shared': a fleet-wide limit switched off is a claim with nothing behind it
Fix
install a shared store — httpServer({ routes, rateLimitStore: postgresRateLimitStore({ executor }) }) — or drop to scope: 'process' and terminate the limit at a shared proxy instead