1. PER duplicate index accumulation (HIGH): update_priorities_gpu()
used index_add delta trick which accumulates deltas for duplicate
indices, overshooting target priority. Now deduplicates the small
indices tensor (batch_size=256, ~1KB) via HashMap before delta
computation. Fast path (no dupes) reuses original tensors.
2. RegimeConditional silent experience drop (MEDIUM):
insert_batch_tensors() returned Ok(()) for CPU replay buffers,
silently discarding all GPU-collected experiences. Now converts
tensors→Vec<Experience> via extracted helper (lazy, only on first
CPU head encountered) and inserts into CPU buffer.
3. Unsafe direct indexing (LOW): gpu_experience_collector.rs used
&states[s..e] in fallback paths, violating deny(indexing_slicing).
Replaced with .get() safe bounds checking.
392/392 ml-dqn + 874/874 ml tests pass, 0 clippy warnings.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>