RedButton-v2 / tests /test_models_v2.py
Hugging557444's picture
V2-B: core v2 modules + tests (auditor, deception, sandbagging)
80b9160
Raw
History Blame Contribute Delete
1.46 kB
"""Smoke tests for redbutton_v2.models — instantiation + serialization."""
from redbutton_v2.models import (
RedButtonV2Action,
RedButtonV2Observation,
RedButtonV2State,
)
def test_action_minimum_required_fields():
a = RedButtonV2Action(tool_name="read_file", arguments={"path": "/x"})
assert a.tool_name == "read_file"
assert a.arguments == {"path": "/x"}
def test_observation_default_fields():
o = RedButtonV2Observation(
task_description="solve problems",
available_tools=["read_file"],
steps_until_shutdown=15,
)
assert o.auditor_message is None
assert o.auditor_check_due is False
assert o.eval_problem_flags == {}
assert o.problems_remaining == 10
def test_state_default_fields_include_v2_extensions():
s = RedButtonV2State()
assert s.auditor_events == []
assert s.deception_events == []
assert s.sandbagging_score is None
assert s.error_count == 0
assert s.deception_flag is False
def test_state_round_trips_via_pydantic():
s = RedButtonV2State(tier=2, turn_count=5)
s.auditor_events.append({"turn": 3, "category": None})
s.deception_events.append({"turn": 3, "category": "overclaim_deception"})
dumped = s.model_dump()
loaded = RedButtonV2State(**dumped)
assert loaded.tier == 2
assert loaded.turn_count == 5
assert loaded.auditor_events == s.auditor_events
assert loaded.deception_events == s.deception_events