- The settled-season branch only ranked drivers that had a standings row, so
with fewer than eight rows the trailing placement columns were empty and
step 9's residual normalization dumped a full 1.0 onto whichever driver came
first. Ten drivers with five standings rows gave d1 probSecond, probSixth,
probSeventh and probEighth all at 1. Removed the branch: the in-season path
awards no points when no races remain, so it already ranks the final
standings, and it ranks the whole field.
- The unpriced-driver floor was taken from a distribution normalized over the
priced subset alone. With one priced driver devigPower returns [1], so every
unpriced driver was seeded at 1 and the field came back flat — a lone -500
favourite fell to 0.117. Floor on the implied scale and devig the whole
field instead, keeping the 1/N fallback when a book has a single price and
no tail to anchor to.
- hasRaceRun treated a race as run at the green flag, so remainingRaces hit 0
the moment the finale started and the pre-race leader was published as
champion at 100% from standings that did not include that race. Require the
race to have had time to finish.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TUcV7KenckF893zQ46EDXt