Ultimate

X_AUDIT_SINK_MISSING

Means

an action declares audit: true and no sink is installed

Typical cause

apps/<app>/runtime.ts names no auditSink. Raised before the input parse — it is the one audit failure with nothing committed behind it, and there is deliberately no logger-backed default: a line nobody stores would satisfy the declaration while recording nothing

Fix

auditSink: postgresAuditSink({ executor }) in export const runtime = { … }, apps/<app>/runtime.ts (Adapters). Two ship: postgresAuditSink({ executor }) — append-only x_audit, one row per record, no purge — and memoryAuditSink(), which is a bounded ring that drops (1,000 records, oldest first, dropped counts them) and is the dev sink, not a system of record. Nothing applies SQL_AUDIT_TABLE at boot yet, so run that DDL once against the app's database before naming the Postgres sink

Listed under Actions

This page as markdown