Files
m038 cc8de0e52d docs: add BACKLOG.md for near-term open tasks
Track loose ends between milestones: the pgvector spike's final coverage
snapshot (pending CLIP re-run completion), the M1 validation-gate run on a hard
sample, and the M1.5 least-privilege read-only role. Linked from ROADMAP.
2026-06-27 22:34:55 +02:00

1.5 KiB

Backlog

Small, near-term open tasks that don't warrant a full milestone. Milestones live in docs/ROADMAP.md; this file tracks the loose ends between them. Remove an item when it's done.

Open

  • pgvector spike — final coverage snapshot. The feasibility spike has passed (embeddings readable, assetId → asset.id join clean, shape pinned: smart_search.embedding, 1152-dim, cosine <=>). The CLIP re-run with the stronger model is still in progress (coverage ~70% and climbing as of 2026-06-27). When it reaches ~100%, run scripts/pgvector_spike.py once (no flags) and commit the refreshed findings doc to record final coverage. See the "Definition of done" in docs/superpowers/specs/2026-06-27-pgvector-embedding-spike-design.md.

  • M1 validation gate — run on a hard, GPS-poor sample. M1 shipped, but the acceptance-bar run on a hard sample (not the easy last trip) is still pending before widening. See docs/M1-validation-gate.md and the M1 row in docs/ROADMAP.md.

Later / dependent

  • M1.5 — provision a least-privilege read-only Postgres role. When M1.5 builds the pgvector reader, replace the spike's session-level read-only guard (using Immich's write-capable postgres user) with a dedicated SELECT-only role. Recipe is in the findings doc. Also: the pgvector reader belongs in shared/photoflow/immich (the only Immich client) and any SQLite access in shared/photoflow/core (the only SQLite owner) — not in app-level code.