SensorflowStudio / tests /test_rotr /test_regression.py
whassan's picture
Deploy Sensorflow Studio (part 4)
4b5fa98 verified
Raw History Blame Contribute Delete
2.86 kB
"""Baseline-vs-candidate regression: seqeval delegation verdicts and the
six-outcome distinction (slowest module: two 140-scenario runs + a
sequential test over a dedicated megaeval population)."""
from __future__ import annotations
import pytest
from sensorflow.rotr import pipeline
from sensorflow.rotr import store as rotr_store
from sensorflow.rotr.metrics import evaluate_candidate
@pytest.fixture(scope="module")
def reg_env(tmp_path_factory):
from sensorflow.megaeval import population as pop_mod
from sensorflow.seqeval import ledger as ledger_mod
from sensorflow.seqeval.controller import reset_seqeval_store
root = tmp_path_factory.mktemp("rotr_reg")
pop_mod.set_mega_root(str(root / "mega"))
ledger_mod.set_seqeval_root(str(root / "seq"))
reset_seqeval_store()
rotr_store.set_rotr_root(str(root / "rotr"))
runs = {
"v2": pipeline.execute_run(n_scenarios=140, seed=7,
model_version="stack-v2-improved"),
"v3": pipeline.execute_run(n_scenarios=140, seed=7,
model_version="stack-v3-planning-regression"),
}
yield runs
pop_mod.set_mega_root("runs/megaeval")
ledger_mod.set_seqeval_root("runs/seqeval")
reset_seqeval_store()
class TestSixOutcomes:
def test_planted_planning_regression_is_caught_and_safety_critical(self, reg_env):
r = evaluate_candidate("t-reg", reg_env["v2"], reg_env["v3"], seed=11)
assert r.six_outcomes["observed_difference"]
assert r.six_outcomes["statistically_significant"], \
f"seqeval said {r.seqeval and r.seqeval.get('decision')}"
assert r.six_outcomes["practically_significant"]
assert r.six_outcomes["safety_critical"]
assert not r.six_outcomes["distribution_driven"], \
"same-seed banks share the opportunity mix"
assert r.primary_outcome == "SAFETY_CRITICAL_REGRESSION"
assert r.seqeval["decision"] == "REGRESSION"
assert r.metric_deltas["violation_rate_VRU"] > 0
def test_self_comparison_shows_no_difference(self, reg_env):
r = evaluate_candidate("t-self", reg_env["v2"], reg_env["v2"], seed=11)
assert not r.six_outcomes["observed_difference"]
assert not r.six_outcomes["statistically_significant"]
assert not r.six_outcomes["safety_critical"]
assert r.primary_outcome in ("NO_DIFFERENCE", "INSUFFICIENT_EVIDENCE")
def test_delegation_payload_is_attached_with_translated_effects(self, reg_env):
r = evaluate_candidate("t-payload", reg_env["v2"], reg_env["v3"], seed=11)
assert r.seqeval and "run_id" in r.seqeval
eff = r.seqeval["translated_effects"]
# rate increases translate to NEGATIVE performance effects
assert eff["pedestrian|night"] < 0
assert eff["__global__"] < 0