atmo.rsvp

fix(search): bound the Meili settings/arming fetch with a timeout master

applyMeiliSettings' PATCH ran unbounded. On the cron path it fires inside ensureInit BEFORE the ingest hard-timeout race, so a stalling (not erroring) Meili endpoint would hang the whole tick past the 55s backstop and starve notify/drip; the xrpc handler ran the same unbounded fetch on user requests. Thread an AbortSignal.timeout (SETTINGS_TIMEOUT_MS=8s, overridable for tests) through applyMeiliSettings so a stall degrades to "sink disabled this cycle" (ensureInit's existing try/catch), retried next tick. Upsert/remove stay unbounded — they run only inside contrail.ingest, already under the cron race.


+80 -21
2 changed files