Implements plan §13.1 step 3: background streamer pages every live-index
shard using `filter=_miroir_shard={id}`, re-hashes each document under
the new shard count, and writes to the shadow index with the new shard
assignment. Documents are tagged with `origin: "reshard_backfill"` for
CDC event suppression (plan §13.13).
Key changes:
- Added imports for FetchDocumentsRequest, WriteRequest, and json
- Implemented `advance_backfill()` with full pagination loop
- Fetches documents from live index using shard filter
- Extracts primary key from each document
- Re-hashes PK under new shard count using twox-hash
- Injects `_miroir_shard = new_shard_id` into document
- Writes to shadow index with origin tag for CDC suppression
- Tracks progress (total/processed documents, current shard)
- Applies throttling based on configured rate limit
- Made `hash_pk_to_shard()` public for test visibility
- Added tests for document rehashing and executor state
Tests: All 104 reshard tests pass, including new tests for:
- Document rehashing under new shard count
- Executor initialization with correct state
- Backfill progress tracking
Closes: bf-54tf