Implement the flat API calls for routing layer with proper deduplication:
- covering_set: Now returns deduplicated set of nodes since one node may
own multiple shards in the same group; searching it once captures all
its local docs in a single call
- write_targets: Returns exactly RG × RF nodes (may include duplicates)
- query_group: Round-robin selection using modulo
Changes:
- Updated covering_set implementation to deduplicate nodes while still
covering all shards within the chosen group
- Added tests for covering_set deduplication behavior
- Updated existing tests to match new deduplication semantics
- All acceptance criteria verified: RG × RF nodes, one-per-group
assignment, deduplication, determinism, uniform distribution
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>