feat(dqn-v2): C.2 reward-component attribution — 6 ISV EMAs + HEALTH_DIAG split
New GPU kernel reward_component_ema reads per-sample per-component
rewards [popart, cf, trail, micro, opp_cost, bonus] and updates 6 ISV
EMA slots via adaptive-rate EMA (α=0.05). CPU-side RewardComponentMonitor
is a read-only observer per spec §4.C.6; HEALTH_DIAG emits reward_split
line each epoch.
experience_kernels.cu extended with reward_components_per_sample [N*L,6]
output param; rc[0]=popart, rc[1]=cf, rc[3]=micro populated; rc[2,4,5]
are structural placeholders for Plan 3 B.1/B.2/C.4/D.4.
ISV slots 63-68 added (REWARD_{POPART,CF,TRAIL,MICRO,OPP_COST,BONUS}_EMA);
fingerprint shifted 61-62 → 69-70; ISV_TOTAL_DIM 63 → 71.
Layout fingerprint seed updated; auto-recomputes on next run.
StateResetRegistry: isv_reward_component_emas → FoldReset.
training_loop.rs: reset_named_state arm zeroes slots 63..69 at fold boundary.
docs/isv-slots.md + docs/dqn-wire-up-audit.md updated (+2 Wired rows, 107 total).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>