So the problem with my interpretation is that I was not considering that the attacker could catchup after an infinite number of steps/time...
After an infinite number of steps, an attacker with < 50% is guaranteed to be behind.
Satoshi calculates the probability that attacker
ever gets ahead, at any point, since that is long enough to double spend.
You could say a "lucky streak" of some length is required at some point but in fact the success pattern could be arbitrarily complex (with arbitrarily low probability of any particular pattern occurring).
To simulate the process, you could use a recursive function.