books/gu-zhenren/door-to-file-b/PLAN.md

10 KiB
Raw Blame History

Записка-план ХОЛОДНОГО ПРОГОНА 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)

Книга 蛊真人, срез глав 13 (17564 байта, sha ed870ba6…) — режу сама из оригинала и сверяю обе sha. Потолки: движковые book_usd 1.25 / day_usd 2.50 (как у A, ради сравнимости) + холд платформы. Стоп-правило сессии: факт $1.00 ⇒ СТОП и пинг. РОВНО ОДИН резюм, объявленный в пре-реге. Вахта — АКТИВНАЯ: рост вызовов и трат по леджеру ДВУМЯ чтениями + чтение журнала движка ЖИВЬЁМ («время · что увидел · чего ожидал · что это значит»).

Ф3 — $0 после (§4.9) и вычитка (§4.54.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 — ОФФ-ПИК (пик 0104 и 0610 UTC по будням). Леджер считает по ПИКОВОЙ цене осознанно ⇒ записанная цена B будет вдвое выше настоящего счёта. На сравнение A↔B это НЕ влияет (оба леджера пиковые), на «сколько мы заплатили» — влияет вдвое. A шёл 01:2901:54 UTC в пятницу, то есть ВНУТРИ пика: у A запись и счёт совпадали, у меня — нет.

3. Три вещи, которых у прогона A не было и которые я добавляю

  1. $0-преflight ключей. Порядок преflight движка (internal/pipeline/runner.go:288-310): ContentRoutingErrorCheckMiningContrastCheckKeys → цены → и ТОЛЬКО ПОТОМ 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 на хосте нет) · не чинит ничего найденного.