diff --git a/crates/ml/src/trainers/dqn/trainer/training_loop.rs b/crates/ml/src/trainers/dqn/trainer/training_loop.rs index d4f8d5ccc..00bdd6b66 100644 --- a/crates/ml/src/trainers/dqn/trainer/training_loop.rs +++ b/crates/ml/src/trainers/dqn/trainer/training_loop.rs @@ -8013,6 +8013,17 @@ impl DQNTrainer { ); } } + "sp14_q_disagreement_variance_ema" => { + if let Some(ref fused) = self.fused_ctx { + use crate::cuda_pipeline::sp14_isv_slots::{ + Q_DISAGREEMENT_VARIANCE_EMA_INDEX, SENTINEL_VARIANCE, + }; + fused.trainer().write_isv_signal_at( + Q_DISAGREEMENT_VARIANCE_EMA_INDEX, + SENTINEL_VARIANCE, + ); + } + } // SP14 Layer C Phase C.1 (2026-05-08): named-state reset // arms for the 9 deleted α-machinery slots // (sp14_k_aux_adaptive, sp14_k_q_adaptive, diff --git a/docs/dqn-wire-up-audit.md b/docs/dqn-wire-up-audit.md index e5a85501e..7a31cbbfa 100644 --- a/docs/dqn-wire-up-audit.md +++ b/docs/dqn-wire-up-audit.md @@ -2,6 +2,12 @@ **Status:** Populated during Plan 1 Task 6 (A.5 orphan audit). Updated on every commit per Invariant 7. +## 2026-05-08 — SP14 Layer C Phase C.10 prep: missing reset_named_state dispatch arm + +**Bug:** train-rqd8r (commit `10e647c14`) failed both folds at fold-reset boundary with `unknown name 'sp14_q_disagreement_variance_ema'`. C.1's atomic α deletion preserved the slot constant `Q_DISAGREEMENT_VARIANCE_EMA_INDEX=389` (HEALTH_DIAG diagnostic) and its `state_reset_registry` entry, but the corresponding `match` arm in `reset_named_state` was missing — even though the inline comment block at training_loop.rs:8024 falsely claimed it existed. + +**Fix:** Added the missing arm using `SENTINEL_VARIANCE` (0.0) per the registry entry's documented sentinel. Same class as SP5 Layer A bug-fix #281. No other Welford-EMA slot was deleted, so this is the only missing FoldReset dispatch. + ## 2026-05-08 — SP14 Layer C Phases C.8 + C.9: ISV-driven Adam hyperparams (already complete) + synthetic smoke test ### C.8 — ISV-driven aux trunk Adam β1/β2/ε/LR/grad-clip