#!/usr/bin/env python3
import json
from pathlib import Path


def run(initial_score=60, max_revisions=2):
    state = {"status": "draft", "score": initial_score, "revisions": 0, "trace": []}
    while True:
        if state["status"] == "draft":
            state["trace"].append({"node": "draft", "score": state["score"]})
            state["status"] = "verify"
        elif state["status"] == "verify":
            passed = state["score"] >= 80
            state["trace"].append({"node": "verify", "passed": passed, "score": state["score"]})
            if passed:
                state["status"] = "success"
            elif state["revisions"] >= max_revisions:
                state["status"] = "failed"
            else:
                state["status"] = "revise"
        elif state["status"] == "revise":
            state["revisions"] += 1
            state["score"] += 15
            state["trace"].append({"node": "revise", "revision": state["revisions"], "new_score": state["score"]})
            state["status"] = "verify"
        else:
            return state


result = {"reachable_success": run(60, 2), "bounded_failure": run(20, 2)}
Path(__file__).with_name("experiment-result.json").write_text(
    json.dumps(result, ensure_ascii=False, indent=2) + "\n", encoding="utf-8"
)
print(json.dumps(result, ensure_ascii=False, indent=2))
