""" Real correctness tests for core.decisions — the evidence-label -> recommendation mapping and the DecisionItem dataclass. """ from datetime import date from core.decisions import DecisionItem, recommendation_for_issue def _ev(label): return {"label": label, "summary": "", "truth_type": "hard_truth", "confidence": 0.85} def test_inventory_drop_maps_to_replenishment_recommendation(): rec = recommendation_for_issue("branch", [_ev("inventory_availability_drop")]) assert "inventory" in rec.lower() assert "7 days" in rec def test_backlog_increase_maps_to_warehouse_capacity_review(): rec = recommendation_for_issue("warehouse", [_ev("backlog_increase")]) assert "warehouse capacity" in rec.lower() assert "72 hours" in rec def test_sla_response_increase_maps_to_service_team_review(): rec = recommendation_for_issue("team", [_ev("sla_response_increase")]) assert "service team" in rec.lower() def test_unknown_evidence_falls_back_to_generic_owner_assignment(): rec = recommendation_for_issue("process", [_ev("some_unmapped_label")]) assert "operations owner" in rec.lower() def test_empty_evidence_falls_back_to_generic_recommendation(): rec = recommendation_for_issue("branch", []) assert "operations owner" in rec.lower() def test_first_matching_label_wins_when_multiple_present(): # inventory check is evaluated before backlog in the current policy rec = recommendation_for_issue( "warehouse", [_ev("inventory_availability_drop"), _ev("backlog_increase")] ) assert "inventory" in rec.lower() def test_decision_item_constructs_with_defaults(): item = DecisionItem( decision_id="d1", issue_id="i1", entity_id="route_14", created_at=date(2026, 5, 15), title="Review route_14 drift", urgency=0.8, recommendation="...", confidence=0.84, ) assert item.evidence == [] assert item.status == "open"