Adds delta-based adaptive-controller fire detection. A controller 'fired'
in epoch N iff its observable output changed from epoch N-1 beyond a small
numerical threshold. Applied to all 6 controllers per spec §5.3:
- anti_lr (threshold 1e-10 on LR)
- tau (1e-6 on target-net tau)
- gamma (1e-4 on discount factor)
- grad_clip (1e-3 on adaptive clip threshold)
- cql_alpha (1e-5 on CQL pessimism weight)
- cost_anneal (1e-4 on tx-cost anneal factor)
Adds:
* DQNTrainer.prev_controller_values + .controller_fire_counts
* ControllerPrevValues (NaN sentinel on first epoch = no fire)
* ControllerFireCounts (running u32 per controller)
* pub fn controller_fire_rates_final() -> [f32; 6]
* HEALTH_DIAG 'controller' group shows per-epoch fire bools + max
running fire rate across all controllers (fire_frac)
Adds smoke test controller_activity.rs asserting no controller fires in
> 50% of epochs. Expected to FAIL on current main — anti-LR fires every
epoch per today's session observation. Documents the load-bearing issue.
Completes Tasks 0.9 + 0.13 per plan. No partial state — all 6 controllers
are delta-tracked, all fire rates exposed, the smoke test asserts against
all of them.