What worked was skipping the teacher altogether!
After analysing the model errors and prompts more carefully, we realised that each training explanation could be assembled from facts computed in code, plus the model's own sense of how unusual the mutation looks.
With these grounded "reasoning traces", accuracy rose to about 67%. The self-taught version stalled below 60%.
