p="/workspace/Eval-Reasoning-Consistency/training/sft_product_based.py"
s=open(p).read()
old='''        _post = (all_priors.float() + all_actual_deltas.float()).clamp(0.0, 1.0)
        _B = -((all_ys.float() - _post) ** 2)'''
new='''        _post = (all_priors.float() + all_actual_deltas.float()).clamp(0.0, 1.0)
        # [MenoClaw 2026-06-03 | judge-in-loop] Brier from the model's OWN stated P (judge launders
        # Brier); martingale term _A stays on the judge-derived prior/delta. Env-gated.
        if int(os.getenv("BRIER_FROM_STATED", "0")) and all(("stated_p" in _it) for _it in sft_data):
            _post_brier = t.tensor([float(_it["stated_p"]) for _it in sft_data], dtype=t.float16).float().clamp(0.0, 1.0)
            print(f"[brier-src] stated-P meanP={_post_brier.mean():.3f} (judge-in-loop: martingale=judge, Brier=stated)")
        else:
            _post_brier = _post
        _B = -((all_ys.float() - _post_brier) ** 2)'''
assert old in s, "ANCHOR MISSING"
if "BRIER_FROM_STATED" in s:
    print("already patched, skipping")
else:
    open(p,"w").write(s.replace(old,new,1)); print("ERC trainer patched: BRIER_FROM_STATED added")
