ROADMAP: write up the remaining performance work

Five items in dependency order, each sized to land on its own. The design
decisions already settled are recorded so they are not re-derived, and so
are the ordering constraints, which are the part that actually matters --
notably that the _id index must follow the tree, because it updates on
every insert and against a sorted array that is only affordable while ids
happen to append at the end.

Also carries the ground rules the earlier work established: A/B on one
harness rather than trusting a model, mutation-check tests that guard an
invariant, and the two absolutes (an index may only over-approximate; the
database must always open).

Each item names the traps found while investigating it -- deletion being
where B+trees go wrong, listIndexes possibly noticing a real _id_ index,
hashing compressed rather than uncompressed bytes, the fabricated
Document values that break when Document changes meaning, and the
durability guarantee that quietly weakens under group commit.
This commit is contained in:
2026-08-02 20:09:21 +03:00
parent b3b351167f
commit 71112b0ff7
2 changed files with 200 additions and 0 deletions

View File

@@ -216,6 +216,9 @@ above is recorded in `tests/e2e/results/phase1.txt`.
### What is left (highest impact first)
Each is written up with its design decisions, ordering constraints and
traps in [ROADMAP.md](ROADMAP.md).
1. **Compress the log** — the largest remaining gap (×11). Payloads are
stored raw. A block-framed format with an LZ4 block codec would shrink
highly compressible workloads massively; note Zig 0.16 ships zstd