pub async fn schedule_recurring(app: &App) -> ClResult<()>Expand description
Schedule the recurring index maintenance.
Separate from init because it writes to the task store, so it belongs
with the other schedule_recurring calls rather than with registration.
Two sweeps, not one with run_on_startup, because they answer different
questions and a single task cannot tell which of its triggers fired. The
weekly one always rebuilds — it is the safety net for a write path that
forgot to ask for an index update. The startup one rebuilds only a tenant
whose stored INDEX_REV is behind this build, so an ordinary restart costs
one reaping DELETE per tenant instead of re-extracting everything.