A' on the paper's own protocol (published roots, server): APS 2438, CHA 2005 (4443) vs Chandrupatla 2787/2441 (5228); per problem 103/20/30 and 29/4/7; earned-budget variant 3608/2807; guarantee held under every safeguard. Leave-one-out ablation of A' on all six corpora: regime +5336, point +3115, sub +959, close +473, half +376, exp +338, G2 +89 (2/6 corpora), contra +28 (3/6) - every component positive in sum, G2 and contra marginal.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
vvs
2026-09-21 20:37:09 +01:00
co-authored by Claude Opus 5
parent 2c458c51dc
commit 92fb8c5c04
5 changed files with 112 additions and 3 deletions
+64
View File
@@ -0,0 +1,64 @@
"""Leave-one-out ablation of A' on all six corpora (APS, CHA, new corpus 1, Roots.jl, applied
+ GSL, fourth corpus), uniform success criterion (a sign change within 1e-6), for the paper's
label-honesty table. Descriptive: every corpus has been seen by now.
python -u sweep_ablation_all.py run -> sweep_ablation_all.json, then the table
python -u sweep_ablation_all.py --report
"""
from __future__ import annotations
import json
import sys
from multiprocessing import Pool
from sweep_fourth import corpus, evaluate as _eval_one
import sweep_fourth
from sweep_full import APRIME_ABLATIONS
SETS = ("APS", "CHA", "NEW", "RJL", "APP", "D")
def spec(pre, ext):
return ("pure", "ratio", "derived3", "project", "x", pre, "recent", "distance", "none", ext)
for _name, (_pre, _ext) in APRIME_ABLATIONS.items():
sweep_fourth.CONFIGS[f"abl{_name}"] = spec(_pre, _ext)
def evaluate(job):
name, which = job
return name, which, _eval_one((name, which))[1]
def cost(v):
return v[0] if v[1] else 200
def main():
names = [f"abl{n}" for n in APRIME_ABLATIONS]
if "--report" not in sys.argv:
jobs = [(n, w) for n in names for w in ("seen", "fourth")]
with Pool(min(12, len(jobs))) as pool:
out = pool.map(evaluate, jobs)
R = {}
for n, w, res in out:
R.setdefault(n, {}).update(res)
with open("sweep_ablation_all.json", "w", encoding="utf8") as fh:
json.dump(R, fh)
with open("sweep_ablation_all.json", encoding="utf8") as fh:
R = json.load(fh)
tot = {n: {s: sum(cost(v) for v in R[n][s].values()) for s in SETS} for n in R}
base = tot["ablA'"]
print("A' totals: " + " ".join(f"{s} {base[s]}" for s in SETS))
print("delta = (without) - (with); + = the component earns its place")
for n in names[1:]:
d = {s: tot[n][s] - base[s] for s in SETS}
earned = [s for s in SETS if d[s] > 0]
print(f" {n[3:]:<8} " + " ".join(f"{s} {d[s]:+5d}" for s in SETS)
+ f" sum {sum(d.values()):+6d} earned on {len(earned)}/6")
print("ablation done")
if __name__ == "__main__":
main()