ORDER BY inside a window defines sequence; PARTITION BY defines scope — and an unpartitioned running sum has global scope, so the accumulator never zeroes between entities. The cruelty is that the first entity is always correct (nothing precedes it), so spot checks pass and the drift begins at entity two. The scope question — 'when should this number return to zero?' — is the PARTITION BY clause, written in English first.
SELECT track, lap, SUM(riders) OVER ( ORDER BY track, lap ) AS cumulative FROM laps ORDER BY track, lap;
SELECT track, lap, SUM(riders) OVER ( PARTITION BY track ORDER BY lap ) AS cumulative FROM laps ORDER BY track, lap;
The running total never reset between lines — without PARTITION BY, west's first cumulative showed 180 (east's 122 plus its own 58), where partitioning restarts each line at its own first lap.
Partition = the reset boundary, stated; verify on entity #2, never #1.