"""Bounded incident investigation. Author: Sandeep Belgavi. Synthetic only.""" from dataclasses import dataclass @dataclass(frozen=True) class Decision: action: str argument: str = "" def run(adapter, evidence, limit=3): """Adapter is a model seam; the demo supplies deterministic decisions.""" if type(limit) is not int or not 1 <= limit <= 100: raise ValueError("limit must be 1..100") observed, events = {}, [] for step in range(limit): try: decision = adapter(dict(observed)) except Exception: return {"status": "adapter_error", "events": events} if (not isinstance(decision, Decision) or not isinstance(decision.action, str) or not isinstance(decision.argument, str)): return {"status": "invalid", "events": events} if decision.action == "finish": status = "complete" if observed else "unsupported" return {"status": status, "events": events} if decision.action != "read" or decision.argument not in evidence: return {"status": "denied", "events": events} if decision.argument in observed: return {"status": "repeated", "events": events} observed[decision.argument] = evidence[decision.argument] events.append({"step": step, "tool": "read", "ref": decision.argument}) return {"status": "exhausted", "events": events} def demo_adapter(observed): return Decision("finish") if observed else Decision("read", "latency") if __name__ == "__main__": result = run(demo_adapter, {"latency": "synthetic p95 elevated"}) print(f"status={result['status']} reads={len(result['events'])}")