from pathlib import Path
import json
import time
import urllib.request

ROOT = Path(__file__).resolve().parents[1]
state = json.loads((ROOT / "log/final-submit-rebuild.json").read_text())
url = f"{state['base_url']}{state['jobs_path']}/{state['job_id']}"
while True:
    with urllib.request.urlopen(url, timeout=30) as response:
        value = json.loads(response.read())
    returned = value.get("id") or value.get("job_id")
    if returned and returned != state["job_id"]:
        raise RuntimeError("pinned final rebuild job mismatch")
    status = value.get("status", "").lower()
    if status == "completed":
        if (value.get("verification") or {}).get("verified") is not True:
            raise RuntimeError("final rebuild completed without verified receipt")
        (ROOT / "log/final-terminal-rebuild.json").write_text(json.dumps(value, ensure_ascii=False, indent=2) + "\n")
        print(json.dumps({"status": status, "job_id": state["job_id"], "verification": value.get("verification")}, ensure_ascii=False))
        break
    if status in {"failed", "cancelled"}:
        raise RuntimeError(status)
    time.sleep(30)
