Valeri's second point measured: the similarity function belongs to the PLACE it is read in, not to the method. False position's three-century stall is a similarity read at order one on an approach of order m: with sigma = |f(far)| the residual ratio is (e/E)^m, so raising it to the measured 1/m recovers the distance ratio exactly. Paired inside each cell, the correction is cheaper in 7 of 7 safeguards for S = 1/(1+z) - the one function that makes that place exact inverse interpolation - and in only 29 of 60 cells over all nine functions, i.e. a coin. It does NOT beat Chandrupatla (2884 against 2683 and 2423), it HARMS the slope reading (2806 -> 2854), and it does not cure false position: 127/154 and 10676 become 128/154 and 10043, where Illinois buys 153/154 and 7045 with one constant. Estimator bias measured and stated: a pure cube reads 2.830, not 3

Also fixes a real regression from cc2c499: the derived3_cap branch was inserted in front of the derived3_m note and swallowed its division, so derived3_m silently became derived3 (2806 against 2806) and a refutation recorded in the paper stopped being reproducible. The full pin caught it; a cheap pin now guards it too. And \label{sec:method} never existed while the table on page 7 referenced it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
vvs
2026-09-21 01:17:25 +01:00
co-authored by Claude Opus 5
parent cc2c499f63
commit 15b94242e0
13 changed files with 756 additions and 11 deletions
+42 -4
View File
@@ -113,11 +113,12 @@ def make_method(spec):
prestep = spec[5] if len(spec) > 5 else "none"
points = spec[6] if len(spec) > 6 else "recent"
direction = spec[7] if len(spec) > 7 else "distance"
exponent = spec[8] if len(spec) > 8 else "none"
def m(f, a, b, xtol, maxfev):
return pure_root(f, a, b, xtol, maxfev, similarity=sim,
scale=scale, guard=guard, space=space, prestep=prestep,
points=points, direction=direction)
points=points, direction=direction, exponent=exponent)
return m
@@ -131,6 +132,11 @@ def label(spec):
tag = f"{tag}+shape"
if len(spec) > 7 and spec[7] != "distance":
tag = f"{tag}+dissim"
if len(spec) > 8 and spec[8] != "none":
# the exponent must be visible in the label: (far, none) is false position and
# (far, order) is the hypothesis, and a results file that cannot tell them apart
# is worthless
tag = f"{tag}+ord"
if len(spec) > 5 and spec[5] != "none":
# name the gate by WHICH gate it is: "progress" is a measured negative and must
# never be confused with "slope" in a results file
@@ -198,6 +204,35 @@ def build_grid_log(smoke):
for sim in sims for sc in ("derived", "derived3") for gu in guards]
def _preflight_order_mode():
"""Fail LOUDLY if the per-place reading is not actually deployed.
Same lesson as _preflight_log_mode: `evaluate` swallows every exception and charges
MAXFEV, so a stale simroot/pure.py on the server reports a sweep of zeros instead of
an error. Checks BOTH new things — the far scale and the order exponent."""
for sc, ex in (("far", "none"), ("far", "order"), ("derived3", "order")):
x, _n, ok = pure_root(lambda t: t - 1.0, 0.0, 3.0, 1e-10, 100,
similarity="rational", scale=sc, guard="credit",
exponent=ex)
if not (ok and abs(x - 1.0) < 1e-8):
raise SystemExit(f"order-mode preflight FAILED for scale={sc} exponent={ex}: "
"refusing to run a sweep that would report zeros")
def build_grid_order(smoke):
"""Slot 1 of PREREG 2026-09-21: the similarity function read BY PLACE.
The exponent is the only thing that moves inside each (similarity, scale, guard)
triple, so (far, none) — which is false position exactly, Proposition 4 — is the
control for (far, order). Baselines are not recomputed; they are in sweep_full.json."""
_preflight_order_mode()
sims = ["rational", "ratio"] if smoke else sorted(PURE_SIMS)
guards = ("credit", "safe") if smoke else GUARD_MODES
return [("pure", sim, sc, gu, "x", "none", "recent", "distance", ex)
for sim in sims for sc in ("far", "derived3")
for ex in ("none", "order") for gu in guards]
def build_grid_cap(smoke):
"""Scale as a SELECTION between the two computed ones (PREREG 2026-09-21): identical to
the slope+dissimilar configuration except scale = derived3_cap, so one thing changes."""
@@ -274,10 +309,12 @@ def main():
gatemode = "--gate" in sys.argv # the pre-step gate grid, likewise
slopemode = "--slope" in sys.argv # the slope-stability gate grid
capmode = "--cap" in sys.argv # scale selected between the two computed ones
ordermode = "--order" in sys.argv # slot 1: the similarity read BY PLACE
combomode = "--combo" in sys.argv # modes A and B together
pointsmode = "--points" in sys.argv # mode A: triple by shape
dirmode = "--direction" in sys.argv # mode B: far end by dissimilarity
specs = (build_grid_cap(smoke) if capmode else
specs = (build_grid_order(smoke) if ordermode else
build_grid_cap(smoke) if capmode else
build_grid_combo(smoke) if combomode else
build_grid_points(smoke) if pointsmode else
build_grid_direction(smoke) if dirmode else
@@ -299,8 +336,9 @@ def main():
# the published sweep_full.json is what verify_article.py checks the paper
# against, so the log grid never writes into it
if capmode or combomode or pointsmode or dirmode:
base = ("sweep_cap" if capmode else
if ordermode or capmode or combomode or pointsmode or dirmode:
base = ("sweep_order" if ordermode else
"sweep_cap" if capmode else
"sweep_combo" if combomode else
"sweep_points" if pointsmode else "sweep_direction")
out = f"{base}_smoke.json" if smoke else f"{base}.json"