# Записка-план ХОЛОДНОГО ПРОГОНА B (§7 промта). Написана ДО первой строящей команды. Сессия `textmachine-82`. Промт — `docs/COLD_RUN_B_SESSION_PROMPT.md` редакции `3fce077`. Всё, что ниже, сверено с ЗАКАЗОМ механически (по §-номерам промта), а не по памяти. ## 0. Границы, которые я себе ставлю сама * Кода НЕ правлю ни в одной зоне. Ничего НЕ коммичу. Находка = пинг оркестратору 11. * Рабочее дерево — `~/tm-coldrun-b` (вне репозитория, вне общего скретчпада). * ⚠ `/tmp` — tmpfs, занят на 96 % (5.6 G из 5.9 G; 4.9 G из них — `/tmp/claude-1000`, скретчпады ЧУЖИХ сессий, не трогаю). ⇒ `TMPDIR`/`GOTMPDIR` всех моих сборок — `~/tm-coldrun-b/tmp`, на диске. Забитый `/tmp` маскируется под сломанную сборку, и это уже стоило проекту хода. * Фоновое гашу ТОЛЬКО по своему pid. Свои pid пишу в `~/tm-coldrun-b/stand/*.pid`. * Мой cgroup — `/init.scope`, `memory.max = max`: потолка нет, тяжёлый прогон можно вести отсюда. ## 1. Фазы и что чем предъявляется ### Ф0 — $0-дым (§4.0). Первая работа пака. | Узел | Чем предъявлю | |---|---| | стенд мой | `ss -ltnp`, pid мой, на 8098 (не 8097 прогона A) | | заглушка на 11434 | своя, порт `eval/door_to_file/stub` (в git, фриз `be53cc8`); pid мой | | $0-конфиг | рендер `eval/door_to_file/zeropipe`; **пин — ЗАГРУЗЧИК**: `tmctl status` (читающий $0-верб, `LoadPipeline` на КАЖДОМ пути — `internal/config/pipeline.go:1166`) выходит 0 на этом файле. Контроль рядом: счёт достижимых ПЛАТНЫХ слагов 0 против ненулевого в `pipeline-c1.yaml` | | дым НЕ по платной книге | отдельная дымовая книга + отдельная дымовая учётка; база ТА ЖЕ (довод — §2 ниже) | | гость · деньги · интейк · старт · кадры · подпись · резюм · выгрузка · ФАЙЛ | тела ответов в `evidence/http/<шаг>.json` (⛔ дефект харнесса A: он печатал их на экран и не писал в файл — у пяти узлов A не осталось носителя) | | позитивный контроль КАЖДОГО сборщика | подсадка ненулевого банка, удержанного юнита, открытой резервации ⇒ сборщик обязан ПОКРАСНЕТЬ. Не покрасневший в платную фазу не допускается | | §4.8 — ВСЕ формы дёрганья API | здесь же, на $0-руке: главы против ЗНАКОВ · идемпотентность · резюм · второй старт при идущем первом · выгрузка во всех форматах · узел подписи · отказные (нет книги · нет баланса · мусорный курсор). Ожидаемый исход КАЖДОГО пишется ДО | ### Ф1 — фриз (§4.2) Клон (НЕ worktree) → sha → три бинаря с живым штампом (`vcs.revision`, `modified=false`, строк `vcs.*` > 0) → `test ! -e /tmp/.git`, `-buildvcs=false` ЗАПРЕЩЁН → пре-рег, называющий ЭТОТ sha → пинг → коммит оркестратора → сверка заландженного → и только потом деньги. ### Ф2 — платная (§4.4) Книга 蛊真人, срез глав 1–3 (17564 байта, sha `ed870ba6…`) — режу сама из оригинала и сверяю обе sha. Потолки: движковые `book_usd 1.25` / `day_usd 2.50` (как у A, ради сравнимости) + холд платформы. Стоп-правило сессии: факт $1.00 ⇒ СТОП и пинг. **РОВНО ОДИН резюм**, объявленный в пре-реге. Вахта — АКТИВНАЯ: рост вызовов и трат по леджеру ДВУМЯ чтениями + чтение журнала движка ЖИВЬЁМ («время · что увидел · чего ожидал · что это значит»). ### Ф3 — $0 после (§4.9) и вычитка (§4.5–4.7) Консистентность `I1`/`I2` с ПЕЧАТАЕМЫМИ знаменателями · выгрузка · структурное чтение EPUB · `wave_selection` ОБЕИМИ волнами · `reasoning_in_completion` ТРЁХЗНАЧНО (`NULL` / `0` / `>0`) · опус-читатель на ВЕСЬ перевод против ВСЕГО оригинала с доказательством дочитывания · таблица 2×2 «прибор × читатель» · чтение ОТРАБОТАВШЕГО кода · §4.10 находки вне заказа. ## 2. Где я жду осечки (и это ГИПОТЕЗЫ, а не знание) 1. **`wave_selection` может оказаться пустым не по дефекту, а по конфигу.** Оба писателя гейтятся `r.memory != nil` (`chunkrun.go:198`, `waverun.go:734`). Контроль, снятый мной на базе A: в ней `retrieval_state` = 6 строк при 6 черновых чанках ⇒ на `c1` память ЖИВА и черновая волна пишет. **Пре-регистрирую ожидание: 10 строк = 6 `draft` + 4 `edit`** (6 чанков; 4 юнита, у каждого свой лидер-чанк: (1,0) (1,1) (2,0) (3,0)). Меньше — находка, а не ноль в отчёте. 2. **Ключи деплоя.** Их живость прогон A не проверил вовсе. Строю $0-преflight (см. §3 ниже). 3. **Эхо-мина.** Смету черновой волны закладываю с ~10 % на эскалации/перевыпуски; мина сработала у A четырежды. Каждый `finish_reason=length`, каждый `regenerating with a larger budget` читаю ЖИВЬЁМ. 4. **Терминолог всегда едет вендор-дефолтом `high`** (ручки эффорта у бэнк-ролей нет, бэклог 104) — стадия, наиболее склонная упереться в стену. У A она отработала; у прогона 0731 — 4 батча из 5 в `length`. Если повторится — это находка, а не случайность. 5. **Пик/офф-пик DeepSeek.** Сейчас пятница 19:0x UTC — ОФФ-ПИК (пик 01–04 и 06–10 UTC по будням). Леджер считает по ПИКОВОЙ цене осознанно ⇒ записанная цена B будет вдвое выше настоящего счёта. На сравнение A↔B это НЕ влияет (оба леджера пиковые), на «сколько мы заплатили» — влияет вдвое. A шёл 01:29–01:54 UTC в пятницу, то есть ВНУТРИ пика: у A запись и счёт совпадали, у меня — нет. ## 3. Три вещи, которых у прогона A не было и которые я добавляю 1. **$0-преflight ключей.** Порядок преflight движка (`internal/pipeline/runner.go:288-310`): `ContentRoutingError` → `CheckMiningContrast` → `CheckKeys` → цены → и ТОЛЬКО ПОТОМ `store.Open` (флок, миграции). ⇒ отказ по ключам случается ДО создания проектной базы и ДО денег. Гоняю `translate` на ОДНОРАЗОВОЙ книге с боевым пайплайном и микроскопическим `--ceiling-usd`; любой исход, КРОМЕ отказа по ключам, доказывает, что ключи деплоя живы. Худший случай — один черновой вызов ≈$0.012. 2. **Тела HTTP сохраняются в файл на КАЖДОМ шаге** (дефект харнесса A, §10 п.12 его отчёта). 3. **Прибор денег валидируется на базе A ДО того, как применён к B.** Уже исполнено: мои запросы пере-снимают 17 единиц / 17 платных / 4 из 17 = 23.5 % / $0.106472 = 25.4 % двумя путями — всё сошлось с числами оркестратора, кроме второго числителя (см. §4). ## 4. Расхождение, найденное ДО денег, и оно идёт пингом Второй числитель («единицы, за ПРИНЯТЫЙ результат которых заплачено больше одного раза») на базе A даёт ДВА числа, и промт называет одно из них: * все платежи КРОМЕ ПЕРВОГО = **$0.028743** — число промта ($0.028742); * все платежи КРОМЕ ПОСЛЕДНЕГО = **$0.035723 = 8.5 %**. Разница 24 %. Плюс: у всех ШЕСТИ пар терминологии `request_hash` РАЗНЫЕ ⇒ это не пере-спрос одного вопроса, а одна ПОЗИЦИЯ, купленная дважды разными вопросами. Печатаю оба числа и называю, что «пере-куплено» — утверждение о позиции, а не о вопросе. ## 5. Что этот прогон НЕ покупает (чтобы не потратить на это ни цента) Не отвечает на «безопасно ли редактору думать меньше» (ряд 433) · не даёт ВЕЛИЧИНУ доли выброшенного (n=2 нормы §3д не выполняет) · не судит `epubcheck` (java на хосте нет) · не чинит ничего найденного.