atmo.rsvp

fix(search): harden meili:reindex (fail-loud config, apply index settings, skip poison rows) master

Adversarial-review follow-ups: - reindex-cli resolves the Meili backend explicitly and exits if SEARCH_SINK_API_KEY is missing, instead of borrowing config.sinks[0] (gated only on the URL) and silently no-opping while reporting success. - reindex-cli applies index settings up front: idempotent, ensures _geo/startsAt filters exist on a never-armed index, and doubles as an auth/connectivity check. - reindexEventsToSink parses each record defensively and skips a missing/corrupt row instead of throwing and aborting the whole run (the live path uses safeParseJson). - integration test restores SEARCH_SINK_* in afterAll so a failing assertion can't leak env into the rest of the process.


+103 -22
4 changed files