Hello! Thank you for sharing Impulse Engine - I found it very useful for getting my bearings.
I noticed that the impulse calculations use invMassSum for both the normal and tangent impulses. I'm pretty sure the tangent impulse requires the invMassSum to be calculated with raCrossT and rbCrossT instead of raCrossN and rbCrossN. That is discussed, for example, here.