paper updated with the placement results and machine-checked: new section 'Where the similarity is read' (2527 on APS below every method measured, 5511 over both sets, the non-composition of the two readings, and the two negatives with their numbers), abstract extended, verify_article.py now also checks every new number against its own sweep file — all green, pdflatex clean

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
vvs
2026-09-20 23:52:13 +01:00
co-authored by Claude Opus 5
parent 22f19c57f0
commit ee816933eb
3 changed files with 216 additions and 0 deletions
+55
View File
@@ -11,6 +11,7 @@ end of a stated trade (better average, one constant), so both are checked.
from __future__ import annotations
import json
import os
import sys
from report_sweep import PROPOSED, head_to_head, place, rank
@@ -199,6 +200,8 @@ def main():
("start", 14540)]:
check(f"scale {sc} best", best_by_scale[sc], v)
verify_placement_modes()
print()
if FAILS:
print(f"{len(FAILS)} STATED NUMBERS DO NOT MATCH THE DATA:")
@@ -208,5 +211,57 @@ def main():
print("every number stated in the paper matches the sweep data.")
# --------------------------------------------------------------------------
# Section "where the similarity is read" (PREREGs of 2026-09-20/21). Each new
# grid lives in its OWN sweep file so the published sweep_full.json stays the
# artefact of the original claims; every number the new section quotes is
# re-checked here against that file.
# --------------------------------------------------------------------------
PLACEMENT = {
# file label APS CHA
"sweep_slope.json": ("slope.ratio.derived3.project", 2848, 3074),
"sweep_points.json": ("pure+shape+slope.ratio.derived3.safe", 2527, 3108),
"sweep_direction.json": ("pure+dissim+slope.ratio.derived3.project", 2726, 2785),
"sweep_combo.json": ("pure+shape+dissim+slope.ratio.derived3.safe", 2884, 2859),
"sweep_gate.json": ("gate.ratio.derived.project", 4449, 2991),
"sweep_log.json": ("log.ratio_soft.derived.safe", 6940, 3474),
}
PLACEMENT_PER_SET = {
"sweep_direction.json": ("CHA", "pure+dissim+slope.ratio.derived3.safe", 2683),
"sweep_gate.json": ("CHA", "gate.ratio_soft.derived.safe", 2851),
}
def verify_placement_modes():
print("\nThe placement modes (each in its own sweep file):")
for path, (lbl, aps, cha) in PLACEMENT.items():
if not os.path.exists(path):
print(f" !! {path} absent — the section quoting it cannot be verified")
FAILS.append(f"missing {path}")
continue
with open(path, encoding="utf8") as fh:
rows = json.load(fh)
try:
d = next(r for r in rows if r["label"] == lbl)
except StopIteration:
print(f" !! {lbl} not in {path} — stale sweep")
FAILS.append(f"{lbl} missing from {path}")
continue
check(f"{lbl} APS", d["APS"]["total"], aps)
check(f"{lbl} CHA", d["CHA"]["total"], cha)
check(f"{lbl} solved", d["APS"]["solved"] + d["CHA"]["solved"], 193)
check(f"{lbl} guarantee (over 2x)", d["APS"]["over"] + d["CHA"]["over"], 0)
for path, (setname, lbl, want) in PLACEMENT_PER_SET.items():
if not os.path.exists(path):
continue
with open(path, encoding="utf8") as fh:
rows = json.load(fh)
d = next((r for r in rows if r["label"] == lbl), None)
if d is None:
FAILS.append(f"{lbl} missing from {path}")
continue
check(f"{lbl} {setname} per-set", d[setname]["total"], want)
if __name__ == "__main__":
main()