diff --git a/crates/ml/tests/gpu_backtest_validation.rs b/crates/ml/tests/gpu_backtest_validation.rs index ebdef2932..2853d2d0b 100644 --- a/crates/ml/tests/gpu_backtest_validation.rs +++ b/crates/ml/tests/gpu_backtest_validation.rs @@ -284,7 +284,14 @@ mod gpu_tests { // env_step decoder. Match production eval-baseline.rs. evaluator.set_branch_sizes(&DqnBacktestConfig::from_network_dims((256, 256, 128, 128))); - let model = constant_action_model(4, &stream); // Always Long100 + // Action 72 = Long×Full×order=0×urgency=0 under 4-3-3-3 factored + // decoding (action = dir*27 + mag*9 + order*3 + urgency = 2*27 + + // 2*9 + 0 + 0). Pre-Phase-8.5 the eval used a flat 4-action enum + // where `4` reportedly meant Long100, but SP21 Phase 8.5 + // (2026-05-12) wired the factored decoder where `4` now decodes + // to Short-Quarter (dir=0, mag=0). The "Always Long100" comment + // was correct intent but the constant wasn't migrated. + let model = constant_action_model(72, &stream); // Always Long100 (factored) let metrics = evaluator .evaluate(&model, 24) .expect("evaluation should succeed"); @@ -405,7 +412,9 @@ mod gpu_tests { // env_step decoder. Match production eval-baseline.rs. evaluator.set_branch_sizes(&DqnBacktestConfig::from_network_dims((256, 256, 128, 128))); - let model = constant_action_model(4, &stream); // Always Long100 + // Action 72 = Long×Full×order=0×urgency=0 under 4-3-3-3 factored + // decoding (see test_always_long_on_downtrend for full derivation). + let model = constant_action_model(72, &stream); // Always Long100 (factored) let metrics = evaluator .evaluate(&model, 24) .expect("evaluation should succeed");