- Introduce a 256-entry ring-buffer negative cache (neg_cache) to short-circuit
repeated NOT_FOUND lookups without touching disk. Invalidated on put/tombstone-lift.
- Add bloom precheck in scan_segments: read only the 368-byte header+bloom prefix
before committing to a full segment load; segments that definitively miss are skipped.
- Remove summary_lookup_hash from load_segment; the linear scan over 40-byte entries
was O(N²) on large indexes and is now replaced by a direct SHA-256 of the segment bytes.
- Gitignore .codex and .claude tool artifacts.
- Add test_miss_latency_bounded: regression test that builds 200 segments and asserts
miss-path latency stays within 5 s total across 20 trials.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>