Skip to content

Query and index plane

Status: open/draft

One incremental vault index and one query model for the whole fleet: filters, formulas, and named views in the ergonomic shape of Obsidian Bases, served from a core index instead of per-app vault walks. Generalizes fsindex, 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.

  • The query workload corpus exists first: real queries, consistency needs, update rates, and latency budgets captured from the named consumers.
  • Incremental index (frontmatter, links, structural facts proven by the corpus) with file-watch invalidation; correctness under concurrent writes tested.
  • Query grammar, formula semantics, and .base mapping are fixed by a follow-up ADR informed by the corpus; the API then ships in Rust, over WASM, and as CLI verbs.
  • vault-graph selectors and determined-notes agenda queries run on the plane; their private walk/parse paths are deleted.
  • Best-effort .base reading 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.
  • Index crate over the vault kernel.
  • Query grammar + engine with WASM/CLI exposure.
  • Migration PRs for vault-graph, determined-notes, and one more consumer.
  • .base mapping notes.
  • Obsidian Bases compatibility guarantees.
  • Full-text/semantic search — vault-search’s embedding pipeline stays separate, consuming the index for its corpus walk only.

← Back to Milestones