ad48829337
The dual backend (SQLite via db.js + Postgres via schema.pg.sql) was a maintenance foot-gun: a schema change could land on the SQLite path only and silently 500 every read on prod (it just did, with #18/#13). Production has run on Postgres for weeks, so SQLite is retired: ONE schema source of truth (db/schema.pg.sql), no drift possible. - dbx.js: default DB_BACKEND=pg; an unknown backend now fails loudly at require time instead of silently selecting a stale engine. - Deleted server/db.js, server/db/sqlite.js, server/db/migrate-sqlite-to-pg.js, server/scripts/migrate-bizgaze-only.js (all SQLite-only, none in the runtime path — the running server loads db/pg.js). - Tests (e2e, db-smoke) target Postgres now and fail-fast (skip) unless DATABASE_URL points at a disposable test DB — never SQLite, never prod. - Removed the dead DB_PATH env + fixed misleading SQLite comments in the Dockerfile / docker-compose (kept the /data volume: it holds uploads/recordings/transcripts/downloads, not just the old data.db). - CLAUDE.md: stack + repo-layout + run-locally updated for Postgres-only. Runtime is unaffected (prod already sets DB_BACKEND=pg and pg is a prod dep); this only removes the unused SQLite path. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>