Every daemon store change is exercised only against SQLite in CI; the pool's shared store runs the same LocalStore SQL through PostgresSyncDatabase + postgres-store-worker.js#rewrite. Review caught a SQLite-only construct (two-argument scalar MAX(x, y)) in #1068 that would throw on Postgres and silently disable a recovery path; the same class (IFNULL, two-arg MIN/MAX, INSERT OR IGNORE, datetime(), BEGIN IMMEDIATE) can slip in anywhere in local-store.ts. postgres-pool-store.int.test.ts is gated on DATA_PLANE_TEST_DATABASE_URL and never runs in CI. Ask: make the daemon store test suite (or a representative subset covering every statement in local-store.ts, e.g. by driving the same tests through a PostgresSyncDatabase backend) run in CI against a Testcontainers postgres:16-alpine, the way the control-plane integration project already does; plus a cheap lint/grep for the known SQLite-only constructs in local-store.ts. Refs #955, #1068, #1044.
Every daemon store change is exercised only against SQLite in CI; the pool's shared store runs the same
LocalStoreSQL throughPostgresSyncDatabase+postgres-store-worker.js#rewrite. Review caught a SQLite-only construct (two-argument scalarMAX(x, y)) in #1068 that would throw on Postgres and silently disable a recovery path; the same class (IFNULL, two-argMIN/MAX,INSERT OR IGNORE,datetime(),BEGIN IMMEDIATE) can slip in anywhere inlocal-store.ts.postgres-pool-store.int.test.tsis gated onDATA_PLANE_TEST_DATABASE_URLand never runs in CI. Ask: make the daemon store test suite (or a representative subset covering every statement inlocal-store.ts, e.g. by driving the same tests through aPostgresSyncDatabasebackend) run in CI against a Testcontainerspostgres:16-alpine, the way the control-plane integration project already does; plus a cheap lint/grep for the known SQLite-only constructs inlocal-store.ts. Refs #955, #1068, #1044.