X_IDEMPOTENCY_NOT_SHARED
Means
idempotency is declared fleet-wide and the installed store is per-process
Typical cause
configureIdempotency({ scope: 'shared' }) against a store whose scope is 'process' — or one that declares no scope at all, refused identically: what cannot be shown to be shared is not assumed to be. Refused at registration, before a socket opens, because the failure it replaces is silent and expensive — under replicas: 3 the retry that lands on another replica finds no record, re-runs the handler and charges the card again, with nothing anywhere saying it did
Fix
drop the idempotencyStore: field from apps/<app>/runtime.ts so the boot installs its shared postgresIdempotencyStore() over DATABASE_URL, or hand it one: idempotencyStore: postgresIdempotencyStore({ executor: { query: (text, values) => client.query({ text, values }) }, origin: () => client, reclaimAfterMs: requestDeadlineMs }) (never executor: Bun.sql — it has no .query) — or drop the declaration to configureIdempotency({ scope: 'process' })