With all the shuffling done over the past two days, a little bug slipped into the movement code in handmade_brain.cpp:

 1 2 3 4 5 6 7 8 9 for(u32 E = 0; E < 3; ++E) { if(NoPush || (TimerIsUp && (Square(ConHero->ddP.E[E]) < 0.1f))) /* culprit */ { ddP2.E[E] = Cp*(ClosestP.E[E] - Head->P.E[E]) - 30.0f*Head->dP.E[E]; } } 

ConHero->ddP only has two elements, but the loop is iterating over three.