From bf214d1a09536a93087ce2dd65054ab401dcc20b Mon Sep 17 00:00:00 2001 From: jgrusewski Date: Sun, 31 May 2026 12:26:54 +0200 Subject: [PATCH] =?UTF-8?q?refactor(rl):=20v9=20slot=20rename=20=E2=80=94?= =?UTF-8?q?=20RL=5FEVAL=5FWARMUP=5F*=20=E2=86=92=20RL=5FREGIME=5FTRANSITIO?= =?UTF-8?q?N=5F*=20(F3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Theorem 2 (v9 behavior preserved): pure constant identifier rename across 3 files; no physical migration. Slots 685/686/687 keep their addresses; v9 kernel, trainer reset_session_state, and diag emit all reference the same memory. - crates/ml-alpha/src/trainer/integrated.rs: 4 references renamed - crates/ml-alpha/cuda/rl_eval_warmup_decay.cu: 3 `#define`s renamed - crates/ml-alpha/examples/alpha_rl_train.rs: ~12 references renamed (import + diag emit) Unblocks the 4 pre-existing errors that F1.1 introduced. Branch now compiles cleanly with regime_observer foundation (F1) + v9 cleanup (F3). --- crates/ml-alpha/cuda/rl_eval_warmup_decay.cu | 16 ++++++++-------- crates/ml-alpha/examples/alpha_rl_train.rs | 10 +++++----- crates/ml-alpha/src/trainer/integrated.rs | 12 ++++++------ 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/crates/ml-alpha/cuda/rl_eval_warmup_decay.cu b/crates/ml-alpha/cuda/rl_eval_warmup_decay.cu index e21f3ba1c..f86debdb5 100644 --- a/crates/ml-alpha/cuda/rl_eval_warmup_decay.cu +++ b/crates/ml-alpha/cuda/rl_eval_warmup_decay.cu @@ -4,7 +4,7 @@ // Pearl: pearl_adaptive_carryover_discipline // // At every regime boundary (train→eval, fold transition), the trainer -// calls `reset_session_state` which sets `RL_EVAL_WARMUP_REMAINING_INDEX` +// calls `reset_session_state` which sets `RL_REGIME_TRANSITION_REMAINING_INDEX` // to the configured warmup duration. This kernel runs once per step // thereafter; while the counter is positive, it overrides four // risk-sizing controller floors with conservative defensive values. @@ -28,9 +28,9 @@ #include -#define RL_EVAL_WARMUP_REMAINING_INDEX 685 -#define RL_EVAL_WARMUP_STEPS_CONFIG_INDEX 686 -#define RL_EVAL_WARMUP_DECAY_STEPS_CONFIG_INDEX 687 +#define RL_REGIME_TRANSITION_REMAINING_INDEX 685 +#define RL_REGIME_TRANSITION_STEPS_CONFIG_INDEX 686 +#define RL_REGIME_TRANSITION_DECAY_STEPS_CONFIG_INDEX 687 #define RL_EVAL_KELLY_SAFETY_DEFENSIVE_INDEX 688 #define RL_EVAL_IQN_TAU_MIN_DEFENSIVE_INDEX 689 #define RL_EVAL_ENTROPY_COEF_MIN_DEFENSIVE_INDEX 690 @@ -52,7 +52,7 @@ extern "C" __global__ void rl_eval_warmup_decay( if (threadIdx.x != 0 || threadIdx.y != 0 || threadIdx.z != 0) return; if (blockIdx.x != 0 || blockIdx.y != 0 || blockIdx.z != 0) return; - const float remaining = isv[RL_EVAL_WARMUP_REMAINING_INDEX]; + const float remaining = isv[RL_REGIME_TRANSITION_REMAINING_INDEX]; // Post-warmup steady state: do nothing. The normal floors stay at // their bootstrap values (or whatever the last-warmup-step wrote). @@ -61,8 +61,8 @@ extern "C" __global__ void rl_eval_warmup_decay( } // Read configured durations + override / normal values. - const float warmup_steps = isv[RL_EVAL_WARMUP_STEPS_CONFIG_INDEX]; - const float decay_steps = isv[RL_EVAL_WARMUP_DECAY_STEPS_CONFIG_INDEX]; + const float warmup_steps = isv[RL_REGIME_TRANSITION_STEPS_CONFIG_INDEX]; + const float decay_steps = isv[RL_REGIME_TRANSITION_DECAY_STEPS_CONFIG_INDEX]; const float kelly_def = isv[RL_EVAL_KELLY_SAFETY_DEFENSIVE_INDEX]; const float tau_def = isv[RL_EVAL_IQN_TAU_MIN_DEFENSIVE_INDEX]; @@ -96,7 +96,7 @@ extern "C" __global__ void rl_eval_warmup_decay( // Decrement counter for next step. When it crosses 0, the next step // sees remaining = -1 and returns early (controllers run unimpeded). - isv[RL_EVAL_WARMUP_REMAINING_INDEX] = remaining - 1.0f; + isv[RL_REGIME_TRANSITION_REMAINING_INDEX] = remaining - 1.0f; // Spec note: warmup_steps is used only by the trainer to set the // initial counter value; this kernel reads warmup_steps only to make // the `remaining > decay_steps` comparison meaningful for non-default diff --git a/crates/ml-alpha/examples/alpha_rl_train.rs b/crates/ml-alpha/examples/alpha_rl_train.rs index 8da38679a..321987040 100644 --- a/crates/ml-alpha/examples/alpha_rl_train.rs +++ b/crates/ml-alpha/examples/alpha_rl_train.rs @@ -112,8 +112,8 @@ use ml_alpha::rl::isv_slots::{ RL_CUMULATIVE_DONES_INDEX, // v9 defensive eval-boundary calibration (spec // 2026-05-31-v9-defensive-eval-boundary-calibration.md). - RL_EVAL_WARMUP_REMAINING_INDEX, RL_EVAL_WARMUP_STEPS_CONFIG_INDEX, - RL_EVAL_WARMUP_DECAY_STEPS_CONFIG_INDEX, + RL_REGIME_TRANSITION_REMAINING_INDEX, RL_REGIME_TRANSITION_STEPS_CONFIG_INDEX, + RL_REGIME_TRANSITION_DECAY_STEPS_CONFIG_INDEX, RL_EVAL_KELLY_SAFETY_DEFENSIVE_INDEX, RL_EVAL_IQN_TAU_MIN_DEFENSIVE_INDEX, RL_EVAL_ENTROPY_COEF_MIN_DEFENSIVE_INDEX, RL_EVAL_PPO_CLIP_EPS_MIN_DEFENSIVE_INDEX, RL_EVAL_KELLY_SAFETY_NORMAL_INDEX, RL_EVAL_IQN_TAU_MIN_NORMAL_INDEX, @@ -780,8 +780,8 @@ fn main() -> Result<()> { }; // v9 eval_warmup pre-compute (json! macro can't take Rust blocks/if-else). - let eval_warmup_remaining = isv[RL_EVAL_WARMUP_REMAINING_INDEX]; - let eval_warmup_decay_steps = isv[RL_EVAL_WARMUP_DECAY_STEPS_CONFIG_INDEX]; + let eval_warmup_remaining = isv[RL_REGIME_TRANSITION_REMAINING_INDEX]; + let eval_warmup_decay_steps = isv[RL_REGIME_TRANSITION_DECAY_STEPS_CONFIG_INDEX]; let eval_warmup_active = if eval_warmup_remaining > 0.0 { 1.0_f32 } else { 0.0_f32 }; let eval_warmup_blend = if eval_warmup_remaining < 0.0 { 0.0_f32 @@ -932,7 +932,7 @@ fn main() -> Result<()> { "remaining": eval_warmup_remaining, "active": eval_warmup_active, "blend": eval_warmup_blend, - "warmup_steps_config": isv[RL_EVAL_WARMUP_STEPS_CONFIG_INDEX], + "warmup_steps_config": isv[RL_REGIME_TRANSITION_STEPS_CONFIG_INDEX], "decay_steps_config": eval_warmup_decay_steps, "floor_kelly_safety": isv[RL_KELLY_SAFETY_FRAC_INDEX], "floor_iqn_tau_min": isv[RL_IQN_ACTION_TAU_MIN_INDEX], diff --git a/crates/ml-alpha/src/trainer/integrated.rs b/crates/ml-alpha/src/trainer/integrated.rs index 8a5bda85f..3983f150b 100644 --- a/crates/ml-alpha/src/trainer/integrated.rs +++ b/crates/ml-alpha/src/trainer/integrated.rs @@ -3032,7 +3032,7 @@ impl IntegratedTrainer { // overconfident positions, and lost $500k before EMAs could // re-converge. Pure adaptive principle now: every signal that // drives behavior must be re-bootstrapped from new-regime data. - // Defensive warmup duration. Matches RL_EVAL_WARMUP_STEPS_CONFIG_INDEX + // Defensive warmup duration. Matches RL_REGIME_TRANSITION_STEPS_CONFIG_INDEX // bootstrap (see ISV bootstrap block in `with_controllers_bootstrapped`). // Hardcoded here because reset_session_state runs before any ISV read // would observe a host-visible value; the kernel reads its own config. @@ -3058,7 +3058,7 @@ impl IntegratedTrainer { (crate::rl::isv_slots::RL_NEG_SCALED_REWARD_MAX_EMA_INDEX, 0.0_f32), (crate::rl::isv_slots::RL_REWARD_CLAMP_CLIP_RATE_EMA_INDEX, 0.0_f32), // v9 — arm the defensive warmup window. - (crate::rl::isv_slots::RL_EVAL_WARMUP_REMAINING_INDEX, warmup_steps), + (crate::rl::isv_slots::RL_REGIME_TRANSITION_REMAINING_INDEX, warmup_steps), // Regime observer boundary policy (F1.7 — spec 2026-05-31 v3, // [[pearl_adaptive_carryover_discipline]]): // - Transient state (FLAG/DURATION/TIMEOUT) → 0 @@ -3475,9 +3475,9 @@ impl IntegratedTrainer { // 500-step warmup with 200-step linear decay phase. During warmup, // risk-sizing floors are temporarily overridden with defensive // values; reset_session_state arms the counter at each boundary. - (crate::rl::isv_slots::RL_EVAL_WARMUP_REMAINING_INDEX, -1.0), // sentinel: no active warmup at boot - (crate::rl::isv_slots::RL_EVAL_WARMUP_STEPS_CONFIG_INDEX, 500.0), // total warmup duration - (crate::rl::isv_slots::RL_EVAL_WARMUP_DECAY_STEPS_CONFIG_INDEX, 200.0), // linear decay window + (crate::rl::isv_slots::RL_REGIME_TRANSITION_REMAINING_INDEX, -1.0), // sentinel: no active warmup at boot + (crate::rl::isv_slots::RL_REGIME_TRANSITION_STEPS_CONFIG_INDEX, 500.0), // total warmup duration + (crate::rl::isv_slots::RL_REGIME_TRANSITION_DECAY_STEPS_CONFIG_INDEX, 200.0), // linear decay window // Defensive overrides (active for ~first 300 steps post-boundary). (crate::rl::isv_slots::RL_EVAL_KELLY_SAFETY_DEFENSIVE_INDEX, 0.25), // quarter-Kelly (crate::rl::isv_slots::RL_EVAL_IQN_TAU_MIN_DEFENSIVE_INDEX, 0.30), // raise pessimism floor @@ -3860,7 +3860,7 @@ impl IntegratedTrainer { /// AFTER all risk-stack controllers run (so this kernel's overrides /// of Kelly_safety_frac / IQN τ_min / entropy_coef_min / PPO ε_min /// take effect for the next step's consumers). Returns early if - /// `RL_EVAL_WARMUP_REMAINING_INDEX` ≤ 0, so the runtime cost when + /// `RL_REGIME_TRANSITION_REMAINING_INDEX` ≤ 0, so the runtime cost when /// warmup is inactive is just a single mapped-pinned ISV read. pub fn launch_rl_eval_warmup_decay(&self) -> Result<()> { let mut args = RawArgs::new();