# Measured resource and compatibility checkpoint See STORAGE_SCALING_V1.md for the 100-100,000-record workload. Embedded callers can select 0 to 64 index samples with Database::open_with_index_limit. Zero uses no index allocation. This controls samples, not total process memory. WSL2 Ubuntu x86_64, release on Linux /tmp; 200 four-byte keys with 128-byte values. Two runs of examples/measure: initial creation 9.0/10.8 ms, inserts 8.01/7.23 ms each, mean point lookup 8/9 us, replacements 8.20/8.12 ms, deletes 8.10/9.26 ms, full scan 433/223 us, reopen 363/414 us. Rust heap over pre-open baseline: 512 B steady, 1,416 B peak; 1,920 KiB max RSS on the timed run. 33,554,432 logical bytes allocated length, 25,920 live bytes after deletes. Not a total-memory guarantee. scripts/compare_sqlite.py ran the same key/value mutation sequence with SQLite 3.45.1, one transaction per mutation, DELETE journal and synchronous=EXTRA. File was 40,960 bytes; mean insert/read/update/delete: 9.58 ms / 3.1 us / 9.85 ms / 9.55 ms. Both use persistent ordered writes, but the protocols and OS flush sequences differ. Python sqlite3 binding versus native Rust, tiny sample, shared VM, no latency tails or device-write measurement. Do not extrapolate a winner. scripts/inspect_v1.py validates an offline copy using Python's zlib and struct. It does not lock a live instance, modify files, interpret JSON or guess damaged headers. scripts/inspect_test.py checks agreement with the CLI and corruption refusal. Readers configured for larger-than-default keys or values require a corresponding explicit limit change.