Files
rune/scripts/close_contract_hook_engine.py

59 lines
2.2 KiB
Python

#!/usr/bin/env python3
"""Close the #2479 dichotomy-wave hook_engine gap contract (GO port).
Full lifecycle walk in ONE process (shared-store clobber hazard; segment
transitions take ~60s each over ~610 segments — do NOT split across
processes). Carries the already-pushed SHAs as evidence:
feat cba7c986 close PARTIAL gaps — dichotomy wave (parity)
ref d38a4317 Phase B language-advantage pass
Usage: close_contract_hook_engine.py
"""
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
PARITY_SHA = "cba7c986"
PHASE_B_SHA = "d38a4317"
EVIDENCE = f"parity {PARITY_SHA}; phase B {PHASE_B_SHA}"
iface = ConstructionInterface(builder="factory-gap-he")
r = iface.submit_need(
"hook_engine dichotomy gap-close (GO): name-preserving port of the 5 "
"unmatched placement-engine functions (discover_functions, "
"tag_function, validate_placements, generate_report, handle_hook plus "
"auto_tag companion) into src/go/hook-engine, IO behind injectable "
"seams, frozen-truth battery (truth_gap.json, 14 cases / 8 fns) "
"generated against the live Python oracle, gofmt/vet clean; Phase B "
"memoization (placement computed once, bytes identical) + the "
"oracle's main() CLI (scan/recommend/validate/report/hook). Battery "
"7/7 green, CLI smoke verified (scan 265 discovered / 12 tagged). "
"Delivered on gitea/master: feat " + PARITY_SHA + ", Phase B "
+ PHASE_B_SHA + ".",
origin="builder",
)
print("submit_need:", json.dumps(r)[:300])
if not r.get("success"):
print("NEED FAILED — aborting")
sys.exit(1)
c = r["ids"]["contract_id"]
print("contract_id:", c)
for phase in ("approved", "building", "verifying", "closed"):
t = iface.transition(c, phase, evidence_ref=EVIDENCE)
ok = t.get("success")
print(f"transition->{phase}:", "ok" if ok else json.dumps(t)[:300])
if not ok:
sys.exit(1)
doc = iface.scaffold.load()
e = iface.scaffold.contract(doc, c)
print("FINAL PHASE:", e.get("phase") if e else "MISSING")
if not e or e.get("phase") != "closed":
sys.exit(1)
print("CLOSED", c)