Skip to content

feat: pure Plan resolve and Option Indexes::load - #229

Merged
botirkhaltaev merged 3 commits into
masterfrom
feat/plan-indexes
Aug 1, 2026
Merged

feat: pure Plan resolve and Option Indexes::load#229
botirkhaltaev merged 3 commits into
masterfrom
feat/plan-indexes

Conversation

@botirkhaltaev

Copy link
Copy Markdown
Owner

Summary

  • Rename CandidatePlan/CandidatePlannerPlan; planning is pure, Plan::resolve owns index query I/O
  • Indexes::loadResult<Option<Indexes>>; delete usable() and empty-meta search sentinel
  • Domain enums: Narrowing, Case; CandidateSource.indexes is Option<&Indexes>
  • Coverage stays caller-supplied (Coverage::from_mode in Grep until Run owns it)

Test plan

  • cargo fmt --all -- --check
  • cargo clippy --workspace --all-targets --all-features -- -D warnings
  • cargo test --workspace --all-features
  • CI green on Linux/macOS/Windows

Move index query I/O into Plan::resolve, rename CandidatePlan/Planner to Plan,
model narrowing/case with enums, and represent a missing store as Option
instead of usable()/empty-meta sentinels.
Inline IntoIter lookup into Iterator::next and call Indexes::candidate /
candidates instead of hydrate_row / hydrate_rows.
Delete Indexes::indexed_candidates, SearchFile/materialize dual open paths,
Searcher::search/stream wrappers, and IndexedCandidates. Candidates is an
opaque type; Searcher::execute is the sole search entry.
@botirkhaltaev
botirkhaltaev merged commit d88c29e into master Aug 1, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant