miroir/crates/miroir-core/tests
jedarden b23e70656e P2.2: Implement write path with primary key validation, shard injection, and two-rule quorum
Implements POST/PUT /indexes/{uid}/documents and DELETE /indexes/{uid}/documents:

- Primary key extraction on hot path with 400 miroir_primary_key_required if missing
- _miroir_shard injection into every document before forwarding to nodes
- Rejection of _miroir_shard in client-submitted docs (400 miroir_reserved_field)
- Two-rule quorum: per-group floor(RF/2)+1 ACKs, success if ≥1 group meets quorum
- X-Miroir-Degraded header when any group misses quorum
- 503 miroir_no_quorum only when NO group meets quorum
- Per-batch grouping by target shard for efficient HTTP fan-out
- DELETE by IDs routes each ID independently to its shard
- DELETE by filter broadcasts to all nodes

Acceptance tests pass:
- Primary key validation before any writes
- Reserved field rejection
- Shard distribution uniformity (17-26 shards/node with 64 shards/3 nodes)
- Quorum calculation: floor(RF/2)+1
- Meilisearch-compatible error shape

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-19 06:48:30 -04:00
..
cutover_race.rs P12.OP1: Chaos-test cutover race window + hard refusal policy 2026-04-18 22:00:21 -04:00
dfs_skewed_corpus.rs P2.2: Implement write path with primary key validation, shard injection, and two-rule quorum 2026-04-19 06:48:30 -04:00
p22_write_path.rs P2.2: Implement write path with primary key validation, shard injection, and two-rule quorum 2026-04-19 06:48:30 -04:00
p23_search_read_path.rs P2.3: Clean up unused import in acceptance test 2026-04-19 06:44:39 -04:00
router_proptest.proptest-regressions P1.5: Implement scatter module with covering-set construction + dispatch trait 2026-04-19 00:20:29 -04:00
router_proptest.rs P1.6: Add property tests and criterion benchmarks for router 2026-04-18 23:59:30 -04:00