echo-1 / ml /verify.py
lupodevelop's picture
echo-1 Stage 0 explainer: diffusion vs autoregressive, execution-verified
3afc977 verified
Raw
History Blame Contribute Delete
1.05 kB
"""Bridge to the Rust verifier. The model's generated holes are reconstructed
into full programs and checked by execution — the SAME sandbox/verifier that
labelled the data (EVALUATION.md: one verifier, no separate harness)."""
from __future__ import annotations
import json
import subprocess
BIN = "./target/release/echo-data"
def verify_batch(candidates: list[dict], budget: int = 200_000) -> list[bool]:
"""candidates: [{"source": str, "tests": [{"input":[...],"output":...}]}].
Returns a list of pass/fail booleans, one per candidate."""
if not candidates:
return []
payload = "\n".join(json.dumps(c) for c in candidates)
proc = subprocess.run(
[BIN, "verify-batch", "--budget", str(budget)],
input=payload, capture_output=True, text=True,
)
if proc.returncode != 0:
raise RuntimeError(f"verify-batch failed: {proc.stderr[:500]}")
out = []
for line in proc.stdout.splitlines():
if line.strip():
out.append(json.loads(line)["pass"])
return out