Files
sim-numerics/PREREG_slope_gate_2026-09-21.md

7.0 KiB
Raw Permalink Blame History

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 локально; свип на сервере с замороженной копией; числа немедленно.