Fixes three root-cause bugs discovered before/during this experiment:
1. regen_road was silently doing nothing — TcpCarHandler.RegenRoad() bailed on
null TrainingManager; added direct RoadBuilder+PathManager fallback.
2. MapOverlay minimap not refreshing — fixed to check node[10] position change.
3. BrakeOnUpdateCallback: sends zero control before PPO gradient updates to
prevent car drifting during 3-8s CPU pause.
4. PathManager self-intersection fix: retry loop with XZ segment-segment math
(up to 20 retries) — verifiably different roads per seed.
Exp27 trains fresh weights with N_THROTTLE=3 (bins 0.2/0.5/1.0), ent_coef=0.05,
500k steps, regen_road TCP message per checkpoint. Peak: 462.7r/1580 steps @110k.
Also adds verify_minimap_refresh.py and verify_road_regen.py diagnostic scripts.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>