slope-stability gate: the PROJECT'S OWN target is met for the first time — 5922 < 6026 over both sets at 193/199 with the guarantee intact (slope.ratio.derived3.project: APS 2848 + CHA 3074), CHA improves 4516 -> 2903 (x1.56), repairs 77.5% -> 55.3%. Honest cost: APS 2806 -> 2848, which moves us from 1st to 3rd on the canonical set (chandrupatla 2785, toms748 2820), so my stricter S1 fails while the project target passes — a positioning decision, recorded not resolved. Refusal CURRENCY is what decides: bracket progress 4449 vs model shape 2848, a 1601-evaluation difference for the same 'refuse before the step' idea

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
vvs
2026-09-20 23:27:43 +01:00
co-authored by Claude Opus 5
parent a6116cd027
commit e4769be9a3
10 changed files with 345 additions and 6 deletions
+71
View File
@@ -0,0 +1,71 @@
# PREREG — гейт на УСТОЙЧИВОСТИ НАКЛОНА (форма, а не прогресс)
Составлено до реализации. Основание — два измерения этой линии:
1. `FINDINGS_prestep_gate.md`: гейт по **прогрессу скобки** обваливает ремонты (77.5 % → 15.9 %) и
впервые берёт цель ITP на CHA (**2851 ≤ 2857**), но APS дорожает 2806 → **4449**, потому что
прогресс скобки — **неверная валюта отказа**: секущий шаг обрушивает ошибку, почти не двигая
скобку (в проекте это уже измерено: **150 против 86**).
2. `FINDINGS_logarithmic.md` §3: Chandrupatla отказывает не по прогрессу, а по **форме конфигурации**
(`ξ`, `φ` — безразмерные отношения; полоса есть окрестность линейного случая), и его отказ стоит
**ноль** вызовов.
**Гипотеза:** нужный признак отказа — не «сколько обещает шаг», а «установилась ли модель, которой
шаг доверяет». Наш шаг доверяет **локальному наклону**, значит вопрос доверия — **устойчивость
наклона**.
---
## 1. Признак, выведенный для НАШЕГО шага (и без единой константы)
Метод оценивает наклон на каждом шаге (`derived` — по двум последним точкам, `derived3` — по трём).
Две последовательные оценки `slope_prev` и `slope` дают безразмерное сравнение. Объявленный признак
отказа — **несогласие знака**:
> если `slope_prev` и `slope` оба не нули и **их знаки различны**, локальная модель не установилась
> (функция локально даже не монотонна в одном направлении) ⇒ шаг заменяется делением пополам.
Почему это беспараметрично: сравнивается **знак**, а не величина; порога нет, множителя нет,
сравнения с выбранным числом нет. Почему это форма, а не прогресс: признак читается из конфигурации
данных (две оценки наклона), а не из обещанной длины шага.
**Почему ожидается инертность на каноническом наборе** (то, чего не хватило прошлой попытке): у
простого корня гладкой функции знак наклона устойчив, значит гейт молчит и APS не дорожает. Срабатывать
он должен в плоских областях широких скобок, где оценки наклона мелкие и болтаются.
**Чего НЕ делаем:** не вводим порог на отношение величин наклонов (`|s1|/|s2| < k` — это константа
`k`); не переносим полосу `1−√(1−ξ) < φ < √ξ` (выведена для обратной квадратичной интерполяции).
**Режим:** `prestep="slope"`; `"none"` остаётся по умолчанию и побитово прежним; `"progress"` остаётся
в коде как **измеренный отрицательный результат**, помеченный в докстринге.
## 2. Предсказания и фальсификаторы
| # | Предсказание | ФАЛЬСИФИКАТОР → вывод |
|---|---|---|
| **S1** | APS-154 **не дорожает**: по-наборный лучший ≤ **2806** | >2806 → шестая попытка тем же трейдом; признак «форма» тоже не спасает, линия закрывается |
| **S2** | CHA-45 дешевеет против x-пространства: по-наборный лучший < **4516** | не дешевеет → гейт инертен всюду, гипотеза о наклоне неверна |
| **S3** | доля ремонтов сторожем падает против 77.5 % | не падает → гейт не бьёт в механизм |
| **S4** | гарантия `2⌈log₂(w/xtol)⌉+3` цела: `over2x = 0` | нарушена → закрытие немедленно |
| **S5** | качество пробы на CHA растёт против 1.422 | не растёт → отказ не улучшает пробу, только переставляет расходы |
**Правило остановки:** S1 или S4 ложны ⇒ режим не принимается. S1 верна и S2 верна ⇒ **это первый
режим линии, который берёт широкие скобки, не продавая узкие**, и тогда следующий шаг — свип по всей
сетке и проверка, попадает ли лучшая конфигурация в цель <6026 на двух наборах.
## 3. Протокол и гейты реализации
Протокол статьи: 154 APS + 45 CHA, цена — вызовы `f`, провал = полный бюджет, граница `2×` на каждом
решённом прогоне, конфигурация фиксируется выводом до рейтинга, числа только с **Linux**, свип пишется
в свой `sweep_slope.json`.
| # | Условие реализации | Проверка тестом |
|---|---|---|
| **T1** | `prestep="none"` побитово как раньше | равенство кортежей возврата на наборе задач и сторожей |
| **T2** | в гейте нет ни одной константы | греп по коду гейта (без комментариев): допустимы только `0.0` и `0.5` |
| **T3** | гейт инертен там, где знак наклона устойчив | на гладкой монотонной задаче число вызовов совпадает с `prestep="none"` |
| **T4** | гейт срабатывает там, где знак наклона меняется | на задаче с немонотонностью `stats['pre_refused'] ≥ 1` |
| **T5** | отказ не добавляет вызова | `pre_refused ≤ nfev − 2` |
**Дисциплина:** аудит после правки и до запуска; смоук ×2 локально; свип на сервере с замороженной
копией; числа немедленно.