diff --git a/eval/dovodka/PLAN-01-09.md b/eval/dovodka/PLAN-01-09.md index 342e8428..8d7bb91b 100644 --- a/eval/dovodka/PLAN-01-09.md +++ b/eval/dovodka/PLAN-01-09.md @@ -39,10 +39,15 @@ SHA — снапшот их различает (`snapshot.go:288`=`prompt_sha256 **Условия копирования:** движок остановлен (WAL закрыт), `book_id` тот же (он входит в `request_hash`), в `book.yaml` меняются РОВНО два поля — `project_db` и `pipeline`. * **КОНТРОЛИРУЕТСЯ длина входа:** `len(draft)` и `prompt_tokens` — ковариата. ⚠ Честно: чанки движка - дают узкий диапазон (4412–6946 токенов), поэтому ось **контролируется, а не измеряется**. + узки по `prompt_tokens` (4412–6946: там доминируют исходник и системное), **но сама длина черновика + широка — 427–6171 знак, разброс ×14**, и она входит в модель ковариатой (§4). Прежняя формулировка + «контролируется, а не измеряется» снята как противоречащая §4. * **ФИКСИРУЕТСЯ:** модель и дата вендор-доки · бинарь `tmctl` по sha · `models.yaml` по sha · потолок вывода · `temperature 0.4` · `few_shot: false` · санитайзер ON · - `escalation.budget_usd: 0` — ⚠ **обоснование прежней редакции («иначе флагнутый юнит уйдёт хопом») + `escalation.budget_usd: 0` **ТОЛЬКО в четырёх конфигах рук.** ⛔ **В БАЗОВОМ прогоне он обязан быть + > 0**, иначе эхо-черновики останутся флагнутыми: в холодном прогоне 5 хопов на 25 вызовов, + $0.103 на 10 глав ⇒ **≈$0.25 на 24 главы, и это отдельная строка сметы**. + ⚠ **обоснование прежней редакции («иначе флагнутый юнит уйдёт хопом») ЛОЖНО и снято: редактор эскалировать не может по построению** (`pipeline.go:1012`=`escalate_to is only allowed on a translator role`). Настройка инертна для edit-волны; держим её как гигиену, а не как защиту. @@ -57,7 +62,7 @@ SHA — снапшот их различает (`snapshot.go:288`=`prompt_sha256 **Единица наблюдения** — клетка (юнит × рука); **единица анализа** — юнит. ⭐ **Требование §14 «потолок вывода одинаков во всех руках» выполняется само:** `stagerun.go:109-125` -даёт `base = max(EstimateTokens(draft)·2.2, min_max_tokens)`; при черновике ~7 тыс. знаков это +даёт `base = max(EstimateTokens(draft)·2.2, min_max_tokens)`; при МАКСИМАЛЬНОМ черновике 6171 знак это ≈4.5 тыс. < 16000 ⇒ **16000 у всех юнитов во всех руках по построению**, ретрай 32000 тоже одинаков. ⚠ Числа прежней редакции были не те: реальные черновики **427–6171 знак** (не «~7 тыс.»), а «4412–6946» — это `prompt_tokens` трёх edit-вызовов (исходник + черновик + системное), не длина @@ -72,7 +77,7 @@ SHA — снапшот их различает (`snapshot.go:288`=`prompt_sha256 **Лечение без правки Go, с замеренной точностью:** `R̂ = completion_tokens − 0.3644·len(response_text)`. Коэффициент — видимый выход pro-редактора на zh→ru; **пере-снят мной независимо: 0.3644 токена/знак, -n=16, sd 0.0069**. Ошибка ≈±2.3% видимого выхода, пренебрежима при размышлении в тысячах и заметна +n=16, sd 0.0069**. Ошибка типично ~3% видимого выхода, **худшая клетка 5.3%**; пренебрежима при размышлении в тысячах и заметна лишь при малом размышлении. Коэффициент **пинится в пре-реге**. ⚠ **Границы формулы, названные до покупки** (проверено независимо на 185 клетках рига с отчётным `reasoning_tokens`: 0.367–0.369, sd 0.007–0.010): (1) **любой CJK в выходе** ломает оценку — иероглиф @@ -103,6 +108,11 @@ n=16, sd 0.0069**. Ошибка ≈±2.3% видимого выхода, пре таблицы мощности (требовало бы истинного эффекта ≈×2.3 против заявленных ×1.84) и потому что сама полоса — заимствованная конвенция биоэквивалентности, к объёму размышления не обоснованная. Полоса остаётся **описательной**: попадание в неё печатается, решения не несёт. + ⛔ **Цензура на потолке — правило записано до чисел.** В холодном прогоне 1 из 4 `∅`-строк вернула + `length` ровно на 16000 при непустом тексте: там `R̂` — **нижняя граница**, а ретрай на 32000 есть + ДРУГОЙ розыгрыш. ⇒ **E1 считается по попытке 0**; клетка с `length` входит как правая цензура + (`R̂ ≥` наблюдённого). Знаковый вклад пары сохраняется, пока цензурированная `∅` ≥ `low`; если + наоборот — пара идёт как ничья, а не выбрасывается. * **E2:** то же для `log(cost/delivered)` — отдельно по попытке 0 (равный потолок) и по итогу юнита (боевая цена). ⭐ Средний член цены за знак — константа, поэтому разница рук сидит в **ρ = R̂/delivered**. ⚠ Оговорка: 2–4-я клетки юнита бьют префикс-кэш, вход дешевеет ~$0.006–0.009; @@ -118,8 +128,14 @@ n=16, sd 0.0069**. Ошибка ≈±2.3% видимого выхода, пре устойчивости E1/E3**, не как решающий тест. * **Провал прибора:** сигнатура Δ`prompt_tokens` вне полосы у >20% юнитов ⇒ проба аннулируется, деньги называются. ⛔ **Полоса НЕ задана заранее и не может быть**: единственное известное число - (−79) снято на en и на риге. ⇒ **Пред-полёт ЗАМЕРЯЕТ сигнатуру и пинит полосу коммитом**, и лишь + (−79) снято на en и на риге. ⇒ **Пред-полёт ЗАМЕРЯЕТ сигнатуру и пинит её коммитом**, и лишь после этого она становится гейтом. + ⚠ **Но «полосу» из пред-полёта не вывести:** один юнит даёт две сигнатуры (P₇ и P₉), разброса в + них нет. Поэтому правило допуска объявляется ЗДЕСЬ, до замера, и опирается на контроль 05.08: + при побайтно одинаковых `messages` провайдер повторяет `prompt_tokens` **в точности** ⇒ сигнатура + ожидается КОНСТАНТОЙ. **Допуск: ±2 токена** от значения, снятого пред-полётом (запас на неучтённую + серверную вставку, не на шум). Клетка вне допуска — «сигнатура не воспроизвелась»; >20% таких + юнитов ⇒ проба аннулируется. **Мощность.** В кресте 2×2 контраст главного эффекта на юните имеет sd = σ (не σ√2) — поэтому n вдвое меньше, чем в простой паре. Источник σ: **эррата Д47.7** (`23-editor-tier.md:7201`=`sd одного розыгрыша = 1.02`, 16 пар @@ -143,10 +159,18 @@ n=16, sd 0.0069**. Ошибка ≈±2.3% видимого выхода, пре руке — **прибор ОТКАЗЫВАЕТ**, а не печатает «в пределах». 3. **Эхо-гейт включён во всех руках.** ⚠ `low` ≠ выключение: мина вооружается ТУМБЛЕРОМ, а уровни эффорта едут с размышлением включённым. Гейт всё равно остаётся. -4. **Касса:** `ceilings.book_usd` на каждую БД + `--ceiling-usd`; отказ леджера = **СТОП и вопрос - владельцу**; добор после чисел запрещён; потолок сессия не поднимает. -5. **Фриз:** пре-рег, скрипт эндпойнта, четыре `pipeline.yaml` и два `editor.md` — коммитами ДО - первой платной клетки. +4. **Касса — и здесь ловушка, которую видно только в коде.** `ledger.go:58`=`FROM spend WHERE book_id` + считает потолок по `book_id`, а **копия БД несёт базовый расход под тем же `book_id`** (в холодном + прогоне это $0.4361). ⇒ `ceilings.book_usd` каждой копии = **база + доля руки + запас**, то есть в + `book.yaml` меняются ТРИ поля (`project_db`, `pipeline`, `ceilings`), либо потолок задаётся + `--ceiling-usd` на каждый запуск. И **число владельцу подаётся ОДНОЙ суммой**: база + пред-полёт + + N юнитов × 4 руки — иначе базовый расход посчитается четырежды или не посчитается вовсе. + Отказ леджера = **СТОП и вопрос владельцу**; добор после чисел запрещён; потолок сессия не поднимает. +5. **Фриз — и он обязан лежать в зоне полигона.** Пре-рег и скрипт эндпойнта коммитятся в + `eval/dovodka/`. ⚠ Четыре `pipeline.yaml` и два `editor.md` физически живут в каталоге книги — + это ОТДЕЛЬНЫЙ репозиторий с открытым вопросом «кто коммитит книги», поэтому в зону полигона + кладутся **их замороженные копии вместе с sha256**; иначе «коммитами ДО первой клетки» не + исполнимо по канону. Всё — ДО первой платной клетки. ## 6. ⚠ ДЕНЬГИ — И ЗДЕСЬ НУЖНО ЧИСЛО ВЛАДЕЛЬЦА @@ -158,14 +182,24 @@ n=16, sd 0.0069**. Ошибка ≈±2.3% видимого выхода, пре ретрай на 32000; попытка 0 — $0.048 при n=3); обрыв случился у **1 строки из 4**. ⚠ **Клетка `low` ≈ $0.04 — ИСТОЧНИКА НЕТ:** движковых edit-вызовов на `low` не существует вовсе, а хопы на `low` — роль переводчика ($0.004–0.040). Это **предположение, а не замер**, и его проверяет -пред-полёт. Юнит (2+2) ≈ **$0.26** при этом предположении. +пред-полёт. +**Арифметика юнита, по шагам (её пропуск в прошлой редакции ломал все производные):** попытка 0 +у `∅` = $0.048; обрыв на 16000 случается у ~25% и добавляет ретрай на 32000 (+$0.070) ⇒ +**эффективная `∅` ≈ $0.048 + 0.25·0.070 ≈ $0.066**, с запасом на разброс — **$0.09**. +Юнит (2 × `∅` + 2 × `low`) ≈ 2·0.09 + 2·0.04 = **$0.26**. -| строка | клеток | расчётно, ПИК | +| строка сметы | клеток | расчётно, ПИК | |---|---|---| -| пред-полёт (1 юнит × 4 руки) | 4 | ≈ **$0.25** | -| 24 юнита (~17 глав) | 96 | ≈ **$7.5** (вкл. 20% запаса) | -| 32 юнита (~24 главы) | 128 | ≈ **$9.9** (вкл. 20% запаса) | -| базовый прогон | — | ≈ $0.4–0.6 | +| базовый прогон (черновая волна + майнинг + терминолог) | — | ≈ $0.6 | +| эскалация эхо-черновиков в базовом прогоне (`budget_usd` > 0) | ~12 хопов | ≈ $0.25 | +| пред-полёт (1 юнит × 4 руки) | 4 | ≈ $0.25 | +| **вариант A:** 24 юнита × 4 руки (+20% запаса) | 96 | ≈ $7.5 | +| **вариант B:** 32 юнита × 4 руки (+20% запаса) | 128 | ≈ $10.0 | + +⭐ **ОДНОЙ СУММОЙ, как и надо просить у владельца** (иначе база посчитается четырежды или ни разу — +леджер считает потолок по `book_id`, а его несут все четыре копии): +* **вариант A (24 юнита): $8.6** — разрешающая способность ×2.02; +* **вариант B (32 юнита): $11.1** — разрешающая способность ×1.84. ⚠ **Чувствительность, названная до покупки:** если `low` на zh режет размышление слабо (×1.4, как внутри блока Д47), клетка `low` дорожает до $0.05–0.065 ⇒ 32 юнита ≈ **$9.5–10.5 до запаса**.