dbmd-core 0.2.1

Reference library for db.md — the open database in plain files. Parsing, store walk, wiki-link graph, validation, query, and write-through indexes. Zero AI dependencies.
Documentation
dbmd-core-0.2.1 has been yanked.

dbmd-core — the reference library for db.md, the open database in plain files.

db.md is one directory: raw evidence in sources/, atomic typed data in records/, curator-synthesized narrative in wiki/, and a single DB.md config file at the root. Records are markdown files with YAML frontmatter; relationships are wiki-links; the index is the derived, write-through index.md / index.jsonl catalog plus embedded ripgrep.

This crate owns all toolkit logic. The dbmd binary (dbmd-cli) is a thin wrapper that parses args, calls into here, and formats output. Any Rust tool wanting to be db.md-aware can cargo add dbmd-core and get the full library — the same shape as ripgrep, where the grep/ignore libs do the work and rg is a thin CLI.

Hard invariants this crate is built to uphold

  • Zero AI/LLM dependencies. No provider SDKs, no API keys, no model calls, no embeddings, no vectors, no ANN — anywhere, ever. The agent driving dbmd is the semantic layer; dbmd is a deterministic tool.
  • The interactive loop is O(changed), never O(store). Loop ops ([graph::backlinks], [validate::validate_working_set], [index::Index::on_write], …) never call [store::Store::walk]. Whole- store walks belong only to SWEEP ops ([validate::validate_all], [index::Index::rebuild_all], [stats]).
  • Wiki-links are full store-relative paths. A short-form wiki-link is a validation error ([validate] code WIKI_LINK_SHORT_FORM).
  • Embedded ripgrep. Free-text body search uses the grep + ignore crates in-process; the toolkit never bundles or shells out to rg. Structured loop reads ([graph::backlinks], [query::Query]) ride the index.jsonl sidecars instead, never a frontmatter tree scan.