v1.2.11: Keep search serving during incremental mirror refresh
Keep search serving during incremental mirror refresh
An in-progress or failed nightly refresh on top of a complete mirror no longer takes search offline. Readiness now keys off the durable completed_at marker — the mirror keeps serving its existing complete dataset throughout the refresh window rather than dropping arxiv_search and arxiv_get_metadata to the throttled live API.
Fixed:
- arxiv_search / arxiv_get_metadata keep serving from the mirror during an in-progress or failed incremental refresh (#21)
- writeHarvestState() uses COALESCE to preserve completed_at and total_records across in_progress and error writes — only the success path advances them
348 tests pass; bun run devcheck clean.