pre-step gate MEASURED: repairs 77.5% -> 15.9%, CHA hits the ITP target for the first time (2851 <= 2857), two sets 7440 (best of the line) — but APS grows 2806 -> 4449, so by the pre-registered stop rule the mode is NOT accepted. Cause named: my gate refuses on BRACKET PROGRESS, and this project had already measured that currency to be wrong (a secant step collapses the error while barely moving the bracket: 150 vs 86). Chandrupatla refuses on the SHAPE of the configuration. Next candidate derived, not borrowed: slope-stability gate

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
vvs
2026-09-20 23:15:48 +01:00
co-authored by Claude Opus 5
parent 0617243ed4
commit a6116cd027
4 changed files with 141 additions and 3 deletions
+58
View File
@@ -0,0 +1,58 @@
# Findings — предшаговый гейт (пред-регистрация `PREREG_prestep_gate_2026-09-21.md`)
Числа только с Linux. Свип гейта — в своём `sweep_gate.json`; опубликованный `sweep_full.json` не
тронут (проверено git-статусом; один раз смоук всё же записался в `sweep_smoke.json`, файл восстановлен
из истории — ровно для этого git и заводился).
## 1. Результат: механизм подтверждён, режим НЕ принимается
Та же конфигурация `ratio.derived3.credit` на 45 задачах CHA, инструмент `explain_chandrupatla.py --gate`:
| предсказание | цель | измерено | вердикт |
|---|---|---|---|
| **P1** доля ремонтов сторожем | ≤40 % | **15.9 %** (было **77.5 %**) | 🟢 PASS |
| **P2** цена на CHA падает | <2073 | **2000** | 🟢 PASS |
| **P3** цена на APS-154 не растёт | ≤2806 | **4449** | 🔴 **FAIL** (×1.58) |
| **P4** гарантия `2⌈log₂(w/xtol)⌉+3` | `over2x=0` | 0 во всех конфигурациях | 🟢 PASS |
| **P5** качество пробы | ≥2.0 половинок/вызов | **1.633** (было 1.422; Chandrupatla 2.310) | 🔴 FAIL |
| цель ITP на CHA (из линии логарифма) | ≤2857 | **2851** (`gate.ratio_soft.derived.safe`) | 🟢 **PASS, впервые за линию** |
Два набора вместе: **7440** против 12 312 у x-пространства и 10 414 у логарифмического — лучшее
значение линии, но всё ещё выше цели <6026.
**По правилу остановки (P3 ложна) режим не принимается как рабочий.** Диагноз §3
`FINDINGS_logarithmic.md` при этом подтверждён: ремонты были главным расходом, и убрать их можно —
77.5 % → 15.9 %, CHA 4516 → 2851.
## 2. 🔴 Почему он платит на каноническом наборе — и это проект уже знал
Мой гейт сравнивает **прогресс по скобке**: «обещает ли шаг снять не меньше, чем деление пополам».
В докстринге `simroot/pure.py` про сторожа `"bracket"` записано измерение, сделанное до меня:
> секущий шаг обычно обрушивает ошибку, почти не двигая доказанную скобку, поэтому сторож срабатывает
> на шагах, которые на самом деле были отличными — **150 против 86** вызовов.
Я воспроизвёл ровно эту ошибку в форме гейта: **прогресс по скобке — неверная валюта отказа**, потому
что на хорошо обусловленных задачах отличный шаг по скобке почти не двигается. Отсюда рост APS в 1.58
раза, и отсюда же качество пробы 1.633 вместо 2.310: мы стали отказываться часто, но не там, где надо.
**Гейт Чандрупатлы отказывает по ДРУГОМУ признаку** — не по обещанному прогрессу, а по **форме
конфигурации** (`ξ`, `φ` — два безразмерных отношения; полоса есть окрестность линейного случая), то
есть по вопросу «достоверна ли модель здесь». Перевод §3 был верен как объяснение; реализован был не
тот гейт.
## 3. Что следует пред-регистрировать дальше (если линию продолжать)
**Гейт на ФОРМЕ, а не на прогрессе, и выведенный для НАШЕГО шага, а не взятый напрокат.** Наш шаг
доверяет локальному наклону, значит вопрос доверия — устойчивость наклона: сравнить две последние его
оценки, что даёт безразмерное отношение (похожесть последовательных оценок), и отказываться в пополам
только когда оно говорит «наклон не установился». Это беспараметрично, это чтение отношений, и оно не
наследует ни одной константы из вывода для обратной квадратичной интерполяции.
Цели остаются прежними: APS ≤ 2806 (не расти), CHA ≤ 2857 (достигнуто гейтом прогресса — значит
планка реальна), гарантия `over2x = 0`, и качество пробы ≥2.0.
🔴 **Не повторять:** гейт по прогрессу скобки (эта запись), логарифмическая замена переменной
(`FINDINGS_logarithmic.md` §2), переключение на `cbrt` по набору и три детектора режима
(`NEXT_PAPER_logarithmic.md`). Шесть попыток, один и тот же трейд: широкие скобки покупаются ценой
узких — пока не изменён **признак отказа**, а не шкала шага.
+6 -3
View File
@@ -97,8 +97,9 @@ def chandrupatla_traced(f, a, b, xtol, maxfev):
return float("nan"), g.n, False, trace
def main():
def main(prestep="none"):
probs = [p for p in load_problems() if p[0] == "CHA"]
print(f"ours: prestep={prestep!r}")
print(f"CHA problems: {len(probs)} metric: halvings per evaluation "
f"= log2(w0/xtol)/nfev (bisection = 1.0)\n")
print(f"{'problem':<16} {'CH nfev':>8} {'CH h/ev':>8} {'gate ok%':>9} "
@@ -119,7 +120,8 @@ def main():
stats = {}
x_o, n_o, ok_o = pure_root(f, a, b, XTOL, MAXFEV, similarity="ratio",
scale="derived3", guard="credit", stats=stats)
scale="derived3", guard="credit", stats=stats,
prestep=prestep)
forced = 100.0 * stats.get("forced", 0) / max(n_o, 1)
ch_h = decades / n_ref if n_ref else float("nan")
@@ -146,4 +148,5 @@ def main():
if __name__ == "__main__":
main()
import sys
main("progress" if "--gate" in sys.argv else "none")
+76
View File
@@ -0,0 +1,76 @@
sweep: 126 configurations x 199 problems (FULL)
10/126 done, 0s elapsed
20/126 done, 1s elapsed
30/126 done, 1s elapsed
40/126 done, 1s elapsed
50/126 done, 1s elapsed
60/126 done, 1s elapsed
70/126 done, 1s elapsed
80/126 done, 1s elapsed
90/126 done, 2s elapsed
100/126 done, 2s elapsed
110/126 done, 2s elapsed
120/126 done, 2s elapsed
126/126 done, 2s elapsed
wrote sweep_gate.json (2s total)
====================================================================================
APS: 154 problems (top 20 of 126)
====================================================================================
configuration solved total fev over 2x
------------------------------------------------------------------------------------
gate.ratio.derived.bracket 153/154 4265 0
gate.ratio.derived.both 153/154 4268 0
gate.ratio.derived.none 153/154 4449 0
gate.ratio.derived.project 153/154 4449 0
gate.ratio.derived.safe 153/154 4454 0
gate.ratio.derived.step 153/154 4454 0
gate.ratio.derived.credit 153/154 4917 0
gate.ratio.derived3.credit 153/154 6272 0
gate.ratio_soft.derived3.step 153/154 6441 0
gate.ratio_soft.derived3.safe 153/154 6441 0
gate.ratio_soft.derived3.both 153/154 6452 0
gate.ratio_soft.derived3.none 153/154 6456 0
gate.ratio_soft.derived3.project 153/154 6456 0
gate.ratio_soft.derived3.credit 153/154 6499 0
gate.ratio_soft.derived.step 153/154 6500 0
gate.ratio_soft.derived.safe 153/154 6500 0
gate.ratio_soft.derived3.bracket 153/154 6509 0
gate.ratio_soft.derived.none 153/154 6538 0
gate.ratio_soft.derived.project 153/154 6538 0
gate.ratio_soft.derived.bracket 153/154 6587 0
====================================================================================
CHA: 45 problems (top 20 of 126)
====================================================================================
configuration solved total fev over 2x
------------------------------------------------------------------------------------
gate.ratio_soft.derived.step 40/45 2851 0
gate.ratio_soft.derived.safe 40/45 2851 0
gate.ratio_soft.derived.bracket 40/45 2867 0
gate.ratio_soft.derived.both 40/45 2874 0
gate.ratio_soft.derived.none 40/45 2878 0
gate.ratio_soft.derived.project 40/45 2878 0
gate.ratio_soft.derived.credit 40/45 2880 0
gate.ratio_soft.derived3.none 40/45 2929 0
gate.ratio_soft.derived3.project 40/45 2929 0
gate.ratio.derived.credit 40/45 2936 0
gate.ratio_soft.derived3.step 40/45 2936 0
gate.ratio_soft.derived3.bracket 40/45 2936 0
gate.ratio_soft.derived3.safe 40/45 2936 0
gate.ratio_soft.derived3.credit 40/45 2947 0
gate.exp_abs.derived.step 40/45 2949 0
gate.exp_abs.derived.safe 40/45 2949 0
gate.exp_abs.derived.none 40/45 2951 0
gate.exp_abs.derived.project 40/45 2951 0
gate.ratio_soft.derived3.both 40/45 2952 0
gate.exp_abs.derived.bracket 40/45 2953 0
====================================================================================
THE STAGE-0C LAW ACROSS THE GRID
====================================================================================
scale=derived slope c=1 (linear) mean total 9439 mean solved 193.0/199
scale=derived slope c=0 (quadratic) mean total 10571 mean solved 193.0/199
scale=derived3 slope c=1 (linear) mean total 10922 mean solved 193.0/199
scale=derived3 slope c=0 (quadratic) mean total 10533 mean solved 193.0/199
+1
View File
File diff suppressed because one or more lines are too long