# Три методологии RL-стадии axiom: лесенка Лагуны, FrogNano-раунды, Ornith-самоскаффолдинг

- **Дата:** 2026-10-05. **Статус:** утверждено (ADR-027, ADR-029; решение владельца)
- **Вопрос, на который отвечает сравнение:** какая методология RL работает на нашей модели ~1B с нуля, обучающейся в harness Spine AI/ML на одной машине (NVIDIA GB10), — при механической награде без LLM-судьи и полном контуре анти-reward-hacking.
- **Формат вердикта:** ветки исполняются последовательно на одном чекпойнте SFT с равным бюджетом RL-шагов и одним скрытым holdout; попарные сравнения — МакНемар (4 прогона mean pass@1) с поправкой Бонферрони на три сравнения; разница меньше порога — «методологии неразличимы», и это тоже результат.

## Общая рамка (одинакова для всех веток)

- **Среда и верификатор — arch-ml** (train/prod идентичны, TITO): награда — детерминированная функция состояния среды, LLM-судья в контуре запрещён и проверяется поведенческим стражем C-039.
- **Формат эпизода:** модель ходит инструментами по workspace-копии реального кейса; завершение — явный `finish`-ход или исчерпание попыток/бюджета; вердикт — исполнимые fitness-гейты над финальным состоянием.
- **Общая гигиена:** маскирование промпта и выводов инструментов в loss; QAT MXFP4 наследуется из SFT; пиннинг сидов и снапшотов; health-гейты (C-045) с мутантами; анти-reward-hacking: скрытый ротируемый holdout, раннер без сети, sha256 правил до вердикта; смета до запуска.
- **Чистота сравнения:** один чекпойнт SFT, равный бюджет RL-шагов, один прибор; сравнение — методологического уровня (факторы внутри пакета коллинеарны и не атрибутируются по отдельности).

## 1. Ветка `laguna` — лесенка Лагуны (Poolside)

**Идея:** обучать солвера на отобранном пуле задач, удерживая сложность в коридоре возможностей текущего чекпойнта, с плотной reward-цепочкой, которая штрафует не только неверный итог, но и сдачу/грязь.

- **Алгоритм:** CISPO — потокенный суррогат с клипом IS-веса (1, 4) вместо градиентной маски; length-weighted leave-one-out baseline.
- **Задачи:** статический пул; калибровочный прогон текущим чекпойнтом измеряет pass-rate каждой задачи; в обучение идут задачи с pass-rate ∈ [10 %, 90 %] (вырожденные {0, 1} выбрасываются), сэмплирование ∝ 1 − pass_rate — чаще решаемое, что почти недостижимо.
- **Награда:** формула среды v1 (пройденные гейты, штраф за новые нарушения и бюджет) + префикс Лагуны: ошибка парсинга хода −0,1; «сдался» (меньше n_min вызовов инструментов) −0,1; таймаут 0,0.
- **Сильна там, где:** есть проверенный пул задач и нужен управляемый, дешёвый по инфраструктуре RL с плотным сигналом на каждом ходе.
- **Слабость:** программа обучения неподвижна — когда чекпойнт дорастает до пула, сигнал выгорает; новые задачи появляются только руками.

## 2. Ветка `frognano` — адаптивный синтез раундами (FrogNano)

**Идея:** задачи не хранятся, а **синтезируются раундами под текущий чекпойнт**: каждый раунд закрывает разрыв между тем, что модель уже умеет, и тем, что ещё не умеет.

- **Машина раундов:** раунд = синтез ~300 задач детерминированным мутатором реальных артефактов контура (seed → байт-идентичный кейс) → двусторонняя исполняемая валидация каждой задачи (гейты падают на испорченном состоянии ∧ эталонный ремонт проходит ∧ пустое решение падает) → калибровка проходимости текущим чекпойнтом (pass-rate вне [10 %, 90 %] — задача выбрасывается) → RL-нога на принятых → замер; насыщение раунда открывает следующий; потолок 5 раундов.
- **Алгоритм:** базовая схема axiom — групповое преимущество + токен-уровневый log-ratio клип как градиентная маска (MuonClip), плотный soft-score там, где бинарный гейт даёт слишком разреженный сигнал.
- **Награда:** формула среды v1 без префикса Лагуны; вердикт — по финальному состоянию среды.
- **Сильна там, где:** пул конечен или смещён — синтез держит задачи на границе возможностей и масштабирует программу без ручного труда.
- **Слабость:** качество программы упирается в качество мутатора; архитектура задач фиксирована дизайном генератора.

## 3. Ветка `ornith` — самоскаффолдинг (DeepReinforce AI / Ornith-1.5)

**Идея:** замкнуть цикл полностью — **модель сама предлагает задачи, сама строит под каждую задачу харнесс (скаффолд) и сама решает**, а reward от роллаутов доходит до всех трёх ролей. Одна политика играет три роли (proposer → harness-generator → solver) с разными промптами; три reward-потока оптимизируются одним GRPO-циклом раздельными стримами — без смешивания в один скаляр.

- **Награда задачи:** `R_task = V × D × N`. `V` — валидность, **жёсткий гейт**: та же двусторонняя исполняемая валидация, что и в frognano; невалидная задача или харнесс — ноль без обсуждения. `D = exp(−(p−p*)²/2σ²)` — награда за фронтирную сложность: `p` — эмпирический pass-rate на N роллаутах **текущей** политики, целевая доля успеха `p* = 0.2` (трудно, но остаются успешные траектории); когда модель растёт, `p` падает и генератор сам усложняет программу. `N = 1 − max sim(q, q_j)` — новизна против буфера принятых задач, строго после V и D.
- **Награда харнесса:** `R_harness = C × F × H`: alignment (гейты харнесса проверяют то, что объявила задача) × fidelity (заведомо верное решение проходит, заведомо неверное падает) × hack-resistance (изоляция оценки: без сети, без git-истории, sha256 правил, скрытый holdout). Харнесс с H → 0 не получает сигнал, даже если формально «проверяет».
- **Награда роллаута:** `R_rollout = h(q, τ)` — решение скорится сгенерированным харнессом; для верифицируемых задач это бинарный вердикт среды.
- **Детерминизм:** генерация задач и харнессов — пиннутым инференсом (жадный режим, сид, hash чекпойнта) — учебная программа воспроизводима.
- **Fail-closed:** если три раунда подряд не дают ни одной валидной задачи, ветка честно останавливается; «методология нежизнеспособна на данной базе» — результат сравнения, а не авария.
- **Сильна там, где:** нужен бесконечный, самокалибрующийся учебный фронттир и обучение под харнесс, который эволюционирует вместе с моделью.
- **Слабость:** самая тяжёлая инфраструктура (три потока роллаутов на шаг, совместная оптимизация трёх ролей) и реальный риск на слабой базе: модель, не умеющая писать валидные спеки, обнуляет V-гейт — тогда ветка честно фиксирует нежизнеспособность на данном масштабе.

## 4. Сводное сравнение

| | `laguna` | `frognano` | `ornith` |
|---|---|---|---|
| **Происхождение** | Poolside Laguna (техотчёты кейса laguna-compact) | FrogNano (arXiv 2609.07925) | DeepReinforce AI / Ornith-1.5 |
| **Алгоритм** | CISPO (клип IS-веса 1–4) + LOO baseline | базовая схема axiom (групповое преимущество + log-ratio клип, MuonClip) | базовая схема + совместный GRPO трёх ролей |
| **Источник задач** | статический пул + коридор pass-rate [10, 90], сэмплинг ∝ 1−pass | онлайн-синтез мутатором раундами ~300×≤5, двусторонняя валидация | модель-пропонер + жёсткий гейт валидности V |
| **Награда** | среда v1 + префикс Лагуны (parse/anti-give-up/таймаут) | среда v1, вердикт по финальному состоянию | три стрима: R_task=V·D·N, R_harness=C·F·H, R_rollout |
| **Кто обучается** | солвер | солвер | солвер + генератор задач + генератор харнессов |
| **Эволюция программы** | нет (пул фиксирован) | раунды до сатурации | непрерывная (p* тянет к фронтиру) |
| **Стоимость шага** | 1× | ~1–1,3× (синтез вне бюджета шагов) | ~3× (три потока роллаутов) |
| **Главный риск** | выгорание пула | качество мутатора | V-коллапс на слабой базе (fail-closed) |
| **Стадия имплементации** | после SFT — первая | вторая | третья, после зелёных env/tests |

## 5. Как читается результат

- Каждая пара веток сравнивается на одном скрытом holdout (проверенном на утечки, AD-12): МакНемар, 4 прогона mean pass@1; поправка Бонферрони на три сравнения.
- «Методологии неразличимы» — обе остаются конфигурациями, выбор контекста за владельцем; «различимы» — победитель становится основной схемой, элементы остальных сохраняются флагами-абляциями для факторных экспериментов (одна ось за прогон).
- Остановка ветки по health-гейтам (вырождение награды, коллапс энтропии) — штатный исход: сравнение фиксирует и границы применимости методологии, не только её пик.

## 6. Провенанс

- Решения: **ADR-027** (две ветки-сравнения, рамка вердикта), **ADR-029** (третья ветка ornith, формулы reward, fail-closed, Бонферрони); общий субстрат — ADR-022 (RL на arch-ml).
- Источники методик: техотчёты и дайджесты Poolside Laguna (кейс `laguna-compact`, 63 ADR — дистиллят `docs/research/LESSONS-LAGUNA-LADDER.ru.md`); FrogNano — arXiv 2609.07925; Ornith-1.5 — DeepReinforce AI (скилл `deepreinforce-harness-self-scaffolding`, плагин ornith).
- Подготовка контура: среда v1 с лестницей L0–L3 и калибровщиком (ENVIRONMENT-V1 §9–10), стражи C-039/C-043/C-044/C-045, precondition калибровки pass-rate [10, 90] — до запуска любой ветки.
