DineshAI's picture
Publish claim-by-claim SOSMC reproduction
99aac1c verified
Raw
History Blame Contribute Delete
4.48 kB
from __future__ import annotations
import json
import shutil
import sys
import time
from pathlib import Path
from sosmc_repro.ebm2d import run_2d_suite
from sosmc_repro.io import ARTIFACTS, ROOT, provenance, write_json, write_text
from sosmc_repro.langevin import run_wallclock
from sosmc_repro.mnist import run_mnist_suite
from sosmc_repro.theory import verify_equation_19, verify_proposition_1
def copy_contract(claim: int, artifact_dir: Path) -> None:
contract_dir = ROOT / "evidence" / f"claim_{claim}"
for source in contract_dir.iterdir():
if source.is_file():
shutil.copy2(source, artifact_dir / source.name)
def main() -> int:
started = time.perf_counter()
config = json.loads((ROOT / "config" / "experiment.json").read_text())
seed = int(config["seed"])
ARTIFACTS.mkdir(parents=True, exist_ok=True)
results: dict[int, dict] = {
2: verify_proposition_1(),
3: verify_equation_19(seed),
}
if config["stage"] in {
"claim_4_wallclock",
"claim_5_2d",
"claim_6_mnist",
}:
results[4] = run_wallclock()
if config["stage"] in {"claim_5_2d", "claim_6_mnist"}:
results[5] = run_2d_suite()
results[1] = results[5]["algorithm1_result"]
if config["stage"] == "claim_6_mnist":
results[6] = run_mnist_suite()
for claim, result in results.items():
claim_dir = ARTIFACTS / f"claim_{claim}"
claim_dir.mkdir(parents=True, exist_ok=True)
copy_contract(claim, claim_dir)
write_json(claim_dir / "raw_output.json", result)
write_json(
claim_dir / "independent_checker_output.json",
{
"checker": {
1: "official EBM trace plus independent weighted-gradient reconstruction",
2: "exact rational grid plus symbolic identities",
3: "symbolic Gaussian integration plus independent Monte Carlo",
4: "independent paired-seed wall-clock comparison",
5: "independent objective, tracking-error, and large-beta checks",
6: "finite-grid paired reward and one-class PCA digit-manifold certificate",
}[claim],
"passed": result["passed"],
"details": result,
},
)
write_json(
claim_dir / "negative_control_output.json",
result.get("negative_controls", result.get("independent_checker", {}).get("negative_control", {})),
)
write_json(claim_dir / "runtime.json", provenance(started, seed))
write_text(
claim_dir / "EVAL.md",
f"# Claim {claim} evaluation\n\n"
f"Verdict: **{result['verdict']}**\n\n"
f"Passed: `{str(result['passed']).lower()}`\n",
)
if 1 not in results:
claim_1_dir = ARTIFACTS / "claim_1"
claim_1_dir.mkdir(parents=True, exist_ok=True)
copy_contract(1, claim_1_dir)
claim_1_result = {
"verdict": "BLOCKED",
"reason": (
"The exact algorithm contract is frozen; a faithful EBM "
"execution trace is required."
),
"passed": False,
}
write_json(claim_1_dir / "raw_output.json", claim_1_result)
write_text(
claim_1_dir / "EVAL.md",
"# Claim 1 evaluation\n\n"
f"Verdict: **{claim_1_result['verdict']}**\n\n"
f"{claim_1_result['reason']}\n",
)
summary = {
"stage": config["stage"],
"results": {str(k): v["verdict"] for k, v in results.items()},
"all_accepted_passed": all(results[c]["passed"] for c in config["accepted_claims"]),
"provenance": provenance(started, seed),
}
write_json(ARTIFACTS / "summary.json", summary)
write_text(
ARTIFACTS / "EVAL.md",
"# SOSMC cumulative evaluation\n\n"
f"Stage: `{config['stage']}`\n\n"
+ "\n".join(f"- Claim {k}: **{v['verdict']}**" for k, v in results.items())
+ f"\n\nAccepted checks passed: `{str(summary['all_accepted_passed']).lower()}`\n",
)
print("BEGIN_FULL_MACHINE_READABLE_RESULTS")
print(json.dumps({"summary": summary, "claim_results": results}, indent=2, sort_keys=True))
print("END_FULL_MACHINE_READABLE_RESULTS")
return 0 if summary["all_accepted_passed"] else 1
if __name__ == "__main__":
sys.exit(main())