Catching the in-mission freeze by hand costs a tool call every 25 s, and it arrives anywhere between ten seconds and never - roughly half the runs that reach flight freeze and the other half do not. freeze_watch.sh polls frozen.py, checks the flight HUD is still on screen (the GAME OVER screen ANIMATES, so a run that ended there is not a freeze and must not be scored as one), and on detection snapshots what the stuck-wait probe has said. Taking the probe snapshot at the moment of detection matters: the comparison against the healthy-run baseline - one thread polling one Event at BE56BB5C - is then made from the same instant rather than reconstructed afterwards from a log that kept growing. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PMRJjbxLqZtsb5Vb7KunPE