docs(14): capture phase context
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
# Phase 14: PostgreSQL Migration - Discussion Log
|
||||
|
||||
> **Audit trail only.** Do not use as input to planning, research, or execution agents.
|
||||
> Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.
|
||||
|
||||
**Date:** 2026-04-04
|
||||
**Phase:** 14-postgresql-migration
|
||||
**Areas discussed:** Migration strategy, Data migration script, Test infrastructure, Docker Compose layout
|
||||
**Mode:** --auto (all decisions auto-selected as recommended defaults)
|
||||
|
||||
---
|
||||
|
||||
## Migration Strategy
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Clean schema rewrite | Rewrite schema.ts using drizzle-orm/pg-core with fresh migration history | ✓ |
|
||||
| Convert existing migrations | Transform SQLite migrations to Postgres equivalents | |
|
||||
| Dual-dialect schema | Maintain both SQLite and Postgres schema definitions | |
|
||||
|
||||
**User's choice:** [auto] Clean schema rewrite (recommended default)
|
||||
**Notes:** SQLite and Postgres dialects differ enough (type system, auto-increment vs serial, pragma vs native features) that converting migrations is error-prone. Fresh start is cleaner.
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Fresh Postgres migration history | New directory, archive SQLite migrations | ✓ |
|
||||
| Convert SQLite migrations | Rewrite each .sql file for Postgres | |
|
||||
|
||||
**User's choice:** [auto] Fresh Postgres migration history (recommended default)
|
||||
**Notes:** 10 existing SQLite migrations would need manual conversion. Starting fresh avoids dialect translation bugs.
|
||||
|
||||
---
|
||||
|
||||
## Data Migration Script
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Standalone TypeScript script | Reads SQLite, writes Postgres, one-time use | ✓ |
|
||||
| Drizzle migration | Built into the migration pipeline | |
|
||||
| SQL dump + import | pg_dump-style approach | |
|
||||
|
||||
**User's choice:** [auto] Standalone TypeScript script (recommended default)
|
||||
**Notes:** One-time operation that doesn't belong in the migration pipeline. Script can handle type conversions explicitly.
|
||||
|
||||
---
|
||||
|
||||
## Test Infrastructure
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Per-test PGlite instance | Fresh database per test, migrations applied each time | ✓ |
|
||||
| Shared PGlite with transaction rollback | One instance, wrap each test in a rolled-back transaction | |
|
||||
| Shared PGlite with cleanup | One instance, truncate tables between tests | |
|
||||
|
||||
**User's choice:** [auto] Per-test PGlite instance (recommended default)
|
||||
**Notes:** Matches current in-memory SQLite pattern. Avoids test pollution. PGlite is lightweight enough for per-test instances.
|
||||
|
||||
---
|
||||
|
||||
## Docker Compose Layout
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Separate dev compose file | docker-compose.dev.yml with Postgres for development | ✓ |
|
||||
| Single compose with profiles | Use Docker Compose profiles for dev vs prod | |
|
||||
| Extend existing compose | Add Postgres to the single docker-compose.yml | |
|
||||
|
||||
**User's choice:** [auto] Separate dev compose file (recommended default)
|
||||
**Notes:** Separation of concerns. Production compose will also need Postgres eventually but with different configuration.
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| PostgreSQL 16 | Latest stable release | ✓ |
|
||||
| PostgreSQL 15 | Previous stable | |
|
||||
|
||||
**User's choice:** [auto] PostgreSQL 16 (recommended default)
|
||||
|
||||
---
|
||||
|
||||
## Claude's Discretion
|
||||
|
||||
- Drizzle Postgres driver choice (node-postgres vs postgres-js)
|
||||
- PGlite configuration details
|
||||
- Column type mapping specifics
|
||||
- Migration script error handling
|
||||
- Test driver choice for PGlite
|
||||
|
||||
## Deferred Ideas
|
||||
|
||||
None
|
||||
Reference in New Issue
Block a user