Ultimate

X_NOTIFY_STORE_MISSING

Means

a channel needs a store nothing installed

Typical cause

an in-app channel with no inbox store, a digest window with no digest store, or — in staging and production only — a delivery claim with no ledger. The ledger's memory default is one process's heap, so outside development and test it refuses rather than let a replay on another replica, or after a restart, send twice; the cli boot installs a Postgres ledger (x_notify_deliveries) when the app has a database, so this fires only for an app with none and no notifyStores.ledger. An inbox and a digest window have no default at all: there is nowhere to put the row, so they refuse rather than skip. Never an optional chain at the call site, because a silently skipped inbox write is a notification the user never sees and nobody logs. cause and meta.store name which store is absent

Fix

export const runtime = { notifyStores: { inbox: memoryInboxStore(), digest: memoryDigestStore() } } in apps/<app>/runtime.ts — one object, naming every store this app wants: it is whole-object replacement and never a merge. postgresInboxStore({ executor }) shares the inbox across replicas

Listed under Notifications

This page as markdown