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

86 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Записка-план ХОЛОДНОГО ПРОГОНА 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`):
`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 на хосте нет) · не чинит ничего найденного.