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

ROOT = Path(__file__).resolve().parents[1]
submit = json.loads((ROOT / "log/final-submit.json").read_text())
base = submit["base_url"]
job_id = submit["job_id"]
url = f"{base}{submit['jobs_path']}/{job_id}"
checkpoint = ROOT / "log/final-terminal-response.json"
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 != job_id:
        raise RuntimeError("Pinned final job ID mismatch")
    status = value.get("status", "").lower()
    rec = {"base_url": base, "job_id": job_id, "status": status, "response": value, "checked_at": datetime.datetime.now(datetime.timezone.utc).isoformat()}
    temp = Path(str(checkpoint) + ".tmp")
    temp.write_text(json.dumps(rec, ensure_ascii=False, indent=2) + "\n")
    os.replace(temp, checkpoint)
    if status in {"completed", "failed", "cancelled"}:
        if status != "completed":
            raise RuntimeError("Final job terminal failure: " + status)
        print(json.dumps(rec, ensure_ascii=False))
        break
    time.sleep(30)
