"""Fictional review-loop decisions. No model calls, files, network or integration.
Caller must supply trusted verification and persist state before starting work.
This pure function does not implement persistence, locking, or a running agent.
"""

def decide(record, proposed_fingerprint, verified):
    if not isinstance(record, dict) or type(verified) is not bool:
        return {"action": "pause", "reason": "missing or invalid state"}
    used, limit, seen = record.get("repairs_used"), record.get("repair_limit"), record.get("seen")
    if (type(used) is not int or type(limit) is not int or used < 0
            or limit < 1 or used > limit or not isinstance(seen, list)
            or not seen or not all(isinstance(x, str) and x.strip() for x in seen)
            or not isinstance(proposed_fingerprint, str) or not proposed_fingerprint.strip()):
        return {"action": "pause", "reason": "missing or invalid state"}
    if verified:
        return {"action": "complete", "reason": "supplied verification passed"}
    if proposed_fingerprint in seen:
        return {"action": "pause", "reason": "work product repeated"}
    if used >= limit:
        return {"action": "pause", "reason": "repair allowance exhausted"}
    return {"action": "repair", "reason": "one bounded attempt",
            "next_state": {"repairs_used": used + 1, "repair_limit": limit,
                           "seen": seen + [proposed_fingerprint]}}

if __name__ == "__main__":
    cases = [
        ("repeated A", {"repairs_used": 2, "repair_limit": 3, "seen": ["A", "B"]}, "A", False, "pause"),
        ("limit reached", {"repairs_used": 3, "repair_limit": 3, "seen": ["A", "B", "C"]}, "D", False, "pause"),
        ("one attempt", {"repairs_used": 1, "repair_limit": 3, "seen": ["A"]}, "B", False, "repair"),
        ("lost state", {}, "B", False, "pause"),
        ("verified", {"repairs_used": 2, "repair_limit": 3, "seen": ["A", "B"]}, "B", True, "complete"),
    ]
    for label, record, fingerprint, verified, expected in cases:
        result = decide(record, fingerprint, verified)
        assert result["action"] == expected, (label, result)
        print(label + ": " + result["action"] + " / " + result["reason"])
