7.0 KiB
PREREG — гейт на УСТОЙЧИВОСТИ НАКЛОНА (форма, а не прогресс)
Составлено до реализации. Основание — два измерения этой линии:
FINDINGS_prestep_gate.md: гейт по прогрессу скобки обваливает ремонты (77.5 % → 15.9 %) и впервые берёт цель ITP на CHA (2851 ≤ 2857), но APS дорожает 2806 → 4449, потому что прогресс скобки — неверная валюта отказа: секущий шаг обрушивает ошибку, почти не двигая скобку (в проекте это уже измерено: 150 против 86).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 локально; свип на сервере с замороженной копией; числа немедленно.