pub fn apply_preemption(
decision: &mut QueueDecision,
candidates: &[QueueCandidate],
)Expand description
Post-pass: for each category, if a queued torrent has strictly higher priority (lower position) than the lowest-priority active torrent, swap them. One swap per category per tick to prevent cascade instability.