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
dbmdis the semantic layer;dbmdis 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] codeWIKI_LINK_SHORT_FORM). - Embedded ripgrep. Free-text body search uses the
grep+ignorecrates in-process; the toolkit never bundles or shells out torg. Structured loop reads ([graph::backlinks], [query::Query]) ride theindex.jsonlsidecars instead, never a frontmatter tree scan.