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:
+42
-4
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user