miroir/crates/miroir-core
jedarden ee3ef23133 P10.5: scoped Meilisearch key rotation with multi-pod coordination
Implements plan §13.21 leader-based rotation of per-index scoped search
keys with zero-403 overlap guarantees:

- Leader lease (Redis, Mode B §14.5) serializes rotation across pods
- Per-pod beacon with 60s TTL refreshed on every search request
- Revocation safety gate: leader checks all live peers observed new
  generation before DELETE /keys/{previous_uid}
- Drain wait (default 120s) for stragglers before revocation
- Auto-rotation trigger: scoped_key_rotate_before_expiry_days (30d)
  before scoped_key_max_age_days (60d)
- Manual trigger: POST /_miroir/ui/search/{index}/rotate-scoped-key
  with force:true to bypass timing gate
- Config validation rejects rotate_before >= max_age at startup
- Helm _helpers.tpl render-time guard against rotation loop
- values.schema.json schema validation for scoped key config fields

Also includes session management routes (admin login/logout/session,
search UI JWT session) and auth middleware CSRF protection needed
by the admin-gated rotation endpoint.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 07:33:29 -04:00
..
benches P12.OP4: Implement dfs_query_then_fetch for cross-shard comparability 2026-04-19 03:08:18 -04:00
migrations P3.4: Implement schema versioning system 2026-04-19 00:13:19 -04:00
src P10.5: scoped Meilisearch key rotation with multi-pod coordination 2026-04-20 07:33:29 -04:00
tests P2.2: Implement write path with primary key validation, shard injection, and two-rule quorum 2026-04-19 06:48:30 -04:00
Cargo.toml P2.5: Implement task ID reconciliation and /tasks endpoints 2026-04-19 07:46:49 -04:00