"""Teaching example: python3 confirmation.py. No model or service calls.

Receipts here are constructed fixtures. In a real application, only a trusted
adapter may produce them after authenticating and validating service responses.
This predicate does not itself authenticate evidence or authorize a write.
"""

from dataclasses import dataclass, replace


@dataclass(frozen=True)
class Operation:
    operation_id: str
    issue_id: str
    team_id: str


@dataclass(frozen=True)
class Receipt:
    operation_id: str
    issue_id: str
    team_id: str
    state: str


def may_report_confirmed(expected, receipt):
    return (
        receipt is not None
        and receipt.state == "committed"
        and receipt.operation_id == expected.operation_id
        and receipt.issue_id == expected.issue_id
        and receipt.team_id == expected.team_id
    )


if __name__ == "__main__":
    operation = Operation("assign-104-1", "I-104", "team-birch")
    committed = Receipt("assign-104-1", "I-104", "team-birch", "committed")
    cases = [
        ("Model says done, no tool evidence", None, False),
        ("Request accepted, still queued", replace(committed, state="accepted"), False),
        ("Request rejected", replace(committed, state="rejected"), False),
        ("Receipt for another operation", replace(committed, operation_id="assign-105-1"), False),
        ("Receipt names another issue", replace(committed, issue_id="I-105"), False),
        ("Receipt names another team", replace(committed, team_id="team-cedar"), False),
        ("Timeout, no receipt received", None, False),
        ("Matching commit receipt received", committed, True),
        ("Late timeout, verified receipt retained", committed, True),
    ]
    for description, evidence, expected_result in cases:
        result = may_report_confirmed(operation, evidence)
        assert result is expected_result, description
        print(f"{'MAY CONFIRM' if result else 'MUST NOT CONFIRM'}: {description}")
    print("All 9 constructed evidence checks passed; no real operation was executed.")
