# ЖУРНАЛ ИСПОЛНЕНИЯ — что случилось ПОСЛЕ фриза №1 (`c08b547`) Пре-регистрация заморожена и не правится. Всё, что исполнение показало дальше, ложится сюда: находки, отступления, деньги — по порядку, с командами. --- ## Ш1 · КЛЮЧЕВАЯ ПРОБА, $0 ``` tmctl translate --config $B/book.yaml --keys-file /backend/.env --ceiling-usd 0.0001 → pre-flight: backed up the project DB to backups/20260902T004943Z.db (integrity_check green) → draft wave started snapshot=8d5721f65596 chunks=35 workers=4 → book USD ceiling reached ($0.0001) … denied estimate=$0.012052, ch1/chunk0/draft RC=4 ``` **Критерий прохождения — деньги, а не код выхода:** `spend` = 0 · `request_log` = 0 строк · `request_log where cost_usd>0` = 0 · `checkpoints` = 0 · `chunk_status[edit]` = 0. **Положительный контроль на сам критерий:** те же четыре запроса к базе холодного прогона дают `$0.436110` и `38` строк — команда умеет находить деньги там, где они есть. Побочно установлено: ключи всех четырёх провайдеров резолвятся (ошибки `CheckKeys` не было); `langpack_version = langpack-v2-x13fce767eada` — непустой, значит русский слой загрузился; в снапшоте черновой волны РОВНО одна стадия — `translator`, то есть пер-волновой фолд подтверждён на живой базе. --- ## Ш3 · БАЗОВЫЙ ПРОГОН — **RC = 3**, редактура не куплена | строка | вызовов | $ | |---|---|---| | черновик `deepseek-v4-flash` | 36 | 0.168200 | | хопы эскалации `deepseek-v4-pro` | 5 | 0.088463 | | терминолог | 3 | 0.013484 | | классификатор | 1 | 0.002756 | | **ИТОГО** | | **0.272903** при поясе 0.60 | `chunk_status[edit]` = 0 · `request_log[edit]` = 0 · `jobs[edit]` = 0, при положительном контроле (тот же запрос к `coldrun-v16` даёт 3). Все 35 черновых чанков `ok`, флагнутых 0, эскалаций 5 — эхо-черновики вычищены, что и было задачей базового прогона. ⚠ **Терминолог обрезан бюджетом:** `batches_dropped=5`, `classify_batches_dropped=6`, `consolidated=51`, `unanswered=57`. Банк консолидирован ЧАСТИЧНО. **Решение словом, а не умолчанием: бюджет НЕ поднимаю.** Банк — константа во всех пяти руках, поэтому на ось усилия и промпта он не влияет; поднять его — пере-покупка ради вопроса, которого замер не задаёт. Ограничение уходит в область переноса: результат получен на частично консолидированном банке. --- ## Ш4 · ПЯТЬ КОПИЙ `tmctl backup` → `backups/20260902T072159Z.db` → `cp` в пять `arms/<рука>.db`. sha256 всех пяти совпал (`036f76f7e36a8e96…`), у каждой леджер `$0.272903`, черновиков 35, edit 0. --- ## ⭐ Ш5-ЭТАП-1 · ОСЬ ДОКАЗАНА ЗА $0 План собирался проверять ось ПОСЛЕ покупки. Приём: дать копии потолок «база + $0.0001». Движок бесплатно поднимает черновики из чекпойнтов, гоняет майнинг и терминолог по чекпойнтам, **вычисляет edit-снапшот и заводит edit-джоб** — и только потом упирается в отказ резервации. ``` p7-off edit ba1fdded853f… sha 2b84dee34b08… reasoning 'off' model deepseek-v4-pro p7-low edit ebf9779789ec… sha 2b84dee34b08… reasoning 'low' model deepseek-v4-pro p9-off edit 50456adb5e42… sha 1ad4544e564a… reasoning 'off' model deepseek-v4-pro p9-low edit 818b46153d4f… sha 1ad4544e564a… reasoning 'low' model deepseek-v4-pro glm-off edit fe10bbf000cd… sha 1ad4544e564a… reasoning 'off' model glm-5 memory_version у всех пяти: d08d11eb642e EDIT-снапшотов 5 · DRAFT-снапшотов 1 · леджер каждой руки не сдвинулся ``` Плюс проверка сильнее плановой: у пяти edit-снапшотов **всё, кроме плана стадий, побайтно одинаково**. Без неё «пять разных id» прошло бы и при разных банках. ### Находка Ш5-1: `preflightBackup` роняет прогоны, стартовавшие в одну секунду Первый запуск гарда: три руки из пяти вернули код 1 — `store: backup .../arms/backups/20260902T072300Z.db already exists (refusing to overwrite a restore point)`. Точка восстановления именуется с точностью до СЕКУНДЫ, пять рук лежат в одном каталоге. **В пачке это остановило бы прогон на сотне клеток.** Лечение: пауза 2 с перед каждым вызовом в `predpolet.sh` и `pachka.sh`. Денег не стоило. --- ## ⛔⛔ Ш5-ЭТАП-2 · ГЛАВНАЯ НАХОДКА ИСПОЛНЕНИЯ: АВТО-БАНК РАСТЁТ МЕЖДУ ПОКУПКАМИ Первая платная клетка (`p7-low`): ``` rc=1 · потрачено $0.018243 · edit-клеток куплено 0 tmctl: job guzhenren-probe4/ch1/edit was started under snapshot ebf9779789ec, current config renders snapshot 64fc22983b6c — what moved: memory_version — that is the BANK, not a config or prompt edit: the auto-bank grew between purchases ``` **Механизм.** Терминолог перезапускается в КАЖДОЙ руке и, пока у него остался бюджет, доращивает авто-банк. Банк — вход редактора. | | база | рука `p7-low` | |---|---|---| | `consolidated` | 51 | **81** | | `unanswered` | 57 | **27** | | `batches_dropped` | 5 | 3 | | `memory_version` | `d08d11eb642e` | **`67d54521e64d`** | | edit-снапшот | `ebf9779789ec` | **`64fc22983b6c`** | Все $0.018243 — терминолог ($0.013276 render + $0.004967 classify), ни одной edit-клетки. **Почему это угроза дизайну, а не побочка гарда.** Гард лишь показал раньше. Без него первая рука завела бы джоб под своим банком и купила клетку, а на ВТОРОМ юните банк дорос бы снова — и рука упёрлась бы в тот же отказ уже с оплаченными клетками. Хуже: банк мог вырасти по-разному в разных руках, и тогда редактор получил бы **разный вход** при внешне исправном кресте. Это прямое разрушение блокировки трудности, на которой стоит весь замер. Ни план, ни я этого не предвидели. **Банк НЕ в неподвижной точке:** накоплено render `$0.02676` из `$0.05`, classify `$0.007723` из `$0.02` — головы ещё на пару батчей. ### Что при этом НЕ грозит — проверено, а не предположено * Предупреждение «the reverse section is capped … re-proposes on the next run» **не срабатывало ни разу**: `grep -c 'reverse section is capped'` = 0 в обоих логах, при положительном контроле — тот же греп находит 14 и 10 других `level=WARN` в тех же файлах. * Дельта майнинга **стабильна**: `terms=102` и в базе, и в руке. Растёт только консолидация. * Бюджет режется **ДО первого вызова** от накопленного расхода (`terminologist.go:792`), поэтому исчерпание монотонно и неподвижная точка достижима. ### Лечение — проверено исполнением за $0 Довести терминолога до неподвижной точки В БАЗЕ и только потом копировать. Мешало то, что любой прогон, дошедший до edit-волны, заводит edit-джоб, а он уехал бы в пять копий, совпав со снапшотом лишь одной руки. Проверена гипотеза «draft-only конфиг»: ``` конфиг БЕЗ стадии edit, прогон на копии базы, потолок отказывает всему: draft wave started snapshot=8d5721f65596 ← ТОТ ЖЕ, что у базы bank-mining: --verify-bank has nothing to stop before in a draft-only pipeline edit-джобов заведено: 0 · потрачено: $0.000000 ``` Опасение, что `finalStageWave` перекинет фолд `repair` на черновую волну и сдвинет снапшот, снято: гейт `repair` выключен, `repairSnapshot` даёт `nil` в обоих случаях. **Процедура:** гонять базу `pipeline-bank-only.yaml`, пока `memory_version` не перестанет меняться между двумя подряд прогонами (измеримая неподвижная точка) → новый бэкап → пять новых копий → заново $0-гард оси → платный пред-полёт. **Потолок стоимости лечения — остаток замороженных бюджетов: `$0.036516` + `$0.017244` = ≤ $0.0538.** **Что это меняет и чего не меняет.** Меняет ПОРЯДОК сборки стенда, который §10 плана прямо оставляет исполнителю. Не меняет ни дизайн, ни правило решения, ни потолок, ни рамку выборки, ни сид, ни модели. Отвергнутые альтернативы: `gates.terminology.enabled: false` в руках (банк стал бы ДРУГИМ, чем в базе: без терминолога `attachConsolidatedDst` берёт dst из сырого порядка черновиков); поднять `budget_usd` (правка замороженного числа, и неподвижной точки не гарантирует); `--resnapshot` (запрещён промтом). --- ## ⚠ ДЕНЕЖНАЯ ЛОВУШКА, НАЗВАННАЯ ДО ТОГО, КАК ОНА СРАБОТАЛА `$0.018243`, потраченные в `p7-low`, при пере-копировании ИСЧЕЗНУТ из леджера копии — а провайдеру они уже ушли. Агрегат §9.5 («база + Σ(копия − база)») их не увидит и занизит расход. ⇒ В агрегат вводится постоянное слагаемое **«потрачено вне текущих баз» = $0.018243**, и оно переносится во все последующие подсчёты. --- ## ДЕНЬГИ НА ЭТОТ МОМЕНТ ``` база $0.272903 вне текущих баз (p7-low) $0.018243 ──────────────────────────────────── ИЗРАСХОДОВАНО $0.291146 из санкции $9.50 ``` --- ## ⛔ НАХОДКА В МОЁМ ЖЕ ГАРДЕ: ЛОЖНАЯ НЕПОДВИЖНАЯ ТОЧКА **Класс: показания собственного инструмента приняты за факт о мире.** Тот же класс, что и снятая находка про `pairs/` (§9-КВАТЕР пре-рега), и тот, из-за которого этот промт вообще написан. $0-гард оси с потолком «база + $0.0001» показал «банк не двинулся, леджер не сдвинулся». Я прочла это как «банк стабилен». На деле потолок отказывал и ТЕРМИНОЛОГУ, а его отказ — не остановка, а `break` с логом (`terminologist.go:807`: «call denied by a USD ceiling; remaining terms left unchanged»). Банк не двигался потому, что не на что было купить. Улика, снятая после того, как это назвал агент-контролёр: ``` $ grep -c 'denied by a USD ceiling' logs/axis-*.log logs/base.log axis-p7-off:2 axis-p7-low:2 axis-p9-off:2 axis-p9-low:2 axis-glm-off:2 base:0 ПОЛОЖИТЕЛЬНЫЙ КОНТРОЛЬ: тот же греп на 'ceiling' в axis-p7-off даёт 6 ``` Во всех пяти логах гарда терминолог был заблокирован деньгами; в базовом прогоне (потолок $0.60) — ни разу. **Лечение: потолок гарда обязан лежать НИЖЕ редакторской резервации, но ВЫШЕ батча терминолога** — тогда ложная точка проявляется покупкой, а не тишиной. ## СТАБИЛИЗАЦИЯ БАНКА — ТРИ ИТЕРАЦИИ, ТОЧКА ДОКАЗАНА Терминальное условие — не «`memory_version` не изменился» (это можно получить и купив батч, который ничего не сконсолидировал), а **ноль свежих платных строк И ни одного отказа по деньгам**. ``` итерация 1 потолок $0.3729 строк с ценой 45→48 consolidated 81 memory_version 6cf3bbb07c4c итерация 2 потолок $0.3862 строк с ценой 48→51 consolidated 101 memory_version e1815faab405 итерация 3 потолок $0.4081 строк с ценой 51→51 denied=0 memory_version НЕ ИЗМЕНИЛСЯ ✅ НЕПОДВИЖНАЯ ТОЧКА ``` Банк: **51 → 101 консолидированный терм из 108**, `unanswered` 57 → 7. **Стоимость лечения: $0.035199** (леджер базы $0.272903 → $0.308102) — в предсказанном потолке ≤ $0.0538, который был выведен из ЗАМОРОЖЕННЫХ бюджетов и потому не мог быть превышен. ⚠ **$0-альтернатива, рассмотренная и отвергнутая по улике:** `gates.terminology.budget_usd: 0` в руках заморозил бы банк бесплатно (`terminologist.go:770-776` — оплаченные батчи допускаются мимо бюджета). Но такой конфиг **не загрузился бы вовсе**: `pipeline.go:1078` — `budget_usd must be > 0 when the gate is enabled (a gate that can never spend is a silent no-op)`, код 10 на старте. Прочитан планировщик, не прочитан валидатор — поймано до запуска, ценой ноль. ## ПЕРЕ-СБОРКА И ГАРД НА СТАБИЛИЗИРОВАННОМ БАНКЕ Старые копии снесены (несли джобы под старым снапшотом, а `p7-low` — иной банк). Новый бэкап `backups/20260902T075300Z.db`, пять новых копий, sha256 совпал, edit-джобов 0, база **$0.308102**. ``` p7-off edit 5d19943a7771… sha 2b84dee34b08… reasoning 'off' model deepseek-v4-pro p7-low edit 9fcf3c1c3eb1… sha 2b84dee34b08… reasoning 'low' model deepseek-v4-pro p9-off edit 4fb1efc79dab… sha 1ad4544e564a… reasoning 'off' model deepseek-v4-pro p9-low edit b76ab168d95b… sha 1ad4544e564a… reasoning 'low' model deepseek-v4-pro glm-off edit a4598c85a210… sha 1ad4544e564a… reasoning 'off' model glm-5 memory_version у всех пяти: e1815faab405 · EDIT-снапшотов 5 · DRAFT-снапшотов 1 ``` ### Устойчивость прогон-к-прогону — то, на чём стоит цикл из 20 повторов Два подряд прогона `p9-off` с потолком `база + $0.015` (НИЖЕ edit-резервации креста $0.0704, ВЫШЕ батча терминолога ≈$0.0126 — то есть ложная точка проявилась бы покупкой): ``` прогон 1: rc=4 · снапшот 4fb1efc79dab→4fb1efc79dab · строк с ценой 51→51 · леджер не сдвинулся · denied=0 прогон 2: rc=4 · снапшот 4fb1efc79dab→4fb1efc79dab · строк с ценой 51→51 · леджер не сдвинулся · denied=0 ``` ### ⚠ ОТСТУПЛЕНИЕ: референсная клетка куплена ПЕРВОЙ, а не пятой Гард с потолком `база + $0.04` купил клетку `glm-off`: у `glm-5` НЕТ флора `min_max_tokens`, её редакторская резервация **$0.020191** влезла в потолок, тогда как у рук креста она **$0.070426** (отказ назвал `ch1/chunk0/edit` — стадия та, что нужно). ``` glm-off (1,0) · glm-5 · pt 5478 · cmpl 2310 · $0.012870 · finish stop · ответ 7605 знаков max_tokens в вызове: 4637 ← план предсказывал ≈4.5 тыс. для референса без флора: сходится ``` **Клетка принята, а не пере-куплена.** Она законна — это клетка пред-полётного юнита; куплена вне порядка сида (первой вместо пятой), то есть БЕЗ выигрыша префикс-кэша, что для референса консервативно; референс не входит в крест и в E1. Пере-покупка стоила бы ещё $0.0129 и не дала бы ничего измеримого. Отступление записано здесь. ⭐ **Побочно — улика, что thinking у референса действительно выключен:** остаток `2310 − 0.3644·7605 = −461` вместо тысяч положительных. Отрицательный знак — свойство ЧУЖОГО токенизатора (план это и предупреждал), а не размышления. ## ДЕНЬГИ ПОСЛЕ СТАБИЛИЗАЦИИ ``` база (стабилизированная) $0.308102 вне текущих баз (p7-low) $0.018243 ← улика logs/orphaned-spend-p7-low.tsv, sha256 2b15d1e7… клетка glm-off $0.012870 ← уже в леджере копии, в агрегат войдёт как (копия − база) ───────────────────────────────────── ИЗРАСХОДОВАНО $0.339215 из санкции $9.50 ``` --- ## ✅ ПРЕД-ПОЛЁТ ПРОЙДЕН — все стоп-критерии §5.1 исполнены командой Команда: `./eval/.venv/bin/python eval/dovodka/predpolet_proverka.py ~/books/gu-zhenren/probe-4axes` → RC=0 ### Пять клеток юнита (1,0) = «Глава 26» | рука | pt | кэш | cmpl | R̂ | finish | клетка $ | ответ, зн | |---|---|---|---|---|---|---|---| | `p7-off` | 5696 | 0 | 14276 | **11506** | stop | 0.064052 | 7602 | | `p7-low` | 5617 | 0 | 4593 | **1889** | stop | 0.025603 | 7420 | | `p9-off` | 5752 | 0 | 6673 | **3920** | stop | 0.034018 | 7554 | | `p9-low` | 5673 | 5632 | 3303 | **585** ⚠ | stop | 0.013382 | 7458 | | `glm-off` | 5478 | 0 | 2310 | 0 по построению | stop | 0.012870 | 7605 | ⚠ `p9-low`: R̂ = 585 < 700 — по правилу плана о ВЕЛИЧИНЕ такой клетки вывод не делается. ⚠ n = 1: числа приведены как улика исправности прибора, а НЕ как результат. Правило решения §4 требует Вилкоксона по 20 юнитам, и оно не пересматривается. ### ⭐ ПРОВОДНАЯ УЛИКА — план утверждал, что её не существует ``` p7-off reasoning_effort — max_tokens 16000 temperature 0.4 model deepseek-v4-pro p7-low reasoning_effort ['low'] max_tokens 16000 temperature 0.4 model deepseek-v4-pro p9-off reasoning_effort — max_tokens 16000 temperature 0.4 model deepseek-v4-pro p9-low reasoning_effort ['low'] max_tokens 16000 temperature 0.4 model deepseek-v4-pro ``` Ключ стоит РОВНО у `low`-рук и отсутствует у `∅`-рук; потолок вывода, температура и модель побайтно одинаковы. Требование §14 «потолок вывода одинаков во всех руках» — **исполнено на проводе, а не выведено из кода**. ⚠ **Дефект инструмента, пойманный положительным контролем.** Первая редакция ассертов рапортовала «у `low`-рук ключа НЕТ» — то есть дефект МОЕГО грепа выглядел как находка о проводе. Тело логируется экранированным (`request="{\"reasoning_effort\":\"low\"}"`), а регулярка искала неэкранированные кавычки. Поймано тем, что `grep -c reasoning_effort` давал 1 там, где регулярка давала 0. Класс: показания собственного инструмента приняты за факт о мире — третий случай за сессию. ### Блокировка трудности и ось промпта — побайтно ``` ключи юнита: все пять рук = (1, 0) content_hash: p7-off = p7-low = e3db15ac06a4ff04… p9-off = p9-low = glm-off = 5282b3b56371e582… между P7 и P9 РАЗЛИЧЕН ``` `content_hash` — сигнатура отрендеренных сообщений. Совпадение внутри пары доказывает, что руки видят ПОБАЙТНО ОДИН вход и различаются только эффортом; различие между парами — что ось промпта дошла до сообщений, а не осталась в конфиге. ### Безопасность Кириллица **0.9995** во всех пяти руках, CJK **0** и в сыром ответе, и в отгружаемом — включая референс, от которого план ждал зону эха. Стоп-критериев не сработало. ### Референс Остаток `2310 − 0.3644·7605 = −461` (20% от completion). Отрицательный — значит размышления нет вовсе, а коэффициент 0.3644 просто не подходит чужому токенизатору. План это предупреждал; для E1 референс не используется, и «R̂ = 0 по построению» остаётся верным. ⚠ Проводная улика референса НЕ снята: его клетка куплена $0-гардом без канала тел. Снимется на первом юните пачки — канал включён именно там. --- ## ⛔ ФРИЗ №2 — СИГНАТУРА Δ`prompt_tokens` ЗАПИНЕНА ``` P7: prompt_tokens(p7-off) 5696 − prompt_tokens(p7-low) 5617 = 79 P9: prompt_tokens(p9-off) 5752 − prompt_tokens(p9-low) 5673 = 79 допуск ±2 токена; >20% юнитов вне допуска ⇒ ПРОБА АННУЛИРУЕТСЯ ``` ⭐ **Число совпало с единственным известным ранее — «на en дважды ровно 79».** Совпадение получено на ДРУГОЙ паре, ДРУГОЙ модели и ДРУГОМ материале, то есть это независимое подтверждение, а не воспроизведение конвенции. С этого момента сигнатура — гейт, а не наблюдение. --- ## ДЕНЬГИ ПЕРЕД ПАЧКОЙ ``` база (стабилизированная) $0.308102 вне текущих баз $0.018243 p7-off $0.064052 p7-low $0.025603 p9-off $0.034018 p9-low $0.013382 glm-off $0.012870 ───────────────────────────────────── ИЗРАСХОДОВАНО $0.476269 из $9.50 · остаток $9.023731 юнит из пяти клеток стоил $0.149925 проекция на 19 юнитов $2.8486 ПРОЕКЦИЯ ИТОГА $3.3248 из $9.50 ``` ⚠ **Клетка втрое дешевле сметы.** План закладывал $7.5 на крест из расчёта ∅ $0.09 и low $0.05; факт — ∅ $0.034–0.064 и low $0.013–0.026. Причина в том, что `low` режет размышление сильнее закладывавшегося. ⛔ **Это НЕ основание добирать юниты:** рамка выборки заморожена диапазоном глав, и §12 промта запрещает добор после просмотра чисел. Остаток санкции остаётся неизрасходованным.