Keep #9827. Close #8969 as superseded.

Both work and deliver the same speedup. #9827 fits current main; #8969 needs its migration renumbered.

SearchMain#8969#9827
Rare match2.88 s1.51 s1.52 s
Common match3.11 s1.89 s1.91 s
No match2.92 s1.53 s1.54 s

Median SQL time over five measured rounds after warmup, with execution order rotated. Same synthetic dataset: 1,000,000 messages, 704,545 turns, 5,000 threads. Node v22.23.2, SQLite 3.51.3. These are local database timings.

Continue review on #9827, preserving credit for #8969's original implementation and benchmark work. No PR was closed or merged during this test.

Tested 8 September 2026. Heads 31f157cb and a00e25e7. UI latency and incremental index write cost were not measured.