repro-polyilr-aitchison-simplex / validate_evidence.py
ProCreations's picture
Publish validated PolyILR reproduction logbook
db39dbc verified
Raw
History Blame Contribute Delete
7.28 kB
#!/usr/bin/env python3
"""Fail-closed semantic-v4 validation for the six-claim PolyILR package."""
from __future__ import annotations
import csv
import hashlib
import json
import os
import subprocess
import sys
import tempfile
from pathlib import Path
ROOT = Path(__file__).resolve().parent
PAPER = "pws8t4kBP4"
SOURCE_HASHES = {
"2606.11646v1.pdf": "96005baa7970c1362253f3feea3b1d1875119a393323d595755bf62a7e7688a4",
"2606.11646v1.tar": "d9f632e55c8b7d87805eec6d458b6e5d13b7bad4371e3d89c5f69c07a6c7b306",
}
HMP_HASH = "162c089e05a3df6a5dc9c0bf3675c5f07a1a9449cbe22b060217d6099519b1e0"
OUTPUT_NAMES = {
"composition_isometry.csv",
"hmp_destructive_control.csv",
"hmp_native_rf_folds.csv",
"hmp_tree_importance.csv",
"logit_quotient.csv",
"results.json",
"source_table_audit.json",
"tree_certificates.csv",
}
def load(relative: str):
return json.loads((ROOT / relative).read_text(encoding="utf-8"))
def sha256(path: Path) -> str:
digest = hashlib.sha256()
with path.open("rb") as handle:
for chunk in iter(lambda: handle.read(1 << 20), b""):
digest.update(chunk)
return digest.hexdigest()
def csv_rows(relative: str) -> list[dict[str, str]]:
with (ROOT / relative).open(newline="", encoding="utf-8") as handle:
return list(csv.DictReader(handle))
claims = load("official_claims.json")
assert claims == load("CLAIMS.json")
assert len(claims) == 6 and len(set(claims)) == 6
matrix = load("EVIDENCE_MATRIX.json")
assert matrix["paper_id"] == PAPER
gate = matrix["release_quality_gate"]
assert gate["semantic_quality_gate_version"] == 4
assert gate["status"] == "pass_all_6_direct"
assert gate["expected_verified_points"] == 12
assert gate["supported_by_independent_evidence"] == 6
assert gate["proxy_support_counted"] is False
assert gate["formula_only_support_counted"] is False
assert gate["paired_replay"] == "byte-identical"
assert [row["literal_claim"] for row in matrix["claims"]] == claims
assert [row["claim"] for row in matrix["claims"]] == list(range(1, 7))
for row in matrix["claims"]:
assert row["assessment"] == "verified"
assert row["expected_points"] == 2
assert row["direct_evidence"] is True
assert row["registered_system_executed"] is True
assert row["paper_or_released_scale"] is True
assert row["actual_model_or_dataset_used"] is True
assert row["destructive_control_executed"] is True
assert row["claim_object_match"] == "exact"
assert row["executed_outputs"] and row["oracle_artifacts"] and row["control_artifacts"]
for relative in row["executed_outputs"] + row["oracle_artifacts"] + row["control_artifacts"]:
assert (ROOT / relative).is_file(), relative
for filename, digest in SOURCE_HASHES.items():
assert sha256(ROOT / "source" / filename) == digest
assert sha256(ROOT / "source/data/hmp_v35_polyilr_aggregate.npz") == HMP_HASH
metadata = load("source/data/hmp_v35_polyilr_metadata.json")
assert metadata["output_sha256"] == HMP_HASH
assert metadata["archive_sha256"] == "9c5eab65cebc22c005189517e05190c44cb144c9eb73cc11916018df624f33b4"
assert (metadata["sample_count"], metadata["taxon_count"], metadata["subsite_count"]) == (4743, 402, 18)
assert sum(metadata["site_counts"].values()) == 4743 and len(metadata["site_counts"]) == 5
for directory in ("outputs", "replay_a", "replay_b", "packaged_replay"):
present = {path.name for path in (ROOT / directory).iterdir() if path.is_file()}
assert present == OUTPUT_NAMES, (directory, present ^ OUTPUT_NAMES)
for name in OUTPUT_NAMES:
canonical = (ROOT / "outputs" / name).read_bytes()
assert canonical == (ROOT / "replay_a" / name).read_bytes()
assert canonical == (ROOT / "replay_b" / name).read_bytes()
assert canonical == (ROOT / "packaged_replay" / name).read_bytes()
results = load("outputs/results.json")
assert results["paper_id"] == PAPER
assert results["summary"] == {"all_passed": True, "passed": 34, "total": 34}
assert all(item["passed"] for item in results["gates"])
gates = {item["name"]: item["detail"] for item in results["gates"]}
assert gates["hmp::exact_paper_scale_4743_by_402"]["shape"] == [4743, 402]
assert gates["hmp::taxonomy_basis_402_by_401"]["basis_shape"] == [402, 401]
assert gates["hmp::actual_data_isometry_64_pairs"]["max_reconstruction_error"] < 2e-12
assert gates["hmp::actual_data_isometry_64_pairs"]["max_distance_error"] < 2e-12
assert gates["hmp::native_rf_and_independent_centroid_five_fold"]["mean_rf_accuracy"] > 0.96
assert gates["hmp::native_rf_and_independent_centroid_five_fold"]["mean_rf_balanced_accuracy"] > 0.90
assert gates["hmp::native_rf_and_independent_centroid_five_fold"]["mean_centroid_accuracy"] > 0.89
assert gates["hmp::polyilr_top10_stability"]["mean_pairwise_jaccard"] > 0.53
assert gates["control::hmp_label_shuffle_destroys_signal"]["shuffled_balanced_accuracy"] < 0.21
folds = csv_rows("outputs/hmp_native_rf_folds.csv")
controls = csv_rows("outputs/hmp_destructive_control.csv")
assert len(folds) == len(controls) == 5
assert all(float(row["rf_accuracy"]) > 0.95 for row in folds)
assert all(abs(float(row["tree_importance_sum"]) - 1.0) < 1e-12 for row in folds)
assert all(float(row["actual_balanced_accuracy"]) - float(row["shuffled_label_balanced_accuracy"]) > 0.54 for row in controls)
assert len(csv_rows("outputs/tree_certificates.csv")) == 6
assert len(csv_rows("outputs/composition_isometry.csv")) == 24
assert len(csv_rows("outputs/logit_quotient.csv")) == 12
scorecard = (ROOT / "pages/00-judge-evidence-scorecard/page.md").read_text(encoding="utf-8")
for number, claim in enumerate(claims, 1):
assert claim in scorecard
assert claim in (ROOT / f"pages/claim-{number}/page.md").read_text(encoding="utf-8")
assert (ROOT / f"pages/claim-{number}").is_dir()
assert "icml2026-repro" in (ROOT / "README.md").read_text(encoding="utf-8")
assert load("logbook.json")["tags"] == ["icml2026-repro", "paper-pws8t4kBP4"]
final = load("final_assessment.json")
assert final["all_34_scientific_gates_pass"] is True
assert final["expected_points"] == 12
assert final["claim_assessments"] == ["verified"] * 6
assert final["hmp_actual_samples"] == 4743 and final["hmp_actual_taxa"] == 402
assert final["packaged_replay_byte_identical"] is True and final["runs_byte_identical"] is True
with tempfile.TemporaryDirectory(prefix="polyilr-validation-") as directory:
fresh = Path(directory) / "fresh"
env = dict(os.environ)
env.update(PYTHONDONTWRITEBYTECODE="1", PYTHONHASHSEED="0", PYTHONWARNINGS="error")
subprocess.run(
[sys.executable, "-W", "error", str(ROOT / "reproduce.py"), "--out", str(fresh)],
cwd=ROOT,
env=env,
check=True,
stdout=subprocess.DEVNULL,
timeout=300,
)
assert {path.name for path in fresh.iterdir()} == OUTPUT_NAMES
for path in fresh.iterdir():
assert path.read_bytes() == (ROOT / "outputs" / path.name).read_bytes(), path.name
if (ROOT / "BUNDLE_SHA256SUMS.txt").is_file():
subprocess.run([sys.executable, str(ROOT / "verify_manifest.py")], cwd=ROOT, check=True, stdout=subprocess.DEVNULL)
print("evidence validated: six literal PolyILR claims, 34/34 gates, native 4743x402 HMP execution, destructive controls, and byte-identical replay")