# PREREG — где удлинение уместно: Г1, Г2, Г3 Составлено до кода и до прогона. Валерий: «надо сравнить несколько предыдущих шагов и по этому сравнению сделать вывод, где удлинение уместно» → «а если сравнивать не только шаги, но и результаты на каждом из шагов?» → «пред-регистрируй и прогоняй Г3 вместе с Г1 и Г2». ## Основание A (`extrapolate="steps"`, коммит `99be33a`) удлиняет шаг в 1/(1−S_шаг) по похожести двух последних шагов. В методе: CHA 3220 → 2925, плоские 1823 → 1524, но APS 2806 → 2967 — A срабатывает и на простых корнях. Нужно условие, отличающее ползание (удлинять) от сходимости (не трогать). ## Три режима (все без констант; ограничение дальним концом и предохранитель — как у A) Обозначения: dₙ — предложенный шаг, dₙ₋₁ = x − x_prev, dₙ₋₂ = x_prev − x_prev2 — прошлые перемещения; результаты rₙ = fₙ/fₙ₋₁, rₙ₋₁ = fₙ₋₁/fₙ₋₂ **со знаком**. **Г1 `confirmed` — подтверждённый геометрический ряд.** Три шага одного направления, отношения q₁ = |dₙ₋₁|/|dₙ₋₂|, q₂ = |dₙ|/|dₙ₋₁|, оба < 1. Подтверждение S_q = min(q₁,q₂)/max(q₁,q₂). Шаг ← dₙ / (1 − q₂·S_q): удлинение по последнему отношению ровно в той мере, в какой ряд подтверждён. Если направления разные или какое-то q ≥ 1 — шаг не меняется. **Г2 `pattern` — повтор рисунка шагов, период из данных.** По истории прогона — отношения длин соседних перемещений qⱼ. Период p — лаг из 2…⌊k/2⌋ (k — длина истории, нужно два повтора), при котором средняя похожесть min/max(qⱼ, qⱼ₋ₚ) наибольшая; S_R — эта наибольшая похожесть. Удлинение A (1/(1−S_шаг)) применяется, только если **S_R > ½**. ½ — константа деления, как в `PREREG_empty_step_2026-09-21.md`. **Г3 `steps+results` — шаги и результаты.** S_шаг — как у A. S_рез = min(rₙ,rₙ₋₁)/max(rₙ,rₙ₋₁), если оба результата положительны (знак f не менялся — перескока не было), иначе 0. Шаг ← dₙ / (1 − min(S_шаг, S_рез)): удлинение настолько, насколько подтверждают и шаги, и результаты (выбор более осторожного — правило корпуса «выбор, а не взвешивание»). ## Сетка Та же, что для A, каждая ячейка — пятёркой режимов `none / steps / confirmed / pattern / steps+results`: tent, три точки, 7 предохранителей × чтения (без, `slope`, `shape`+`slope`, `dissimilar`+`slope`, `defect`); восемь остальных функций × 7 предохранителей без чтений. Результаты — в свой файл `sweep_extrap2.json` (файл A не перезаписывается). ## Критерии — для каждого режима отдельно, на предложенном методе (tent, три точки, проекция) | # | что | ПРОЙДЕНО, если | |---|---|---| | **Y1** | CHA | < 3220 | | **Y2** | APS | ≤ 2806 — главный: именно здесь A провалилась | | **Y3** | гарантия в семействе (project/safe/credit) | 0 нарушений, решено ≥ 193 | | **Y4** | плоские fun3–6, сумма | меньше, чем без удлинения | | **Y5** | по задачам против Чандрупатлы на APS | сообщается: сохраняется ли значимый перевес (без удлинения 87/24/42, p = 9·10⁻⁵) | | **Y6** | лучшая ячейка по обоим наборам среди режимов | сообщается против 5404 (A), 5511, 5228 (Чандрупатла) | **Правило остановки:** режим принимается в предложенный метод, только если Y1, Y2 и Y3 выполнены одновременно. Иначе результат записывается как есть. Нарушение Y3 — стоп.