From 4a32186a5f789c2abab28602a23431e2ebe66e9c Mon Sep 17 00:00:00 2001 From: jgrusewski Date: Wed, 20 May 2026 23:40:45 +0200 Subject: [PATCH] fix(crt-train): migrate all PerceptionTrainerConfig literals to new smoothness_base_lambda field MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task 5 added smoothness_base_lambda to PerceptionTrainerConfig but only updated the struct definition + Default impl. Eight test sites in perception_overfit.rs and one site in alpha_train.rs construct the config via explicit field list (no ..Default::default() spread), so they broke with E0063 missing-field errors under cargo check --all-targets. Per feedback_no_partial_refactor.md: when a contract changes, every consumer migrates atomically. This commit adds smoothness_base_lambda: 0.0 to all 9 sites so the workspace compiles cleanly. The alpha_train.rs value of 0.0 is a placeholder — Task 7 will replace it with cli.smoothness_base_lambda once the CLI flag is added. --- crates/ml-alpha/examples/alpha_train.rs | 1 + crates/ml-alpha/tests/perception_overfit.rs | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/crates/ml-alpha/examples/alpha_train.rs b/crates/ml-alpha/examples/alpha_train.rs index e0d183e94..71e8e6c78 100644 --- a/crates/ml-alpha/examples/alpha_train.rs +++ b/crates/ml-alpha/examples/alpha_train.rs @@ -261,6 +261,7 @@ fn main() -> Result<()> { seed: cli.seed, horizon_weights, n_batch: cli.batch_size, + smoothness_base_lambda: 0.0, }; let mut trainer = PerceptionTrainer::new(&dev, &trainer_cfg).context("trainer init")?; diff --git a/crates/ml-alpha/tests/perception_overfit.rs b/crates/ml-alpha/tests/perception_overfit.rs index 188ba54fb..a79b98fcd 100644 --- a/crates/ml-alpha/tests/perception_overfit.rs +++ b/crates/ml-alpha/tests/perception_overfit.rs @@ -72,6 +72,7 @@ fn stacked_trainer_loss_shrinks_on_constant_signal() { seed: 0x4242, horizon_weights: [1.0; 5], n_batch: 1, + smoothness_base_lambda: 0.0, }; let mut trainer = PerceptionTrainer::new(&dev, &cfg).expect("init"); @@ -145,6 +146,7 @@ fn stacked_trainer_loss_shrinks_with_stride_4() { seed: 0xC4C4, horizon_weights: [1.0; 5], n_batch: 1, + smoothness_base_lambda: 0.0, }; let mut trainer = PerceptionTrainer::new(&dev, &cfg).expect("init"); @@ -198,6 +200,7 @@ fn stacked_trainer_loss_shrinks_at_batch_32() { seed: 0xB32B, horizon_weights: [1.0; 5], n_batch: 32, + smoothness_base_lambda: 0.0, }; let mut trainer = PerceptionTrainer::new(&dev, &cfg).expect("init"); @@ -295,6 +298,7 @@ fn evaluate_alone_succeeds() { seed: 0x6262, horizon_weights: [1.0; 5], n_batch: 1, + smoothness_base_lambda: 0.0, }; let mut trainer = PerceptionTrainer::new(&dev, &cfg).expect("init"); let ts = 1_000_000u64; @@ -322,6 +326,7 @@ fn evaluate_works_after_captured_training_step() { seed: 0x5151, horizon_weights: [1.0; 5], n_batch: 1, + smoothness_base_lambda: 0.0, }; let mut trainer = PerceptionTrainer::new(&dev, &cfg).expect("init"); @@ -356,6 +361,7 @@ fn evaluate_works_after_capture_no_replay() { seed: 0x8181, horizon_weights: [1.0; 5], n_batch: 1, + smoothness_base_lambda: 0.0, }; let mut trainer = PerceptionTrainer::new(&dev, &cfg).expect("init"); let ts = 1_000_000u64; @@ -385,6 +391,7 @@ fn horizon_ema_and_lambda_track_after_training() { seed: 0x9292, horizon_weights: [1.0; 5], n_batch: 1, + smoothness_base_lambda: 0.0, }; let mut trainer = PerceptionTrainer::new(&dev, &cfg).expect("init"); @@ -440,6 +447,7 @@ fn evaluate_works_after_warmup_only() { seed: 0x7171, horizon_weights: [1.0; 5], n_batch: 1, + smoothness_base_lambda: 0.0, }; let mut trainer = PerceptionTrainer::new(&dev, &cfg).expect("init"); let ts = 1_000_000u64;