from app.common.enums import ActionType, DecisionMode, DoseBucket from app.common.types import PolyGuardAction from app.env.env_core import PolyGuardEnv from app.env.verifier import verify_action_legality def test_abrupt_stop_requires_taper() -> None: env = PolyGuardEnv() env.reset(seed=42, difficulty="easy") action = PolyGuardAction( mode=DecisionMode.REGIMEN_OPT, action_type=ActionType.STOP_DRUG, target_drug="benzodiazepine_like", replacement_drug=None, dose_bucket=DoseBucket.NA, taper_days=None, monitoring_plan=None, candidate_id="cand_99", confidence=0.8, rationale_brief="stop", ) report = verify_action_legality(env.state, action) assert report.legal is False assert "abrupt_stop_requires_taper" in report.violations def test_monitoring_action_requires_plan() -> None: env = PolyGuardEnv() env.reset(seed=42, difficulty="medium") action = PolyGuardAction( mode=DecisionMode.DOSE_OPT, action_type=ActionType.ORDER_MONITORING_AND_WAIT, target_drug=None, replacement_drug=None, dose_bucket=DoseBucket.NA, taper_days=None, monitoring_plan=None, candidate_id="cand_08", confidence=0.7, rationale_brief="wait", ) report = verify_action_legality(env.state, action) assert report.legal is False assert "invalid_monitoring_gap" in report.violations