One place for everything still open that touches Flow ① (ingest / chunk / embed) and Flows ② / ③ (search / similar) — 11 of the 25 open issues. Goal: work these in priority order and drive the open-issue count down.
The ordering principle: most of this backlog is eval-gated ("measure on the hand-labelled retrieval eval, never on intuition"), so the two issues that strengthen the eval itself came first — every tier-3 experiment is only as trustworthy as the gate it's measured against. Both have now landed (§1), so the gate is sharp and the eval-gated items below are unblocked.
1. ✅ Landed — the gate is sharpened
Also closed since this issue was filed: #16 (CLI cross-process background reindex + b2 status + Ctrl-C cancel), #43 (model-relative chunk size — closed with the trigger recorded), and #97 (post-v1 large-scale perf — absorbed into #106 as suggested here, for the free −1).
2. Cheap, model-free wins (indexing ops & UX)
3. Experiments & spikes — enter only with a measured (or dogfooded) reason
4. Parked with explicit triggers
5. Index expansion: resources become searchable (roadmap order from #66)
6. Post-#170 re-spec debts inside this backlog
GH #170 (path-keyed note identity + content-addressed vectors) landed after most of these were written. Three carry design text that the pivot invalidated — none is a re-prioritization, all are "read this before costing the work":
Outside this backlog's scope but part of the same sweep: #103 (the b2:// URI is now the rejected alternative in data-model.md §5) and #166 (highlights — note_b2id and the retired IdGen seam are both live design questions again).
Related, deliberately not tracked here
#107 (UI prerequisite of #108, not itself index work), #102 (resource-sourced edges — data-model/authoring surface, not indexing or query), and the LLM MVP chain #154/#155 (they consume the index; #151/#153 are closed).
One place for everything still open that touches Flow ① (ingest / chunk / embed) and Flows ② / ③ (search /
similar) — 11 of the 25 open issues. Goal: work these in priority order and drive the open-issue count down.The ordering principle: most of this backlog is eval-gated ("measure on the hand-labelled retrieval eval, never on intuition"), so the two issues that strengthen the eval itself came first — every tier-3 experiment is only as trustworthy as the gate it's measured against. Both have now landed (§1), so the gate is sharp and the eval-gated items below are unblocked.
1. ✅ Landed — the gate is sharpened
discover::candidates. Closed; the ruling inindex-engine.md§3 is now enforced.Also closed since this issue was filed: #16 (CLI cross-process background reindex +
b2 status+ Ctrl-C cancel), #43 (model-relative chunk size — closed with the trigger recorded), and #97 (post-v1 large-scale perf — absorbed into #106 as suggested here, for the free −1).2. Cheap, model-free wins (indexing ops & UX)
dst_alias_raw+ cosmetic alias-refresh on title rename #29 —edges.dst_alias_raw+ cosmetic alias-refresh on title rename. Small, display-only; not a correctness issue. Note the standing cost caveat on it: a schema bump drops the vector tables, so this wants batching behind a change that re-embeds anyway, or an additive migration path.3. Experiments & spikes — enter only with a measured (or dogfooded) reason
b2 similaralso weight graph distance, not just semantic similarity? #20 — Shouldb2 similarweight graph distance? Dogfood-judged, not eval-scorable. Explicitly not the fix for the discovery floor (it reorders candidates; it can't make a bad list shorter).searchonly, neversimilar). Gate on a measured RRF precision@k gap first; value grows with vault size and with agent consumers (theserveadapter,serveHTTP adapter — a third dumb adapter over the façade #24).4. Parked with explicit triggers
5. Index expansion: resources become searchable (roadmap order from #66)
resource_centroids). Depends on Render mechanisms (asset protocol, inline images, viewers) #107 (render mechanisms) landing first per the roadmap. Its locked DDL needs a post-#170 re-anchor — and content-addressing hands the slice a small win.6. Post-#170 re-spec debts inside this backlog
GH #170 (path-keyed note identity + content-addressed vectors) landed after most of these were written. Three carry design text that the pivot invalidated — none is a re-prioritization, all are "read this before costing the work":
embeddingsis now keyed bytext_hashwith no note or path column, and a vector may be shared across notes, so there is no owner to partition on. The lever now means partitioning the join throughchunks, a different design with a different cost profile. Content-addressing also pre-paid part of lever 1 (quantization), by however much duplicate chunk text the vault holds. Detail.note_b2idisnote_path; both sides of the one-of are now the same kind of key, which is strictly less work. Resource chunks also join the content-addressed store with no new column. Detail.Outside this backlog's scope but part of the same sweep: #103 (the
b2://URI is now the rejected alternative indata-model.md§5) and #166 (highlights —note_b2idand the retiredIdGenseam are both live design questions again).Related, deliberately not tracked here
#107 (UI prerequisite of #108, not itself index work), #102 (resource-sourced edges — data-model/authoring surface, not indexing or query), and the LLM MVP chain #154/#155 (they consume the index; #151/#153 are closed).