Query and index plane
State: open/draft
One query model for the fleet: filters, formulas, and named views in the ergonomic
shape of Obsidian Bases, served by obsidian-bases over obsidian-vault’s scan index
instead of per-app vault walks. Ports vault-graph’s selector DSL and gives agents and
products the same query surface. Workload-corpus-first (per review R-8): representative
real queries from vault-graph,
agenda, search, polish, dashboards, and agent workflows are captured before any
grammar is chosen; only index facts that corpus proves get built, and query syntax,
formula semantics, the consistency model, and .base mapping are decided in a
separate follow-up ADR after profiling those workloads.
Success criteria
Section titled “Success criteria”- The query workload corpus exists first: real queries, consistency needs, update rates, and latency budgets captured from the named consumers.
-
obsidian-vault’s index covers the facts the corpus proves (frontmatter, links, structure) with file-watch invalidation; correctness under concurrent writes tested.determined-notes/src/fsindex.rsstays that crate’s own cache until this criterion folds it in. - Query grammar, formula semantics, and
.basemapping are fixed by a follow-up ADR informed by the corpus; the API then ships in TypeScript (and as CLI verbs where consumers need them). -
vault-graphselectors anddetermined-notesagenda queries run on the plane; their private walk/parse paths are deleted. - Best-effort
.basereading maps onto the native model, with documented unsupported constructs. - At least two products (e.g. vault-search and polish) consume the shared index; their independent vault walks are gone.
Deliverables
Section titled “Deliverables”- Index extensions in
obsidian-vault. - Query grammar + engine changes in
obsidian-bases, with CLI verbs where needed. - Migration PRs for vault-graph, determined-notes, and one more consumer.
-
.basemapping notes.
Out of scope
Section titled “Out of scope”- Obsidian Bases compatibility guarantees.
- Full-text/semantic search —
vault-search’s embedding pipeline stays separate, consuming the index for its corpus walk only.