cdd6133bce
#184 and #185 were built in parallel and their candidate types did not meet. Ranking returned no identity for a candidate, so the winner of a rank() could not be handed back to Provider::download -- rank() reorders, so the caller could not recover it by position either. RankedSubtitle now carries the index of the candidate in the slice it was given, and Candidate::to_core is the one place the two shapes are mapped: hash_match against a compared hash, sdh against hearing_impaired, group against release_group, and the two optional tiebreakers defaulted to sort last rather than block a candidate.