summaryrefslogtreecommitdiff
path: root/ep_run
diff options
context:
space:
mode:
Diffstat (limited to 'ep_run')
-rw-r--r--ep_run/casc_eq_train.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/ep_run/casc_eq_train.py b/ep_run/casc_eq_train.py
index 2ad44ac..b378c07 100644
--- a/ep_run/casc_eq_train.py
+++ b/ep_run/casc_eq_train.py
@@ -523,9 +523,12 @@ def ep_step(x, y):
# (large-displacement converging relax) pass as legal: 600 consecutive legal
# verdicts while beta climbed x392 into damaging gradients (fw72m_simple 35.4-36k).
res_s = ddp_max_scalar(GOV.get('res', 0.0))
- rho_s = ddp_max_scalar(GOV.get('rho') or 0.0)
- if ((not math.isfinite(res_s)) or (not math.isfinite(rho_s)) or
- res_s > 0.02 or rho_s > args.beta_cap_rho):
+ # SV2-VALIDATION FIX: res>0.02 ALONE is the wall (NaN illegal, worst rank rules).
+ # rho is demoted to telemetry — standalone rho>0.9 at noise-floor residuals reads
+ # ~1 (the documented v1-cap starvation bug; Codex's OR resurrected it, the SV2
+ # arm caught it: 6-halving storm every step, beta pinned at 4.7e-5). The 35k
+ # runaway had res >> 0.02 with rho < 0.9 — res-alone provably plugs that hole.
+ if (not math.isfinite(res_s)) or res_s > 0.02:
return False
return True
_ok0 = _legal(gdrift)