Provably fair

Three steps, all of them public. The commissioner cannot see the order before the league does, and cannot re-roll it after.

01 · COMMIT
A hash goes out before the race
We generate a random seed and publish sha256(seed | team list | weights). The seed stays sealed. Post the hash in the league chat.
02 · RUN
The race is the seed, drawn out
Every position on the track comes from the seeded generator. Nothing is decided while the race runs — the race only shows you what the seed already said.
03 · VERIFY
Anyone can recompute it
After the reveal, the seed is published. Drop the race into the verifier and the same hash and order come out — this year, or in five years.
Open the verifier