diff --git a/plans/PHASE1-SQLITE-HARDENING.md b/plans/PHASE1-SQLITE-HARDENING.md index 14fc28d..08ef052 100644 --- a/plans/PHASE1-SQLITE-HARDENING.md +++ b/plans/PHASE1-SQLITE-HARDENING.md @@ -1,6 +1,6 @@ # Feature Specification: Phase 1 SQLite Hardening -**Status:** Implemented — merged via five PRs (#47–#51), all CI green +**Status:** Implemented — Phase 1 merged via PRs #47–#51; Phase 2 items 1–3 merged via PRs #53–#55 **Author:** Patel230 **Date:** 2026-08-15 **Repos affected:** `GrayCodeAI/yaad` (via hawk submodule `external/yaad`) @@ -185,11 +185,11 @@ does not exist on Windows):** - [x] `feat/storage-hnsw` — PR #50 (`6c03254`) - [x] `feat/storage-backup` — PR #51 (`dfedbce`) -### Phase 2 (future, out of scope here) -- Incremental HNSW updates on `SaveEmbedding`/`DeleteEmbedding` (currently full rebuild) -- Persist-and-restore of the HNSW graph across restarts (read `embeddings_hnsw`) -- Backup rotation / scheduled backups from the daemon -- Apply encryption columns (migration v5) with a real key provider +### Phase 2 (items 1-3 shipped) +- ~~Incremental HNSW updates on `SaveEmbedding`/`DeleteEmbedding`~~ — **done** (PR #53: `HNSWIndex.Upsert`/`Remove` with link pruning + entry-point repair; `Store` write paths apply them; transactional writes invalidate the cache after commit) +- ~~Persist-and-restore of the HNSW graph across restarts~~ — **done** (PR #54: versioned payload in `embeddings_hnsw` carrying `version`/`m`/`efConstruction`; `HNSWIndex.Restore` requires parameter + membership parity, `BuildHNSWIndex` is the force-rebuild path) +- ~~Backup rotation~~ — **done** (PR #55: `Store.RotateBackups(dir, keep, maxAge)` with count/age retention and stale-`.tmp` cleanup; a daemon-side scheduler is not yet implemented) +- Not yet implemented: encryption columns (migration v5) wired to a real key provider ## Testing Strategy