LJdacnMXkr / evidence /code /verify_armadillo.py
DineshAI's picture
Publish cumulative Sinkhorn reproduction evidence
5338e3e verified
Raw
History Blame Contribute Delete
3.56 kB
"""Primary verifier for paper-scale Armadillo evidence."""
from __future__ import annotations
import json
import math
import sys
from pathlib import Path
EXPECTED_DATA_SHA256 = (
"8b9b56cc36e66d54429b1e1e75bd89e833645bfe0dc7c1afd1205877a7356a3f"
)
def verify(payload: dict) -> dict:
failures: list[str] = []
claim_status = {"1": True, "3": True, "4": True}
if payload["data_source"]["sha256"] != EXPECTED_DATA_SHA256:
failures.append("data hash")
claim_status = {key: False for key in claim_status}
if payload["mesh"]["vertex_count"] != 172974:
failures.append("mesh vertex count")
claim_status = {key: False for key in claim_status}
if payload["mesh"]["face_count"] != 345944:
failures.append("mesh face count")
claim_status = {key: False for key in claim_status}
if payload["sampling"]["count"] != 5000:
failures.append("sample count")
claim_status = {key: False for key in claim_status}
for record in payload["kernels"]:
label = record["kernel"]
if record["final_max_mass_residual"] > 2e-10:
failures.append(label + ": final residual")
claim_status["1"] = False
claim_status["4"] = False
if not 5 <= record["iterations_to_mean_error_below_1e-3"] <= 10:
failures.append(label + ": iteration gate")
claim_status["3"] = False
if not math.isfinite(record["minimum_log_operator_entry_lower_bound"]):
failures.append(label + ": positivity")
claim_status["1"] = False
claim_status["4"] = False
if record["top_eigenvalues"][-1] > 1.0 + 2e-9:
failures.append(label + ": damping")
claim_status["1"] = False
claim_status["4"] = False
if record["landmark_minimum_eigenvalue"] < -2e-11:
failures.append(label + ": PSD")
claim_status["1"] = False
claim_status["4"] = False
normalizations = {
item["normalization"]: item
for item in record["normalizations"]
}
if normalizations["sinkhorn"]["mass_max_error"] > 2e-10:
failures.append(label + ": Sinkhorn mass")
claim_status["1"] = False
claim_status["4"] = False
if (
normalizations["sinkhorn"]["self_adjoint_relative_error"]
> 2e-12
):
failures.append(label + ": Sinkhorn self-adjointness")
claim_status["1"] = False
claim_status["4"] = False
if normalizations["row"]["self_adjoint_relative_error"] < 1e-3:
failures.append(label + ": row negative control")
claim_status["4"] = False
if normalizations["symmetric"]["mass_max_error"] < 1e-3:
failures.append(label + ": symmetric negative control")
claim_status["4"] = False
return {
"verifier": "primary_armadillo",
"claim_status": claim_status,
"pass": not failures,
"failures": failures,
}
def main() -> int:
if len(sys.argv) != 3:
raise SystemExit("usage: verify_armadillo.py INPUT_JSON OUTPUT_JSON")
payload = json.loads(Path(sys.argv[1]).read_text(encoding="utf-8"))
result = verify(payload)
Path(sys.argv[2]).write_text(
json.dumps(result, indent=2) + "\n", encoding="utf-8"
)
print("ARMADILLO_PRIMARY_VERIFIER=" + json.dumps(result, sort_keys=True))
return 0 if result["pass"] else 1
if __name__ == "__main__":
raise SystemExit(main())