Skip to content

Commit a197751

Browse files
adityamukhoclaude
andcommitted
docs: add missing Wave 2 Optimizer & Benchmarks entry
Wave 2 (PRs #249, #251, #253) was missing from CHANGELOG.md, ROADMAP.md, and TEST_COVERAGE.md: - CHANGELOG.md: add Wave 2 section between Wave 3 and Wave 1 entries - ROADMAP.md: add Wave 2 to timeline between Wave 1 and Wave 3 - TEST_COVERAGE.md: add Wave 2 completion status note (no new tests — all optimizer + benchmark work covered by existing 850 tests) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent cce301c commit a197751

3 files changed

Lines changed: 37 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,34 @@ Six PRs hardening the v1.0.0 codebase: WAL fault injection, storage/migration re
4343

4444
---
4545

46+
## Wave 2 Optimizer & Benchmarks — 2026-05-16
47+
48+
### Summary
49+
50+
Three optimisation PRs extending the Wave 1 performance work. No API changes, no file-format changes, no new runtime dependencies. Test count unchanged at 850.
51+
52+
**PR #249#207 + #206: Predicate Push-Down & Mixed Rule Optimization**
53+
54+
- `optimizer::plan()` extended to accept `Expr` (predicate/arithmetic) clauses; they are interleaved at the earliest position where all their variables are bound, minimising intermediate binding sets
55+
- `StratifiedEvaluator` gains mixed-rule path: when a rule stratum contains both positive-only rules and rules with `not`/`not-join`, the evaluator now evaluates all positive rules first and applies negation filters in a second pass within the same stratum — eliminates a class of ordering-dependent bugs in cross-stratum negation
56+
57+
**PR #251#205: Cost-Based `not`/`or` Ordering**
58+
59+
- `optimizer::plan()` assigns selectivity estimates to `not`/`not-join` and `or`/`or-join` clauses; they are sorted after their ground-variable producers but before unconstrained pattern scans
60+
- `not`/`not-join` blocks placed after the patterns that produce their join variables (was: end of plan regardless); `or`/`or-join` blocks placed by estimated output cardinality
61+
62+
**PR #253#229: SIMD Benchmarking & Crossover Analysis**
63+
64+
- `benches/simd_helpers.rs`: `valid_time_filter_simd`, `as_of_filter_simd`, `sum_simd_i64` — portable SIMD kernels using `wide::i64x4` / `u64x4`
65+
- Criterion benchmark groups: `simd_temporal`, `simd_as_of`, `simd_aggregate` — scalar vs. SIMD crossover analysis at 1K–1M facts
66+
- Analysis result: SIMD crossover occurs at ~8K–16K facts per query; scalar path preferred below that threshold; SIMD integration deferred to post-1.0 backlog pending real-workload profiling
67+
68+
### Tests
69+
70+
850 tests passing (844 passing + 6 ignored: confirmed `or`+neg-cycle stratification bug, deferred to post-1.0 backlog). All Wave 2 PRs are optimisations; no new integration tests added.
71+
72+
---
73+
4674
## Wave 1 Performance — 2026-05-15
4775

4876
### Summary

ROADMAP.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1662,6 +1662,7 @@ When evaluating features, ask:
16621662
- ✅ Phase 8.3d: Complete (April 2026) — Node.js `minigraf` on npm, 795 tests
16631663
- ✅ Phase 8: Complete (May 2026) — v1.0.0
16641664
- ✅ Wave 1 Performance: Complete (May 2026) — hash-join cluster + selective B+Tree lookup (#202, #203, #204, #208), 850 tests
1665+
- ✅ Wave 2 Optimizer & Benchmarks: Complete (May 2026) — predicate push-down (#207, #206), cost-based not/or ordering (#205), SIMD crossover analysis (#229), 850 tests
16651666
- ✅ Wave 3 Reliability: Complete (May 2026) — WAL fault injection, migration matrix, index corruption resilience, property-based testing, coverage gates, long-haul smoke, XTDB/Datomic compat (#209, #210, #212, #213, #214, #215, #216, #217, #219, #220, #221), 935 tests
16661667
- 🎯 Phase 9: Ongoing (Ecosystem — integration examples, cookbook, GraphRAG/LangChain examples)
16671668

TEST_COVERAGE.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,14 @@
6161

6262
---
6363

64+
## Wave 2 Optimizer & Benchmarks Completion Status: ✅ COMPLETE
65+
66+
**Wave 2 issues**: #207 + #206 (predicate push-down + mixed rule optimization), #205 (cost-based not/or ordering), #229 (SIMD benchmarking + crossover analysis)
67+
68+
No new integration tests added — Wave 2 is entirely optimizer and benchmark work. Existing 850 tests cover all affected code paths. New benchmark groups: `simd_temporal`, `simd_as_of`, `simd_aggregate`.
69+
70+
---
71+
6472
## Wave 1 Performance Completion Status: ✅ COMPLETE
6573

6674
**Wave 1 issues**: #208 (selective B+Tree lookup), #202 (not/not-join hash-join), #203 (or/or-join hash-join), #204 (join_with_pattern hash-join)

0 commit comments

Comments
 (0)