Re-walk of BUILDER-2026-10-13T00:32:22Z-bc3aae-factory-gap-ss whose close-commit was lost in the store repair: submit→approved→building→verifying→closed in one process on the fresh store, evidence = the already-pushed feat/refactor SHAs (audit 34/34, parity 4387/4387).
58 lines
2.2 KiB
Python
58 lines
2.2 KiB
Python
#!/usr/bin/env python3
|
|
"""Close the #2479 structural_store gap-closing contract (re-walk on the
|
|
repaired store). The original contract BUILDER-2026-10-13T00:32:22Z-bc3aae-
|
|
factory-gap-ss was opened and walked draft→building in the isolated worktree,
|
|
but the close was never committed and the store was later repaired by
|
|
union-merge — the contract entity did not survive. This re-walks the FULL
|
|
lifecycle (submit→approved→building→verifying→closed) in ONE process per the
|
|
shared-store clobber law, carrying the already-pushed parity SHAs as evidence:
|
|
feat 201530bf close PARTIAL gaps — dichotomy wave (parity)
|
|
ref c66d4bab Phase B language-advantage pass
|
|
|
|
Usage: close_contract_gap_ss.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 = "201530bf"
|
|
PHASE_B_SHA = "c66d4bab"
|
|
ORIG = "BUILDER-2026-10-13T00:32:22Z-bc3aae-factory-gap-ss"
|
|
|
|
iface = ConstructionInterface(builder="factory-gap-ss")
|
|
|
|
r = iface.submit_need(
|
|
"structural_store dichotomy gap-close (re-walk of " + ORIG + " whose "
|
|
"close-commit was lost in the store repair): 21 audit-missing functions "
|
|
"ported name-preserving to Rust, doc-envelope FFI ss_*, ctypes loader, "
|
|
"facade delegation with RUNE_STRUCTURAL_CORE=python pin; frozen-truth "
|
|
"battery 86 cases; live parity 4387/4387; audit 34/34 (was 13/34). "
|
|
"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=f"commit:{PARITY_SHA}" if phase == "verifying" else "")
|
|
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)
|