docs(phase-03): evolve PROJECT.md after phase completion

This commit is contained in:
2026-03-24 09:21:02 +01:00
parent b3fe58408e
commit 46614574c4

View File

@@ -29,10 +29,14 @@ Reliable, persistent visibility into which services need updating — data never
- ✓ Server struct replaces package-level globals (db, mu, webhookSecret) — Phase 2 - ✓ Server struct replaces package-level globals (db, mu, webhookSecret) — Phase 2
- ✓ Schema migrations via golang-migrate with embedded SQL files — Phase 2 - ✓ Schema migrations via golang-migrate with embedded SQL files — Phase 2
- ✓ Per-test in-memory databases for isolated, parallel-safe testing — Phase 2 - ✓ Per-test in-memory databases for isolated, parallel-safe testing — Phase 2
- ✓ PostgreSQL support via pgx/v5 with DATABASE_URL env var selection — Phase 3
- ✓ Separate PostgreSQL migration directory with baseline schema — Phase 3
- ✓ Docker Compose profiles for optional PostgreSQL service — Phase 3
- ✓ Cross-dialect UNIQUE constraint detection (case-insensitive) — Phase 3
### Active ### Active
- [ ] Add PostgreSQL support alongside SQLite (dual DB, user chooses) - [ ] Bulk acknowledge (dismiss all, dismiss by group)
- [ ] Bulk acknowledge (dismiss all, dismiss by group) - [ ] Bulk acknowledge (dismiss all, dismiss by group)
- [ ] Filtering and search across updates - [ ] Filtering and search across updates
- [ ] In-dashboard new-update indicators (badge/counter/toast) - [ ] In-dashboard new-update indicators (badge/counter/toast)
@@ -69,7 +73,9 @@ Reliable, persistent visibility into which services need updating — data never
| Decision | Rationale | Outcome | | Decision | Rationale | Outcome |
|----------|-----------|---------| |----------|-----------|---------|
| Dual DB (SQLite + PostgreSQL) | SQLite is fine for simple setups, Postgres for users who want robustness | Pending | | Dual DB (SQLite + PostgreSQL) | SQLite is fine for simple setups, Postgres for users who want robustness | Phase 3 |
| DATABASE_URL as DB selector | Presence of DATABASE_URL activates PostgreSQL; absence falls back to SQLite with DB_PATH | ✓ Phase 3 |
| pgx/v5/stdlib over native pgx | Keeps both stores on database/sql for identical constructor signatures | ✓ Phase 3 |
| Fix SQLite bugs before adding features | Data trust is the #1 priority; features on a broken foundation waste effort | ✓ Phase 1 | | Fix SQLite bugs before adding features | Data trust is the #1 priority; features on a broken foundation waste effort | ✓ Phase 1 |
| Store interface as persistence abstraction | 9 methods, no SQL in handlers; enables PostgreSQL swap without touching HTTP layer | ✓ Phase 2 | | Store interface as persistence abstraction | 9 methods, no SQL in handlers; enables PostgreSQL swap without touching HTTP layer | ✓ Phase 2 |
| Server struct over package globals | Dependency injection via constructor; enables per-test isolated databases | ✓ Phase 2 | | Server struct over package globals | Dependency injection via constructor; enables per-test isolated databases | ✓ Phase 2 |
@@ -94,4 +100,4 @@ This document evolves at phase transitions and milestone boundaries.
4. Update Context with current state 4. Update Context with current state
--- ---
*Last updated: 2026-03-24 after Phase 2 completion* *Last updated: 2026-03-24 after Phase 3 completion*