Implements plan §13.1 step 4: cross-index verification between live and
shadow indexes during resharding. This reuses §13.8's bucketed-Merkle
machinery with PK-keyed (not shard-keyed) bucketing to compare indexes
with different shard counts.
Key changes:
- ReshardExecutor::run_verify now uses AntiEntropyReconciler's
compare_index_buckets method to perform cross-index comparison
- Added VerificationFailed error variant to MiroirError
- Exposed executor module via pub mod in reshard.rs
- Added helper function hash_pk_to_shard for mismatch detail reporting
- Added 6 acceptance tests for PK-keyed bucketing, content hash
canonicalization, and verify result structure
Acceptance criteria:
- Cross-index PK set comparison: live PK set == shadow PK set
- Content hash matching: for each PK, content_hash matches
- PK-keyed bucketing: independent of shard count S
- Reuses §13.8 bucketed-Merkle machinery
Closes: miroir-uhj.1.4