fsi-anomaly / tests /test_posttrain.py
FerrellSyntheticIntelligence's picture
backup all: 37 files (final)
97c39f2 verified
Raw
History Blame Contribute Delete
2.41 kB
"""Unit tests for train/ties_merge.py and research/rlvr.py.
Run: .venv/bin/python tests/test_posttrain.py
"""
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
import torch
from train.ties_merge import ties_merge, trim_delta
from research.rlvr import reward, reward_card
def test_trim_keeps_topk():
d = torch.tensor([1.0, -0.5, 0.01, 0.001, 0.0005])
t = trim_delta(d, keep=0.4)
assert t[0] == 1.0 and t[1] == -0.5
assert t[2] == 0.0 and t[3] == 0.0
def test_ties_sign_consensus():
base = {"w": torch.zeros(4)}
t1 = {"w": torch.tensor([1.0, 1.0, 1.0, -1.0])}
t2 = {"w": torch.tensor([1.0, -1.0, 1.0, -1.0])}
out = ties_merge(base, [t1, t2], keep=1.0)
# sign agreement at idx 0, 2, 3 -> merge; idx 1 disagrees -> zero
assert out["w"][0] == 1.0
assert out["w"][2] == 1.0
assert out["w"][3] == -1.0
assert out["w"][1] == 0.0
def test_rlvr_reward_correct_with_citation():
r = reward(gold="refutes", policy="refutes", citation="1982",
evidence="the deed file states 1982")
assert r["verdict"] == 1.0 and r["citation"] == 0.2 and r["total"] == 1.2
def test_rlvr_reward_wrong_verdict():
r = reward(gold="refutes", policy="supports", citation="1982",
evidence="the deed file states 1982")
assert r["verdict"] == -1.0 and r["total"] == -0.8
def test_rlvr_reward_abstain_is_zero():
r = reward(gold="refutes", policy="not enough information",
citation="", evidence="the deed file states 1982")
assert r["verdict"] == 0.0 and r["total"] == 0.0
def test_rlvr_reward_false_citation_penalty():
r = reward(gold="supports", policy="supports", citation="1978",
evidence="the deed file states 1982")
assert r["verdict"] == 1.0 and r["citation"] == -0.2 and r["total"] == 0.8
def test_rlvr_card_trace():
card = reward_card(gold="refutes", policy="refutes", citation="1982",
evidence="the deed file states 1982", probe="rt05")
assert card["probe"] == "rt05" and card["total"] == 1.2
for k in ("gold", "policy", "verdict", "citation", "total"):
assert k in card
if __name__ == "__main__":
fns = [v for k, v in sorted(globals().items()) if k.startswith("test_")]
for fn in fns:
fn()
print(f"ok {fn.__name__}")
print(f"\n{len(fns)} posttrain tests passed")