Fixed collect_trade_stats DtoH panic: done_out was doubled by
counterfactual (2x alloc) but readback used base_output count.
Use slice(..base_output) to read only the original portion.
Added guards: vaccine and causal intervention skip before CUDA
graphs are captured (buffers not fully initialized on first step).
Vaccine failures are non-fatal (logged, not propagated).
Updated test assertions for 2x total_experiences.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>