Chipmunk solves the velocities of objects that collide using forces (impulses actually, but the distinction is not that important here). Overlap is handled differently. It happens either because a discrete simulation can never be perfect (overlap is usually small), or because you created a new object that overlaps an existing one (overlap can be quite large). Chipmunk solves overlapping shapes by moving them apart by a certain percentage each frame. This correction is more or less applied directly to the position and does not affect the regular velocity or forces. If it did, overlapping objects would go flying apart which is usually undesirable.