Spaces:
Running
Running
File size: 3,619 Bytes
f791e67 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | #!/usr/bin/env python3
"""Fixed OpenResearch entrypoint; behavior varies only through committed config."""
from __future__ import annotations
import json
import os
import platform
import subprocess
import sys
import time
from pathlib import Path
from threadpoolctl import threadpool_limits
from run_claim4_checkpoint import run as run_claim4_checkpoint
from verify_claim4_audit import verify as verify_claim4_audit
from verify_claim4_final import verify as verify_claim4_final
from verify_claim5_audit import verify as verify_claim5_audit
from verify_claim5_final import verify as verify_claim5_final
from verify_cumulative import verify as verify_cumulative
ROOT = Path(__file__).resolve().parents[2]
CONFIG_PATH = ROOT / "repro/config/campaign.json"
def cpu_allocation() -> dict:
affinity = None
if hasattr(os, "sched_getaffinity"):
affinity = len(os.sched_getaffinity(0))
return {
"os_cpu_count": os.cpu_count(),
"affinity_cpu_count": affinity,
"platform": platform.platform(),
"python": sys.version.split()[0],
}
def git_sha() -> str:
return subprocess.check_output(
["git", "rev-parse", "HEAD"], cwd=ROOT, text=True
).strip()
def main() -> None:
started = time.monotonic()
config = json.loads(CONFIG_PATH.read_text())
if config["compute"]["gpu_allowed"]:
raise AssertionError("campaign configuration must remain CPU-only")
if config["phase"] not in {
"baseline",
"claim4_released_audit",
"claim4_cpu_calibration",
"claim4_finalize",
"claim5_finalize",
}:
raise AssertionError(f"unsupported campaign phase: {config['phase']}")
print("CAMPAIGN_CONFIG " + json.dumps(config, sort_keys=True), flush=True)
print("RUNTIME_START " + json.dumps({
"git_sha": git_sha(),
"cpu_allocation": cpu_allocation(),
"estimated_required_cores": config["compute"]["estimated_required_cores"],
"selected_backend": config["compute"]["backend"],
"selected_flavor": config["compute"]["flavor"],
}, sort_keys=True), flush=True)
with threadpool_limits(limits=config["compute"]["estimated_required_cores"]):
cumulative = verify_cumulative()
if config["phase"] == "baseline":
result = cumulative
elif config["phase"] == "claim4_released_audit":
result = verify_claim4_audit()
result["cumulative_claims_1_to_3"] = cumulative
elif config["phase"] == "claim4_finalize":
result = verify_claim4_final()
result["claim4_released_audit"] = verify_claim4_audit()
result["cumulative_claims_1_to_3"] = cumulative
elif config["phase"] == "claim5_finalize":
result = verify_claim5_final()
result["claim5_public_audit"] = verify_claim5_audit()
result["claim4_final"] = verify_claim4_final()
result["cumulative_claims_1_to_3"] = cumulative
else:
result = run_claim4_checkpoint(config)
result["claim4_released_audit"] = verify_claim4_audit()
result["cumulative_claims_1_to_3"] = cumulative
elapsed = time.monotonic() - started
final = {
"status": result["status"],
"phase": config["phase"],
"git_sha": git_sha(),
"runtime_seconds": elapsed,
"cpu_allocation": cpu_allocation(),
"evidence": result,
}
print("CAMPAIGN_RESULT " + json.dumps(final, sort_keys=True), flush=True)
if result["status"] != "PASS":
raise SystemExit(1)
if __name__ == "__main__":
main()
|