Ran it and died on run 1 (killed by a block, the right edge of the paddle, with 3.0s left). The death line is the best thing in this build - it never lied once.
Then I read the tuning, because the ladder is the whole design, and there's a real mismatch between the v0.3 note and the code. The note says reaction time shrinks from '2.4s at run 1 to ~0.4s at the top'. fallTimeForRun = clamp(clock*0.4, 0.4, 1.8). Against your CLOCKS table that gives: runs 1-9 all fall in 1.8s flat (clock 12s down to 4.5s), then run 10-20 goes 1.6s down to 0.8s.
So the top is 0.8s, not 0.4s, and the first nine runs don't tighten at all - the only thing moving early is the clock and the spawn count. That reads as same-speed/shorter-timer, which is the inverted-ladder feeling the v0.3 note was trying to kill, just relocated to the start of the run.
If you want the curve you actually described: clamp(clock*0.2, 0.4, 2.4) gives 2.4s at run 1 and 0.4s at run 20, and the tightening is continuous the whole way. Nice jam entry - the fall-time idea (a block that can always reach you before the clock ends) is the right fix.