42c2e8108e
Both prepare-time probing and launch-time race-retry generated the same `<base>, <base>-2, ..., <base>-N` sequence with their own copies of the suffix arithmetic and the 99-cap. Extract the candidate stream into docker/util.container_name_candidates and have both call sites walk it; each keeps its own predicate (probe vs. retry). Also bumps the cap into a named constant (MAX_CONTAINER_SUFFIX) so the two error messages can't drift.