Follow-up to #187 and PR #188.
Summary
Implement a PostgreSQL-backed drift store so drift items and computed network conflict decisions are durable in Postgres deployments.
Why
PR #188 persists computed conflict decisions through the configured drift store. SQLite is durable, but the current PostgreSQL wiring still relies on the existing in-memory drift fallback.
Scope
- Add Postgres migrations for
drift_items equivalent to the SQLite schema.
- Implement
storage.DriftStore for Postgres.
- Wire Postgres builds to use the durable drift store.
- Add tests for create/get/list/update/delete behavior.
Acceptance Criteria
- Postgres deployments retain drift and computed conflict decisions across process restarts.
- Existing drift API behavior matches SQLite and memory implementations.
- Postgres race tests cover the drift store path.
Follow-up to #187 and PR #188.
Summary
Implement a PostgreSQL-backed drift store so drift items and computed network conflict decisions are durable in Postgres deployments.
Why
PR #188 persists computed conflict decisions through the configured drift store. SQLite is durable, but the current PostgreSQL wiring still relies on the existing in-memory drift fallback.
Scope
drift_itemsequivalent to the SQLite schema.storage.DriftStorefor Postgres.Acceptance Criteria