/ autoresearch.md
autoresearch.md
 1  # Autoresearch: Bloom filter runtime
 2  
 3  ## Objective
 4  Optimize `bloomy`'s hot-path runtime for Bloom filter insertions and membership checks on a fixed string-heavy workload representative of the crate's existing benchmarks.
 5  
 6  ## Metrics
 7  - **Primary**: `total_us` (µs, lower is better) — median total time for one insert pass, one contains-hit pass, and one contains-miss pass
 8  - **Secondary**: `insert_us`, `contains_hit_us`, `contains_miss_us` — phase timings to localize wins/regressions
 9  
10  ## How to Run
11  `./autoresearch.sh` — outputs `METRIC ...` lines.
12  
13  ## Files in Scope
14  - `src/bloom.rs` — Bloom filter hashing and high-level operations
15  - `src/bitvec.rs` — packed bit-vector primitives used by the filter
16  - `examples/autoresearch_bench.rs` — deterministic benchmark workload and metric reporting
17  - `autoresearch.sh` — benchmark entrypoint
18  - `autoresearch.checks.sh` — correctness checks
19  - `autoresearch.md` — session notes and accumulated findings
20  - `autoresearch.ideas.md` — backlog for larger ideas worth revisiting later
21  
22  ## Off Limits
23  - Public API shape unless a change is clearly internal-only and preserves documented behavior
24  - New dependencies
25  - Unrelated docs/examples/benchmarks unless needed to support or validate the optimization
26  
27  ## Constraints
28  - Preserve crate behavior and tests
29  - `cargo test --quiet` must pass for any kept result
30  - Keep benchmark deterministic and reasonably fast
31  
32  ## What's Been Tried
33  - Baseline setup uses a deterministic custom benchmark instead of Criterion so experiments can run quickly and report structured phase timings.