books/gu-zhenren/door-to-file-b/live-journal.md

12 KiB
Raw Blame History

Живой журнал платного прогона B (§4.4: «время · что увидел · чего ожидал · что это значит»)

Ведётся ПО ХОДУ, а не в разборе. Прогон run_Q6DSXGS7TW52TFNO, книга bk_NH6275ZIRFFTLZHG, старт 19:48:38 UTC 11.09 (пятница, ОФФ-ПИК DeepSeek).

Время (UTC) Что увидел Чего ожидал по чтению кода Что это значит
19:48:38 pre-flight: backed up the project DB … integrity_check green бэкап на старте попытки ⚠ это НЕ мой TM_PLATFORM_BACKUP_DIR, а собственный пре-флайт ДВИЖКА, в каталог книги. Два разных механизма восстановления, и я чуть не приписала один другому
19:48:38 glossary materialized … entries=0, bank export refreshed … terms=0 пустой банк на холодной книге холодность подтверждена ИЗНУТРИ движка, а не только тем, что книга новая
19:48:38 draft wave started snapshot=fef36e1dd642 chunks=6 workers=1 6 чанков из манифеста сошлось с пре-регом §1.2; workers=1 — волна последовательная, поэтому «параллельная первая стадия» из гипотез не реализуется
19:48:38 calling model deepseek-v4-flash max_tokens=8496 estimate_usd=0.012085 флор 8000 + bankTokenBudget 496 ровно как у A (id 1)
19:49:23 ch1/chunk0: disposition=flagged reason=empty, 44.8 s, $0.012048 — выброшено мина квирков §катовер п.12 ЗНАК ДЕНЕЖНОЙ ДЫРЫ ВОСПРОИЗВЁЛСЯ НА ПЕРВОМ ЖЕ ЮНИТЕ
19:49:23 stage flagged, regenerating with a larger budget next_max_tokens=16992 → $0.017408 удвоение потолка, лечение есть путь не рвётся, он дорожает вдвое (A: 4 из 4 таких вылечились)
19:49:23 WARN priced by a model that did not answer: requested=deepseek-v4-flash answered=deepseek-flash priced_by=requested у A этого WARN НЕ БЫЛО ряд 413 получил ЖИВОГО сторожа: движок теперь сам кричит, что считает нас по слагу, которого нет в его каталоге. Это одна из 118 правок между A и B
19:51:02 ch1/chunk1: снова reason=empty, 40.8 s, $0.011749 — выброшено, регенерация 16992 2 из 2 черновых чанков выброшены с первой попытки. У A было 3 из 6. Если доля удержится, черновая волна встанет вдвое дороже сметы
19:52:12 ch2/chunk0 reason=empty $0.011753 выброшено → 16992 → $0.003514 3 из 3
19:52:54 ch2/chunk1 прошёл С ПЕРВОЙ попытки, $0.006970 единственный чистый чанк волны
19:53:36 ch3/chunk0 reason=length (не empty!) $0.011786 выброшено → 16992 → $0.018276 оба флага задокументированы: empty — размышление съело потолок, length — текст оборван ОБА КЛАССА мины встретились в одном прогоне, как у A
19:55:25 ch3/chunk1 reason=empty $0.011472 выброшено → 16992 → $0.008145 ИТОГ ЧЕРНОВОЙ ВОЛНЫ: 5 выброшенных первых попыток из 6 чанков. У прогона A было 3 из 6. Доля ВЫШЕ, знак тот же
19:55:55 bank-mining: draft-side proposals folded surfaces=66 у A было 69 предложенных + 1 предъявленная = 70 банк-контур начался; поверхностей 66 против 69 — черновики РАЗНЫЕ, и это ожидаемо
WARN о слаге повторяется на КАЖДОМ вызове (requested=deepseek-v4-flash answered=deepseek-flash priced_by=requested) у прогона A этого WARN не было вовсе ряд 413 получил живого сторожа между A и B; цена считается по слагу, которого нет в каталоге ответившего
19:56:37 терминолог-классификатор batch=0: asked=22 answered=4, reason=length, $0.012646 ОПЛАЧЕНО у бэнк-ролей нет ручки эффорта (бэклог 104) ⇒ они всегда едут вендор-дефолтом high 18 термов из 22 остались без машинного типа
19:57:30 batch=2: asked=24 answered=0, reason=empty, $0.012133 ОПЛАЧЕНО. WARN: «a paid batch came back with an EMPTY completion; its terms keep the draft heuristic type and produce no gender» 42 терма из 66 остались без классификации, и оба провальных батча ОПЛАЧЕНЫ. Регенерации у бэнк-ролей НЕТ — в отличие от черновой стадии, где движок удваивает потолок
19:57:30 Контроль по прогону A: у него классификатор ответил 23/23, 21/21, 25/25 — все три батча чисто. это НЕ известное поведение. У A ноль провальных батчей, у B два из трёх. Атрибуции нет: между A и B 118 коммитов, а у DeepSeek разброс размышления ×163 при побайтно одном входе (квирки п.2)
19:58:23 Итоговая строка стадии: classify_batches_dropped=0 unanswered=0 bad_lines=0 consolidated=66 declined=0 ожидал, что итог назовёт два пустых батча СТРОКА-ИТОГ, которую читатель примет за вердикт стадии, ГОВОРИТ, ЧТО ВСЁ ЧИСТО. Кандидат в клетку «прибор смолчал» §4.6 — проверить кодом, о чём именно эти счётчики
19:58:23 ⚠ новый гигиенический WARN: «name/place rows carry a translated rendering — a label/rendering mismatch», rows=13 у A такого WARN в журнале нет ещё один сторож, появившийся между A и B
19:58:23 БАНК-СТОП: exit 3, awaiting_bank, surfaces=66, terms=0 пре-рег узел 10 узел наступил; ряд 224 воспроизведён (проекция банка видит 0 ровно тогда, когда экран открыт ради 66)
22:59 подпись двух термов через дверь правок: preview → на диске НИЧЕГО (проверено до и после), apply → mined-delta.yaml 906 байт пре-рег узел 12 оба состояния предъявлены файлом, а не экраном
РАЗБОР СТРОКИ-ИТОГА ПО КОДУ (internal/pipeline/terminologist.go:420,616,620): счётчик НЕ ЛЖЁТ, он НЕ СУЩЕСТВУЕТ. ClassifyBatchesDropped = crun.dropped считает батчи, выброшенные СВОИМ БЮДЖЕТОМ («its OWN budget cut a pass»), а не оплаченные батчи, вернувшиеся пустыми. unanswered/bad_lines итоговой строки принадлежат РЕНДЕР-проходу, не классификатору. ⇒ у стадии нет НИ ОДНОГО счётчика доли ответов классификатора, и единственный носитель факта — WARN посреди прохода. Бюджет тут ни при чём: classify_budget_usd: 1.00, потрачено $0.029749 наблюдаемость приоритета №1 имеет дыру ровно там, где стадия отчитывается о себе
20:00:37 ПОПРАВКА К СОБСТВЕННОЙ ЗАПИСИ, И ОНА МЕНЯЕТ КЛАСС НАХОДКИ. На резюме (попытка 2) тот же классификатор ответил 22/22 · 19/19 · 24/24 — все три батча чисто. Та же книга, тот же движок, тот же конфиг, четыре минуты спустя. провал попытки 1 был СТОХАСТИЧЕСКИМ, а не регрессией. Писать «регрессия между A и B» было бы верным результатом при неверной гипотезе. Настоящая находка ОСТРЕЕ: две стадии одного движка встречают ОДНУ И ТУ ЖЕ задокументированную вендорскую мину (разброс размышления ×163 на побайтно одном входе, квирки п.2) — у ЧЕРНОВОЙ есть лекарство (удвоение потолка) и WARN, у БЭНК-РОЛИ нет ни лекарства, ни счётчика. Цена на попытке 1: $0.024779 и 42 терма из 66 без машинного типа
20:01:25 terminology finished … consolidated=65 reclassified=7 classify_cost_usd=0.015564 второй заход стоил $0.033793 (рендер $0.018229 + классификация $0.015564) и пере-классифицировал 7 термов
20:01:26 edit wave started snapshot=9ae4e88aa354 units=4 workers=1, первый вызов deepseek-v4-pro max_tokens=16000 estimate_usd=0.068839 у A редактор стоил $0.230 из $0.419 дорогая стадия началась; снапшот редактора ОТЛИЧАЕТСЯ от черновикового (fef36e1dd642) — ось wave_selection будет непустой на обеих волнах
20:02:26 still waiting for the provider on a call in flight … waited=1m0s attempt_deadline=15m20s латентность pro у A доходила до 249 с движок сам печатает вахту по вызову — у зависания появляется цвет
ЛЕКАРСТВО ОТ МИНЫ ЕСТЬ, И БЭНК-РОЛИ НА НЕГО НЕ ЗАВЕДЕНЫ — предъявлено КОДОМ, а не догадкой. Регенерация живёт в runStage (internal/pipeline/stagerun.go:39), и там её ДВЕ: «regenerating with less thinking at the SAME budget» (ручка lower_effort_on_empty, лендится ВЫКЛЮЧЕННОЙ, D39.251) и «stage flagged, regenerating with a larger budget» (stagerun.go:235, работает). Бэнк-роли идут мимо: runBankAttempt зовёт r.runAttempt(...) НАПРЯМУЮ (internal/pipeline/terminologist.go:832), то есть без runStage и без обеих ветвей лечения. Комментарий рядом объясняет, почему у них нет обязательного ожидания, — про лечение он молчит черновая стадия лечится 4/4 (A) и 5/5 (B) одна и та же вендорская мина: у ЧЕРНОВОЙ стадии лекарство, у БЭНК-РОЛИ — ни лекарства, ни счётчика. Цена замерена: $0.024779 и 42 терма из 66 без машинного типа
20:03:21 edit ch1/chunk0 disposition=ok $0.048745 (115.7 с) у A первый редакторский был $0.034076 дороже, но ПРИНЯТ
20:04:36 edit ch1/chunk1 disposition=ok $0.035034 (74.4 с) 2 из 4 юнитов, оба чисто