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.
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.idjoin 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%, runscripts/pgvector_spike.pyonce (no flags) and commit the refreshed findings doc to record final coverage. See the "Definition of done" indocs/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.mdand the M1 row indocs/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
postgresuser) with a dedicatedSELECT-only role. Recipe is in the findings doc. Also: the pgvector reader belongs inshared/photoflow/immich(the only Immich client) and any SQLite access inshared/photoflow/core(the only SQLite owner) — not in app-level code.