4MVVscCjYu / repro /src /check_claim5_route3.py
DineshAI's picture
Add claim-by-claim Adam-DA reproduction evidence
e0f5bb6 verified
Raw
History Blame Contribute Delete
2.23 kB
"""Independent result-only checker for the Claim 5 CPU calibration."""
from __future__ import annotations
import json
import sys
from pathlib import Path
def main(input_path: Path, output_path: Path) -> int:
payload = json.loads(input_path.read_text())
profiles = payload["profiles"]
settings = {
(row["architecture"], row["dataset_shape"], row["resolution"])
for row in profiles
}
settings_complete = settings == {
("CNN", "CIFAR-10", 32),
("CNN", "STL-10", 64),
("ResNet", "CIFAR-10", 32),
("ResNet", "STL-10", 64),
}
full_batch = all(row["batch_size"] == 64 for row in profiles)
control_faster = all(
row["forward_only_seconds"] < row["joint_wgan_gp_seconds"] for row in profiles
)
timings_positive = all(
row["joint_wgan_gp_seconds"] > 0.0
and all(value > 0.0 for value in row["parameter_gradient_l1"])
for row in profiles
)
allocation_audited = (
payload["cpu"]["selected_flavor"] == "cpu-upgrade"
and payload["cpu"]["actual_quota_cores"] > 1
)
honest_blocked = payload["not_claim_evidence"] and payload["verdict"] == "BLOCKED"
passed = (
settings_complete
and full_batch
and control_faster
and timings_positive
and allocation_audited
and honest_blocked
)
result = {
"checker": "result-only CPU feasibility checker",
"four_reported_shape_architecture_pairs_profiled": settings_complete,
"batch_size_64": full_batch,
"forward_only_control_is_faster": control_faster,
"training_and_gradient_measurements_positive": timings_positive,
"cpu_upgrade_allocation_audited": allocation_audited,
"profile_not_promoted_to_claim_evidence": honest_blocked,
"passed": passed,
}
output_path.write_text(json.dumps(result, indent=2) + "\n")
print("=== CLAIM 5 ROUTE 3 CHECKER ===")
print(json.dumps(result, indent=2))
return 0 if passed else 1
if __name__ == "__main__":
if len(sys.argv) != 3:
raise SystemExit("usage: check_claim5_route3.py INPUT.json OUTPUT.json")
raise SystemExit(main(Path(sys.argv[1]), Path(sys.argv[2])))