Very fun and challenging game! There does seem to be a nondeterministic issue though. Beginning in the state in the left-most picture, if you step forward exactly two times, hit reset to go back to the state in the left-most picture, and then step forward once, you will end up in the state in the right most picture instead of the expected state in the middle picture.
I didn't look at the code, but I'm guessing that in the "step forward" function some of the attributes for the blocks are not being reset in the same way they are being reset in the "run" function, since if you click run instead of step forward, the bug disappears :)