the bug was that my collision boxes were getting out of sync with the physics positions (positions + deltaBoundary = collisionBoundary, and my physics engine was updating the collisionBoundary and velocities only, instead of backpropagating to the positions).
no jump physics yet, but pressing...