First-launch indexing and freshness

Embedding the whole corpus on first launch can take time — run it as a resumable background job with a progress UI, not blocking the first screen.

Persist the index; don't rebuild on every launch. Detect source changes with a content hash and re-index only what changed. For per-patient genomic data, index that patient's report on import.

Battery: do heavy indexing while charging / on Wi-Fi when possible, and chunk the work so the OS doesn't kill it (Android WorkManager, iOS BGProcessingTask).