#!/usr/bin/env python3 """Close the #2479 dichotomy-wave construction contract for . verifying+closed back-to-back IN ONE PROCESS (shared-store clobber hazard). Usage: close_contract_batch_a.py The shared scaffold store is clobber-hazard territory: if the contract entity was clobbered by a concurrent batch, submit_need(contract_id=...) re-walks the SAME contract id on the fresh store (concept_topology law). """ import json import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "src")) from rune.construction_interface import ConstructionInterface module, cid, loader_py, parity_sha, phaseb_sha = sys.argv[1:6] evidence = sys.argv[6] iface = ConstructionInterface(builder="factory-batch-a") r = iface.submit_need( f"Port src/rune/{module}.py to FULL Rust (dichotomy factory, issue " f"#2479 tranche): doc-envelope FFI, ctypes loader, facade delegation " f"pin, frozen-truth battery, live parity 100%, Phase B " f"language-advantage pass.", origin="builder", contract_id=cid, ) print("submit_need:", json.dumps(r)[:300]) if not r.get("success"): print("NEED FAILED — aborting") sys.exit(1) t = iface.transition(cid, "verifying") print("transition->verifying:", json.dumps(t)[:300]) if not t.get("success"): sys.exit(1) c = iface.close(cid, observed_evidence=[{ "kind": "port_evidence", "detail": evidence, }], scope_files=[ f"src/rune/{module}.py", f"src/rune/{loader_py}", f"src/rust/{module}/src/lib.rs", f"src/rust/{module}/src/branch_battery.rs", f"scripts/gen_{module}_truth.py", ]) print("close:", json.dumps(c)[:400]) print("CONTRACT", cid, "closed" if c.get("success") else "CLOSE_FAILED")