The GPU evaluator was reading weights from agent.get_q_network_vars()
(Candle VarMap) which is NOT synced during fused CUDA training. Weights
stayed at epoch-0 values → val_loss=0.804688 every epoch (constant).
Fix: read weights directly from fused_ctx.online_dueling_ref() and
fused_ctx.online_branching_ref() — the GPU-resident buffers updated
by Adam each training step.
Added online_dueling_ref() and online_branching_ref() accessor methods
to FusedTrainingCtx.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>