docs: update status header — note 10% bit-identical Q4 + retraction fix
ober
8b087908e941d439dd20c4324814b0cef1461f4e
--- a/jerboa-db.md +++ b/jerboa-db.md @@ -7,16 +7,18 @@ with a Datalog query engine and immutable time-travel over all data. **Status:** 2026-05-03 — **Core Datomic parity: complete. MBrainz performance parity: shipped.** Core test suite is 37/37 passing (`make test`). Five-phase performance plan landed between -commits `439b9a7..7a45249`: pure-aggregate pushdown, DuckDB +commits `439b9a7..b5a32ab`: pure-aggregate pushdown, DuckDB analytical fallback (with batched VALUES sync, `:in` substitution, auto-routing via `current-analytics-engine`), and the load-time fix that took 1% MBrainz ingest from ~47s to ~1s (a fulltext indexing O(n²) bug, not the originally-suspected RB-tree allocation pressure). At 1% scale the 8-query suite finishes in under 3 seconds total; Q4 lands in 281 ms via DuckDB and Q8 in 9 -ms — both faster than published Datahike numbers. See -[MBrainz Benchmark Results](#mbrainz-benchmark-results) for the -table. +ms — both faster than published Datahike numbers. At 10% scale +Q4 stays bit-for-bit identical between Datalog and DuckDB at +4,270,990 rows after a retraction-aware sync fix (`fbc3b6c`). +See [MBrainz Benchmark Results](#mbrainz-benchmark-results) for +the table. Implementation lives in `lib/jerboa-db/` (Jerboa library files using `#!chezscheme` + `(library ...)` form). Built from scratch — no `(std mvcc)`, `(std datalog)`, or