# 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' })`

[Actions](/error-codes#actions)
