Purpose: Track progress on research initiatives identified post-Phase 6 completion
Related: See RESEARCH_INITIATIVES.md for detailed plans
Last Updated: 2025-11-11
All initiatives are in Planning phase awaiting approval to begin.
Status Legend:
- 🟡 Planning: Not started, awaiting approval
- 🔵 Active: Currently in progress
- 🟢 Complete: Finished successfully
- 🔴 Abandoned: Discontinued (see conclusion for rationale)
- ⏸️ Paused: Temporarily suspended
- Initiative ID: RES-001
- Priority: Medium
- Estimated Effort: 2-4 weeks
- Risk Level: Low-Medium
- Status: 🟡 Planning
- Branch: (none yet)
Status: Not started
Goals:
- [ ] Profile current DynamicDawg for edge lookup hotspots
- [ ] Measure edge count distribution in typical dictionaries
- [ ] Analyze flamegraph to determine if edge search is bottleneck (≥5% threshold)
Decision Point: If edge search < 5% of total time → ABANDON
Status: Not started
Depends on: Phase 1 success
Goals:
- [ ] Extract SIMD logic from OptimizedDawg
- [ ] Create
benches/edge_search_comparison.rs - [ ] Benchmark at edge counts: 2, 4, 8, 16, 32, 64
- [ ] Test cache sensitivity (warm vs cold)
- [ ] Determine breakeven point
Decision Point: If SIMD slower or marginal (< 5% improvement) → ABANDON
Status: Not started
Depends on: Phase 2 success
Goals:
- [ ] Implement SIMD edge search in DynamicDawg
- [ ] Add
simd-edge-search feature flag - [ ] Ensure all tests pass with SIMD enabled
Status: Not started
Depends on: Phase 3 success
Goals:
- [ ] Run end-to-end benchmarks on corpus workloads
- [ ] Compare baseline vs SIMD using Criterion
- [ ] Profile with flamegraph to verify optimization
Decision Point:
- ≥10% speedup → MERGE and enable by default
- 5-10% speedup → MERGE but keep as opt-in
- <5% speedup → ABANDON
- Design doc: (pending)
- Feature branch: (pending)
- Benchmarks: (pending)
- Flamegraphs: (pending)
- Conclusion: (pending)
- Requires AVX2-capable CPU (✅ Available: Xeon E5-2699 v3)
- OptimizedDawg SIMD code preserved for reference
- Early exit criteria at each phase minimize wasted effort
- Initiative ID: RES-002
- Priority: Low
- Estimated Effort: 4-6 weeks
- Risk Level: Medium-High
- Status: 🟡 Planning
- Branch: (none yet)
Status: Not started
Goals:
- [ ] Memory profiling of current DynamicDawg using Valgrind massif
- [ ] Component breakdown: node overhead, Vec capacity, alignment padding
- [ ] Estimate theoretical savings from arena storage
Decision Point: If potential savings < 20% → ABANDON
Status: Not started
Depends on: Phase 1 success
Goals:
- [ ] Implement hybrid storage in feature branch
- [ ] Create
DynamicDawgImmutable type - [ ] Implement conversion from
DynamicDawg - [ ] Verify correctness: all tests pass
Status: Not started
Depends on: Phase 2 success
Goals:
- [ ] Memory benchmarks
- [ ] Query performance benchmarks
- [ ] Construction overhead benchmarks
Decision Point: If <20% memory reduction OR >5% query regression → ABANDON
Status: Not started
Depends on: Phase 3 success
Goals:
- [ ] Design user-facing API (separate type vs mode flag vs type state)
- [ ] Document API with examples
- [ ] Integration testing with transducers
- Design doc: (pending)
- Feature branch: (pending)
- Memory profiles: (pending)
- Benchmarks: (pending)
- API documentation: (pending)
- Conclusion: (pending)
- Higher complexity due to dual storage modes
- Maintenance burden: two code paths to test
- May increase codebase complexity without sufficient benefit
- Consider API usability carefully
- Initiative ID: RES-003
- Priority: High (novel contribution)
- Estimated Effort: 8-12 weeks
- Risk Level: High
- Status: 🟡 Planning
- Branch: (none yet)
Status: Not started
Goals:
- [ ] Literature survey: DAT papers (Aoe 1989, Yata 2007, etc.)
- [ ] Literature survey: DAWG papers (Crochemore 1985, etc.)
- [ ] Search for existing DAT+DAWG combinations
- [ ] Create comprehensive design document (30+ pages)
- [ ] Complexity analysis: theoretical bounds
Deliverable: docs/research/DAT_DAWG_HYBRID_DESIGN.md
Decision Point: If design shows fundamental flaw or prior art exists → ABANDON
Status: Not started
Depends on: Phase 1 success
Goals:
- [ ] Implement core data structure (
DatDawgHybrid) - [ ] Implement construction algorithm
- [ ] Implement query algorithm
- [ ] Basic functionality working
Status: Not started
Depends on: Phase 2 success
Goals:
- [ ] Comprehensive unit tests
- [ ] Property-based tests
- [ ] Fuzzing with random dictionaries
- [ ] Equivalence testing vs reference DAWG
Status: Not started
Depends on: Phase 3 success
Goals:
- [ ] Construction benchmarks vs all backends
- [ ] Query benchmarks vs all backends
- [ ] Memory measurements vs all backends
- [ ] Flamegraph analysis
Decision Point: If performance worse than DynamicDawg → ANALYZE for optimization opportunities
Status: Not started
Depends on: Phase 4 results
Goals:
- [ ] Optimize hot paths identified in flamegraphs
- [ ] Cache-friendly data layout
- [ ] SIMD opportunities (if applicable)
- [ ] Re-benchmark after optimizations
Success Criteria:
- Space: Within 2× of DynamicDawg
- Speed: Within 2× of DoubleArrayTrie
- Construction: Better than DoubleArrayTrie
- Literature review:
docs/research/DAT_DAWG_HYBRID/references/ (pending) - Design doc:
docs/research/DAT_DAWG_HYBRID/DESIGN.md (pending) - Feature branch: (pending)
- Prototype code: (pending)
- Benchmarks: (pending)
- Flamegraphs: (pending)
- Paper draft: (if successful - pending)
- Conclusion: (pending)
- Most ambitious initiative (novel data structure)
- Success probability: 40-60%
- Potential for academic publication if successful
- Requires deep expertise in both DAT and DAWG algorithms
- MP DAT is different (uses TAIL array, not suffix sharing in DAT part)
Context: OptimizedDawg deprecation analysis revealed potential optimization opportunities
Decision: Document three research initiatives for future work
Rationale:
- Phase 6 now complete (100% feature parity)
- OptimizedDawg deprecated (reduced maintenance burden)
- Time to explore advanced optimizations
Status: All initiatives in Planning phase
All research initiatives must follow the scientific method:
- Clear, testable hypothesis with null hypothesis (H₀)
- Defined success criteria (quantitative)
- Alternative outcomes considered
- Phased approach with early exit criteria
- Decision points based on empirical data
- Controls and baselines defined
- Benchmarking with Criterion (statistical rigor)
- Profiling with flamegraph + perf
- Memory measurement with Valgrind/heaptrack
- Multiple corpora for validation
- Statistical significance testing
- Comparison against baseline
- Identify bottlenecks and optimization opportunities
- Accept or reject hypothesis based on data
- Document findings comprehensively
- Preserve results for future reference
Every initiative must produce:
- Design document (before implementation)
- Benchmark results (data-driven decisions)
- Flamegraphs (performance analysis)
- Conclusion document (final analysis)
- Code artifacts (if successful)
- ✅ Criterion (statistical benchmarking)
- ✅ flamegraph + perf (profiling)
- ✅ Valgrind massif (memory profiling)
- ⚠️ heaptrack (install if needed)
- ✅ big.txt (Norvig corpus, 1M+ words)
- ✅ holbrook.dat (spelling errors)
- ✅ /usr/share/dict/words (system dictionary)
- ✅ Xeon E5-2699 v3 (36 cores, AVX2 support)
- ✅ 252 GB RAM (sufficient for large-scale tests)
- ✅ 4TB NVMe SSD (fast I/O)
- Review detailed plan in
RESEARCH_INITIATIVES.md - Create design document in
docs/research/[initiative-name]/ - Update this file: set Status to 🔵 Active
- Create feature branch:
research/[initiative-name] - Update tracking as each phase completes
- Check off completed goals in phase section
- Document artifacts created
- Update progress percentage
- If decision point reached: document decision and rationale
- Update Status to 🔴 Abandoned
- Document reason in Notes section
- Create conclusion document explaining decision
- Archive artifacts for future reference
- Update Status to 🟢 Complete
- Move to "Completed Initiatives" section
- Document final outcomes
- Update main codebase if successful
- Update CHANGELOG.md
Immediate: All initiatives documented and ready for approval
To start any initiative:
- Review detailed plan in
RESEARCH_INITIATIVES.md - Confirm time commitment available
- Create design document
- Begin Phase 1
Recommended starting order:
- Quick wins: Start with SIMD Edge Search (2-4 weeks)
- Novel contribution: Start with DAT/DAWG Hybrid (8-12 weeks)
- Practical improvement: Start with SIMD, skip others unless successful
Maintainer: (project maintainer)
Last Updated: 2025-11-11
Next Review: After first initiative completion