books/gu-zhenren/rerun2/RERUN_REPORT.md

153 lines
17 KiB
Markdown
Raw Permalink 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.

# Пере-прогон rerun2 — отчёт (蛊真人, главы 15, zh→ru)
**Сессия:** операционная, пост-D39.19 (промт `docs/PERERUN_SESSION_PROMPT.md`). **Дата:** 2026-07-23.
**Стенд:** `/home/ubuntu/books/gu-zhenren/rerun2/` (всё ВНЕ git). `backend/`+`docs/` — не трогались (read-only).
**Прогон:** ОДИН `--resnapshot` fresh-translate среза глав 15 через прод-стек D38.5, три арма редактора.
---
## 0. Итог одной строкой
Прод-путь отработал чисто. **Несущий инвариант D39 «переоплата ОДНА» подтверждён живьём: драфт-волна оплачена ОДИН раз ($0.0109) и резюмится за $0 во всех трёх армах редактора** (0 новых draft-вызовов на арм; draft-снапшот `4ed6cdd97fae` бит-стабилен). Эхо-мины нет нигде (echo_draft=0, echo_edit=0). Три арма разошлись по качеству: glm-5 — чистый (0 флагов), mistral — дешёвый но рубленее и хуже по глоссарию, deepseek-pro — лучшая структура/глоссарий, но 3 катастрофы CJK-leak (оставляет китайские заголовки глав).
---
## 1. Деньги — реальный итог эксперимента (леджер)
Реальные траты = сумма ОТДЕЛЬНЫХ вызовов (драфт — один раз; каждый арм — своя edit-волна; судья). Пер-DB `committed` НЕ суммировать — арм-DB это КОПИИ базового (несут скопированный glm-edit; двойной учёт).
| Волна / арм | Модель | Вызовы | $ (реальные) |
|---|---|---|---|
| Драфт-волна (единожды) | deepseek-v4-flash (thinking-ON) | 10 | **$0.010931** |
| Edit — арм base | glm-5 | 7 | **$0.076583** |
| Edit — арм mistral | mistral-large-2512 | 7 | **$0.040093** |
| Edit — арм deepseek-pro | deepseek-v4-pro | 7 | **$0.040555** |
| Судья-риг (probe+floor+cat+pairwise) | gemini-3.1-pro-preview + grok-4.3 | 140 | $6.461700 |
| **ИТОГО ЭКСПЕРИМЕНТА** | | | **$6.633102** |
Реальный API-расход = пайплайн $0.171402 + судья $6.461700 = **$6.63** — под потолком $15 книжным/дневным. Судья — доминирующая статья (полные окна + gemini thinking + grok-фолбэк на 3-0). Порог «50% до конца base edit» ($7.50) не сработал (к концу base-edit потрачено <$0.09). Прогон завершён 23.07; платных deepseek-вызовов на 24.07 (катовер слагов) нет — прайс-ре-чек не требуется (судья на gemini/grok).
**Пер-арм COGS-проверка (5 глав):** glm $0.0766 · mistral $0.0401 · deepseek-pro $0.0406. Свап-армы дешевле базы (совпадает с планом 11 §6(g): свап-редакторы дешевле glm).
---
## 2. Подтверждение $0-резюма драфта (несущий D39-инвариант)
На КАЖДОМ из трёх армов `translate --resnapshot` резюмил драфт-волну за **$0.000000** — ни одного нового вызова deepseek-v4-flash:
| Арм | draft model-calls в прогоне | draft committed | draft snapshot |
|---|---|---|---|
| base (glm) | **0** (все «stage resolved from chunk_status») | $0.010931 (без изменений) | 4ed6cdd97fae |
| mistral | **0** (grep подтверждён) | $0.010931 | 4ed6cdd97fae |
| deepseek-pro | **0** | $0.010931 | 4ed6cdd97fae |
Механика: mined_delta = `Source:mined` → двигает ТОЛЬКО enriched (edit) снапшот; base-банк (draft) не меняется → `baseMemoryVersion` стабилен → draft-чекпоинты под `snapshot_draft` не пере-гоняются. Каждый арм = отдельный `snapshot_edit` (glm `211b6aac48ea` / mistral `e71b99087601` / deepseek-pro `d769c9f7d51d`), edit пере-пиннится+пере-оплачивается, draft — нет. Армы гонялись на КОПИЯХ базового DB (draft-чекпоинты переиспользованы, не пере-оплачены).
---
## 3. Майнинг-стоп (W1.5) и ТАЧПОЙНТ №1
Драфт-волна → банк-майнинг-стоп (`exit 3` = `WaveSignatureStop`), карта у `guzhenren-rerun2.db.mined-signature.yaml`. Предложено **3 новых терма** (сверх 52 подписанных из exp16-карты — все 52 уже в seed-v2, майнер их исключил).
| Терм | occ | Что это | Решение владельца |
|---|---|---|---|
| 和智慧 | 7 | ложное срабатывание (和=«и»; строка «力量蛊和智慧蛊») | **reject** → mined_rejects |
| 花海 | 8 | нарицательное «море цветов» (поле 月兰花) | **reject** → mined_rejects |
| 陈博 | 6 | второстеп. персонаж (古月陈博, провалил тест) | **promote** → «Чэньбо» (m), alias 古月陈博 |
Плюс владелец добавил 2 гу-типа, которые майнер не поймал/сегментировал неверно (за 和智慧 спрятаны): **智慧蛊→«гу Мудрости», 力量蛊→«гу Силы»** (третья пара 人祖三蛊, консистентно с seeded 希望蛊→«гу Надежды»).
**Счётчики майнинг-стопа:** предложено 3 · покрыто exp16-картой 0 (все её термы уже в seed) · резидуал 3 (2 reject + 1 promote) · доп. добавлено 2. Merged seed+mined lint (60 термов) = 0 коллизий. Пере-запуск → дельта пуста → auto-continue.
**Материализация в выводе (проверено):** 南疆→«Южные земли» (гл.4), 陈博→«Гуюэ Чэньбо» (гл.4), 力量蛊/智慧蛊→«гу Силы»/«гу Мудрости» (гл.5) — все отработали.
---
## 4. Детерминированные сигналы качества (наблюдаемость, не гейт) — по армам
| Сигнал | glm-5 (base) | mistral | deepseek-pro |
|---|---|---|---|
| edit $ | 0.0766 | 0.0401 | 0.0406 |
| hard-флаги | **0** | **0** | **3** (sanitizer_stripped) |
| exit code | 0 | 0 | 2 (completed-with-flags) |
| echo_draft / echo_edit | 0 / 0 | 0 / 0 | 0 / 0 |
| structure: предл./нарратив-абзац | 2.65 | 2.16 (рубленее) | **3.43** (лучшая) |
| dialogue-dash | 4 | 1 | 0 |
| glossary-misses | 3 | 5 (худшая) | **1** (лучшая) |
| cosmetic-strip units | 0 | 0 | **3 (42.9%)** |
| post-check miss | 0 | 0 | 1 (开窍) |
**deepseek-pro — 3 катастрофы CJK-leak** (санитайзер D30.3 поймал и вырезал, флаг+skip; сырьё в export НЕ течёт):
- гл.1/чанк0: `第一节`, `纵身亡魔心仍不悔` (маркер+заголовок главы оставлены по-китайски)
- гл.4/чанк0: `第四节`
- гл.5/чанк0: `改善`
Т.е. deepseek-v4-pro как редактор оставляет китайские заголовки глав в русском выводе — санитайзер их стрипает → у этих глав в export может отсутствовать заголовок. glm/mistral заголовки переводят («Глава 1…», «Раздел 2…»). Мелочь глазами (glm): `открыл их again` (гл.1, латиница), `войть` (гл.2), `Вперди` (гл.3) — авто-QA поймал `again`.
**Сигналы бэкенда идут РЯДОМ с вердиктами судьи (§6), НЕ сливаются в одну цифру** (без сфабрикованной сходимости).
---
## 5. Время волн
| Волна | старт→конец (UTC) | длит. |
|---|---|---|
| Драфт (10 чанков, 4 воркера) | 19:35:52 → 19:37:14 | ~82 с |
| Edit base glm-5 (7 ед., 4 воркера) | 19:47:45 → 19:49:48 | ~123 с |
| Edit mistral (7 ед., rate-guard=2) | 19:53:26 → 19:56:03 | ~157 с |
| Edit deepseek-pro (7 ед., thinking) | 19:56:20 → 19:58:39 | ~139 с |
mistral медленнее из-за rate-guard (max_concurrency 2 вместо 4) — но **ноль retry-fails** (без гуарда полигон ловил ~48%). Гуард отработал.
---
## 6. Судья-риг (D39.7) — gemini-3.1-pro-preview (+ grok-4.3 фолбэк)
Полные окна (без обрезки), per-vote JSONL, position-swap, катастроф-скрин ко ВСЕМ армам, floor-пасс. **140 вызовов, $6.4617** (105 gemini + 17 grok-фолбэк + ранние без judge-тега); 0 аномалий. Рига — `eval/rerun2_judge/judge.py`, результаты — `judge/judge_results.json`, per-vote — `judge/votes_*.jsonl`.
**Аномалия→вендор-дока (правило двух направлений):** на ед. 3-0 (сцена Шэнь Цуй, мягкий сексуальный подтекст) gemini fail-closed `content_filter: PROHIBITED_CONTENT` — задокументированный квирк D22.6 (Gemini 3.x неконфигурируемо фейлит на сексуальном; судья такого — Grok). НЕ гадал: добавил grok-4.3-фолбэк (кросс-семейный к zh→ru редакторам, не author==reviewer) → ед. 3-0 судил grok.
**Floor (judge-noise): 14/14 tie на identical-тексте → шум 0.** Судья ни разу не предпочёл идентичное идентичному → pairwise-предпочтения = реальный сигнал (floor не мешает).
**Pairwise (56 игр/арм, win=1/tie=0.5):**
| Арм | win-rate | очки |
|---|---|---|
| **deepseek-v4-pro** | **0.679** | 38 |
| glm-5 | 0.589 | 33 |
| mistral | 0.232 | 13 |
Head-to-head: glm>mistral **22:6** · dspro>glm **17:11** · dspro>mistral **20:6**. **Ранг: dspro > glm >> mistral.** Order-consistency: flip-rate 0.214 (79% устойчивы к перестановке) — сильные предпочтения (обе руки ≫ mistral) переживают; зазор glm-vs-dspro (17:11) ближе к шуму.
**Катастроф-скрин (dedicated, по армам):** glm 5/7 · mistral 6/7 · dspro 5/7 — но по ТЯЖЕСТИ расходятся кардинально:
- **mistral — CRITICAL:** пропуск целого абзаца (про природу гу, 2-0), пропуск заголовков глав (4-0/5-0) и имён (古月藻榭), числа (千万→«тысячи», 数十万→«десятки тысяч»), искажение смысла (资质→«Ресурсы»), **катастрофа сюжета** (4-1: приписал жульничество 陈城→Фан Юаню, сломал родство), систематически теряет 蛊师. → наименее верный.
- **glm — MAJOR:** только 时辰-единицы + сломанные словоформы («глава клан»/«войть»/«было десятки») + латиница («again»). НИ ОДНОГО пропуска/числа/искажения смысла. → наиболее верный по содержанию.
- **dspro — MAJOR:** урон от CJK-strip (пропали заголовки 第一/四/五节), сломанное «лять» (из 改善), **ошибка рода в диалоге** (1-0: реплика обесчещенной женщины → от муж. лица).
- **Дисконт:** ед. 3-0 у ВСЕХ трёх — ложная катастрофа (grok не знал сид-конвенции 甲乙丙丁→А/Б/В/Г, счёл верное «класс В» ошибкой). Не считать против армов.
**СИСТЕМНАЯ находка (ко ВСЕМ армам, draft-уровень) → ПИНГ ОРКЕСТРАТОРУ:** 时辰 переведён как «час» (三个时辰=6ч→«три часа»; 半个时辰=1ч→«полчаса»). Дефект ЧЕРНОВИКА (deepseek-v4-flash translator), редакторы не чинят. Глоссарий/промпт: 时辰=2 часа. Класс из пере-прогонного дефект-леджера D39.8.
**Вывод (метрики НОМИНИРУЮТ, чтение РАТИФИЦИРУЕТ):** судья ставит **dspro** первым по прозе/верности (лучшая структура 3.43 + лучший глоссарий), НО у dspro урон от CJK-strip (пропавшие заголовки) — чинибельный дефект санитайзера/промпта, не фундамент. **glm — безопасный чистый второй** (0 hard-флагов, наиболее верный по содержанию). **mistral — вон** (критические пропуски/искажения, которые детерминированные гейты НЕ ловят). Backend-сигналы (§4) и судья РАЗОШЛИСЬ по mistral (детерм.: «0 флагов, чисто»; судья: worst) — расхождение ОЖИДАЕМО и ИНФОРМАТИВНО (гейты ловят echo/CJK/преамбулы/стиль, НЕ пропуски/числа/смысл), сигналы РЯДОМ, не слиты (без сфабрикованной сходимости).
---
## 7. Блайнд-пакет (D39.8) — ТАЧПОЙНТ №2
`blind/blind_read_packet.md` — 3 версии каждой главы (A/B/C), метки **перетасованы пер-главно** (защита от кросс-главной де-анонимизации), исходник для сверки, авто-QA перед читателем. Ключ соответствия — `blind/blind_read_KEY.json`, **владельцу до вердикта не показан**. Экстракция только через `tmctl export` (инвариант №8).
---
## 8. Девиации от промта (списком, с обоснованием)
1. **mined_delta пуст + 2 правки в seed, а не «карта→mined_delta».** Все 52 подписанных терма exp16-карты УЖЕ в seed-v2; литеральная загрузка в mined_delta = крэш прогона (`UNIQUE(book_id,src,sense,since_ch,until_ch)` без `source`; плоский INSERT — `store/migrate.go:202`, `glossary.go:134`). Правки владельца 南疆/青丝蛊 применены к копии seed (`guzhenren-seed-rerun2.yaml`). Согласовано с владельцем на гейте. mined_delta наполнен живьём на майнинг-стопе.
2. **Срез = только главы (第一节→), без метадаты-преамбулы.** Выбор владельца на гейте (чище для чтения; преамбульные термы всё равно в seed).
3. **budget_usd=3.0** (не снапшот-фолдится) — включает draft echo-эскалацию (D22.11); **waves.workers=4** (транспорт, не снапшот).
4. **Армы через КОПИИ базового DB** (draft переиспользован → $0). Пер-DB `committed` двоит скопированный glm-edit — реальный итог считаю по отдельным вызовам (§1).
5. **Судья max_tokens 12000→20000** — на крупной ед. (гл.3/ч0) gemini thinking+удвоенное окно упирались в 12000 → `finish=length`, пустой content. Поднял + None-safe. Полный A0↔A0' independent-regen floor DEFER (interim; ратифицирует чтение владельца) — floor замерен как position-bias на identical-тексте.
**Прочее:** B2-предупреждение `культивация ← 修炼/修行` — намеренная черта seed (владелец свёл оба к «культивация»), наблюдаемость, не дефект. Все три арма: `finish=stop` только, аномалий провайдера ноль (кроме судейского max_tokens, вылечено).
---
## 9. Что в едином `--resnapshot` (манифест §8)
seed-v2 + 2 правки (南疆/青丝蛊) · langpack zh/zh-ru (palladius) · mining.contrast (jieba) · translator.md v1-reflow · editor.md v3-discourse-reflow · sanitizer ON · segmentation (draft 1797 / edit 3200 / fertility 1.1978·cjk+0.3852) · mined-delta (陈博/智慧蛊/力量蛊, Source:mined, только edit-снапшот). Draft-снапшот `4ed6cdd97fae` · edit-снапшоты пер-арм.