Search
SearchIndex is capability-agnostic: snapshots, sections, entities, properties. Adding a collector must not require search-code edits.
- Empty or whitespace queries return nothing for snapshot search.
- All terms must match (AND).
- Ranking: exact title > prefix > substring > whole-word haystack. Ties break by newer date, then id.
ChangeSearchIndexempty query returns all changes (filter field, not a library search).
Tests: Tests/Domain/SearchIndexTests.swift and search invariants. Do not introduce a ranking ML model.