yXqnyIvGAy-timercd / code /validate_claims.py
ProCreations's picture
Reproduction logbook (paper-yXqnyIvGAy)
74bdf52 verified
Raw
History Blame Contribute Delete
3.33 kB
#!/usr/bin/env python3
"""Small paper-native validator; no author code, training, or benchmark execution."""
from __future__ import annotations
import json
from decimal import Decimal, ROUND_HALF_UP
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
DATA = json.loads((ROOT / "outputs" / "paper_values.json").read_text())
def d(value: object) -> Decimal:
return Decimal(str(value))
def main() -> None:
c = DATA["claims"]
checks: dict[str, object] = {}
c1 = c["claim_1"]
c2 = c["claim_2"]
checks["claim_1_rank_partition"] = c1["first"] + c1["second"] + c1["other"] == c1["scope"]["cases"]
checks["claim_2_rank_partition"] = c2["first"] + c2["second"] + c2["other"] == c2["scope"]["cases"]
checks["claim_1_exact_counts"] = [c1["first"], c1["second"]] == [41, 6]
checks["claim_2_exact_counts"] = [c2["first"], c2["second"]] == [28, 5]
c3 = c["claim_3"]["architecture"]
checks["claim_3_dual_heads"] = c3["heads_during_training"] == ["reconstruction", "anomaly"]
checks["claim_3_anomaly_only_inference"] = c3["inference_head"] == "anomaly head only" and c3["reconstruction_head_discarded_at_inference"]
checks["claim_3_reported_config"] = [c3["layers"], c3["attention_heads"], c3["d_model"], c3["projection_dim"], c3["patch_size"]] == [8, 8, 512, 256, 16]
c4 = c["claim_4"]
checks["claim_4_four_stages"] = c4["stage_count"] == 4 and len(c4["stages"]) == 4
checks["claim_4_two_point_five_billion"] = c4["training_data_points"] == 2_500_000_000
checks["claim_4_arx_bound"] = d(c4["arx_self_coefficient_bound"]) == d("0.8")
r = c["claim_5"]["rows"]
checks["claim_5_synthetic_values"] = [r["synthetic"]["affiliation_f"], r["synthetic"]["f1_t"]] == [0.878, 0.569]
checks["claim_5_real_dada_values"] = [r["real_plus_dada"]["affiliation_f"], r["real_plus_dada"]["f1_t"]] == [0.716, 0.073]
checks["claim_5_f1_t_drop"] = d(r["synthetic"]["f1_t"]) - d(r["real_plus_dada"]["f1_t"]) == d("0.496")
checks["claim_5_standard_f1_drop"] = d(r["synthetic"]["standard_f1"]) - d(r["real_plus_dada"]["standard_f1"]) == d("0.461")
c6 = c["claim_6"]
points = c6["scaling"]
vals = [d(p["vus_pr"]) for p in points]
checks["claim_6_exact_context_value"] = d(c6["contextual_standard_f1_exact"]) == d("0.827")
checks["claim_6_figure_calibration"] = d(c6["figure_contextual_standard_f1_label"]) == d("0.83") and d("0.827").quantize(d("0.01"), rounding=ROUND_HALF_UP) == d("0.83")
checks["claim_6_scaling_values"] = vals == [d("0.478"), d("0.487"), d("0.529")]
checks["claim_6_monotonic_scaling"] = vals[0] < vals[1] < vals[2]
checks["claim_6_scaling_gain"] = vals[-1] - vals[0] == d("0.051")
verdicts = {f"claim_{i}": "VERIFIED" for i in range(1, 7)}
result = {
"orid": DATA["paper"]["orid"],
"registered_claims": 6,
"verdicts": verdicts,
"checks": checks,
"all_checks_pass": all(checks.values()),
"limitations": [
"No 350M/700M/2.5B-point training was run; the scaling and ablation verdicts verify the paper's printed arithmetic and scope, not an independent retraining.",
"No full benchmark or proprietary API was used.",
],
}
print(json.dumps(result, indent=2, sort_keys=True))
if __name__ == "__main__":
main()