Correct why the book's central nouns never reach the bank: emission takes only names, places and titles, and a one-rune term is dropped before any contrast is asked

This commit is contained in:
heaven 2026-09-12 00:57:52 +03:00
parent da89177600
commit 6dd26f6d09

View file

@ -357,5 +357,5 @@
| 436 | ⛔ **ИМЯ ВЕРДИКТА `split` УТВЕРЖДАЕТ БОЛЬШЕ, ЧЕМ МЕРЯЕТ ЕГО ПРЕДИКАТ — и первым же живым прогоном он оболгал подписанное имя героя.** Предикат (`backend/internal/pipeline/bookconsistency.go`, греп `func (v *verdictAcc) observe`) ставит `split`, когда в главе **попаданий МЕНЬШЕ, чем срабатываний** источника, либо не найдено ни одного. Читающий отчёт видит «термин разъехался», а сказано «нашли не каждое срабатывание» — это РАЗНЫЕ утверждения. ⛔ Замер прогона B: вердикт `split` по `方源` во всех трёх главах, тогда как в отгруженном тексте **58 вхождений в четырёх падежах и НОЛЬ конкурирующих транслитераций** (пере-снято оркестратором; голые «Фан» принадлежат другим термам банка — `方正`, `方之一脉`, `方家`, `方老魔`). ⇒ **самая тревожная строка приоритета №1 оказалась артефактом**, и владельцу её понесли бы как расхождение. ⚠ Родня ряду **434** (прибор не находит передачу у 26 термов из 69): вместе они означают, что **числа консистентности прогона B базовой линией НЕ являются до починки** | бэкенд | **скоро** | вердикт зовётся тем, что утверждает («не каждое срабатывание покрыто»), либо предикат усиливается до настоящего разъезда; падеж не считается второй передачей | прогон B, акт `D39.252` п.3 | | 436 | ⛔ **ИМЯ ВЕРДИКТА `split` УТВЕРЖДАЕТ БОЛЬШЕ, ЧЕМ МЕРЯЕТ ЕГО ПРЕДИКАТ — и первым же живым прогоном он оболгал подписанное имя героя.** Предикат (`backend/internal/pipeline/bookconsistency.go`, греп `func (v *verdictAcc) observe`) ставит `split`, когда в главе **попаданий МЕНЬШЕ, чем срабатываний** источника, либо не найдено ни одного. Читающий отчёт видит «термин разъехался», а сказано «нашли не каждое срабатывание» — это РАЗНЫЕ утверждения. ⛔ Замер прогона B: вердикт `split` по `方源` во всех трёх главах, тогда как в отгруженном тексте **58 вхождений в четырёх падежах и НОЛЬ конкурирующих транслитераций** (пере-снято оркестратором; голые «Фан» принадлежат другим термам банка — `方正`, `方之一脉`, `方家`, `方老魔`). ⇒ **самая тревожная строка приоритета №1 оказалась артефактом**, и владельцу её понесли бы как расхождение. ⚠ Родня ряду **434** (прибор не находит передачу у 26 термов из 69): вместе они означают, что **числа консистентности прогона B базовой линией НЕ являются до починки** | бэкенд | **скоро** | вердикт зовётся тем, что утверждает («не каждое срабатывание покрыто»), либо предикат усиливается до настоящего разъезда; падеж не считается второй передачей | прогон B, акт `D39.252` п.3 |
| 437 | **САМАЯ КРУПНАЯ ХУДОЖЕСТВЕННАЯ ПОТЕРЯ ПРОГОНА ИЗМЕРИМА ОДНИМ ВЫЧИТАНИЕМ, КОТОРОГО НИКТО НЕ ДЕЛАЕТ.** Замер оркестратора на прогоне B: абзацев в оригинале **233**, в отгруженном переводе **162** — сжатие **30 %** (контроль: 9021 знак оригинала против 30 283 перевода). Движок печатает `sentences/narrative-paragraph` и знает число абзацев только В ПЕРЕВОДЕ; числа абзацев ИСХОДНИКА у него нет, поэтому порога нет и флага нет. ⚠ Для ранобэ, где абзац — единица ритма и реплики, схлопывание трёх абзацев в один меняет темп сильнее, чем любая лексическая правка, и читатель это чувствует раньше, чем термины. ⇒ дешевле всех прочих приборов качества: две величины и одно деление | бэкенд | скоро | счёт абзацев ИСХОДНИКА рядом со счётом перевода + порог, при котором сжатие флагуется | прогон B, акт `D39.252` п.5 | | 437 | **САМАЯ КРУПНАЯ ХУДОЖЕСТВЕННАЯ ПОТЕРЯ ПРОГОНА ИЗМЕРИМА ОДНИМ ВЫЧИТАНИЕМ, КОТОРОГО НИКТО НЕ ДЕЛАЕТ.** Замер оркестратора на прогоне B: абзацев в оригинале **233**, в отгруженном переводе **162** — сжатие **30 %** (контроль: 9021 знак оригинала против 30 283 перевода). Движок печатает `sentences/narrative-paragraph` и знает число абзацев только В ПЕРЕВОДЕ; числа абзацев ИСХОДНИКА у него нет, поэтому порога нет и флага нет. ⚠ Для ранобэ, где абзац — единица ритма и реплики, схлопывание трёх абзацев в один меняет темп сильнее, чем любая лексическая правка, и читатель это чувствует раньше, чем термины. ⇒ дешевле всех прочих приборов качества: две величины и одно деление | бэкенд | скоро | счёт абзацев ИСХОДНИКА рядом со счётом перевода + порог, при котором сжатие флагуется | прогон B, акт `D39.252` п.5 |
| 438 | ⛔ **БАНК-РОЛИ ИДУТ МИМО ОБЕИХ ВЕТВЕЙ ЛЕЧЕНИЯ: у черновой стадии лекарство есть, у терминолога нет ни лекарства, ни счётчика.** Обе ветви живут в цикле `runStage` (`backend/internal/pipeline/stagerun.go`, греп `regenerating with less thinking` и `regenerating with a larger budget`), а `terminologist.go` (греп `return r.runAttempt`) зовёт попытку НАПРЯМУЮ. ⛔ Замер прогона B: на попытке 1 классификатор дал `asked=22 answered=4` (`length`, $0.012646) и `asked=24 answered=0` (`empty`, $0.012133) — **42 терма из 66 без машинного типа, оба провальных батча ОПЛАЧЕНЫ, регенерации не было**; у черновой стадии та же мина вылечена 5 раз из 5. ⚠ **Это СТОХАСТИКА, а не регрессия** (сказала сама зона): на резюме тот же классификатор ответил 22/22 · 19/19 · 24/24, у прогона A все три батча чисты. ⚠ И вторая половина — НАБЛЮДАЕМОСТЬ: итоговая строка печатает `classify_batches_dropped=0 unanswered=0`, и это не ложь, а ОТСУТСТВИЕ — счётчик считает батчи, выброшенные БЮДЖЕТОМ (комментарий `terminologist.go` сам предупреждает, что «unanswered читается как вердикт о ТЕРМАХ, когда он отчасти вердикт о ДЕНЬГАХ»), а счётчика доли ОТВЕТОВ нет ни одного; единственный носитель факта — WARN посреди прохода | бэкенд | **скоро** | банк-роль получает ту же ветвь регенерации, что черновая стадия, ПЛЮС счётчик доли ответов в итоговой строке | прогон B, акт `D39.252` п.9 | | 438 | ⛔ **БАНК-РОЛИ ИДУТ МИМО ОБЕИХ ВЕТВЕЙ ЛЕЧЕНИЯ: у черновой стадии лекарство есть, у терминолога нет ни лекарства, ни счётчика.** Обе ветви живут в цикле `runStage` (`backend/internal/pipeline/stagerun.go`, греп `regenerating with less thinking` и `regenerating with a larger budget`), а `terminologist.go` (греп `return r.runAttempt`) зовёт попытку НАПРЯМУЮ. ⛔ Замер прогона B: на попытке 1 классификатор дал `asked=22 answered=4` (`length`, $0.012646) и `asked=24 answered=0` (`empty`, $0.012133) — **42 терма из 66 без машинного типа, оба провальных батча ОПЛАЧЕНЫ, регенерации не было**; у черновой стадии та же мина вылечена 5 раз из 5. ⚠ **Это СТОХАСТИКА, а не регрессия** (сказала сама зона): на резюме тот же классификатор ответил 22/22 · 19/19 · 24/24, у прогона A все три батча чисты. ⚠ И вторая половина — НАБЛЮДАЕМОСТЬ: итоговая строка печатает `classify_batches_dropped=0 unanswered=0`, и это не ложь, а ОТСУТСТВИЕ — счётчик считает батчи, выброшенные БЮДЖЕТОМ (комментарий `terminologist.go` сам предупреждает, что «unanswered читается как вердикт о ТЕРМАХ, когда он отчасти вердикт о ДЕНЬГАХ»), а счётчика доли ОТВЕТОВ нет ни одного; единственный носитель факта — WARN посреди прохода | бэкенд | **скоро** | банк-роль получает ту же ветвь регенерации, что черновая стадия, ПЛЮС счётчик доли ответов в итоговой строке | прогон B, акт `D39.252` п.9 |
| 439 | ⛔⛔ **БАНК КНИГИ НЕДЕТЕРМИНИРОВАН ПО ПОСТРОЕНИЮ: он есть функция ЧЕРНОВИКА, а черновик — стохастический выход модели.** Замер сессии прогона B, пере-снятый оркестратором СВОИМ запросом и сошедшийся дословно: `retrieval_state.banknote_detail` двух прогонов на ОДНИХ И ТЕХ ЖЕ шести чанках, побайтно один исходник (sha среза сверена) и тождественный покупающий конфиг (sha `pipeline-c1.yaml` совпал) — предложений **A 98 · B 93 · общих 74 ⇒ ЖАККАР 0.63**. ⛔ **Расходится не только СОСТАВ, но и ГРАНУЛЯРНОСТЬ ключа:** на `ch3/1` прогон A предлагает СОСТАВНЫЕ (`丙等资质` · `族长家老` · `舅父舅母`), а B — их СОСТАВЛЯЮЩИЕ (`丙等` · `资质` · `族长` · `家老` · `舅母` · `舅父`); на `ch2/0` предложение B — строгое ПОДМНОЖЕСТВО A, беднее на восемь. Отсюда же исчезновение `舅父舅母`, которое встречается в исходнике **14 раз** и есть в банке A при отсутствии в B — частотным порогом это не объясняется. ⛔ **СЛЕДСТВИЕ СТАРШЕ РЯДА 436: консистентность мерится ПО СТРОКАМ БАНКА, а строки между прогонами разные ⇒ у `I1`/`I2` двух прогонов РАЗНЫЕ ЗНАМЕНАТЕЛИ, и они несравнимы не потому, что прибор плох, а по построению.** ⚠ И это прямо задевает цель 6 («воспроизводимый прогон — повторение без сюрпризов»): снапшот и голден стерегут ВХОД, а состав банка в них не заперт. ⚠ Границы замера названы сессией: одна книга, три главы, шесть чанков, ОДНА пара прогонов — установлен РОД расхождения (состав + гранулярность), не его обычная величина; как из предложений собирается финальный банк, не читал никто | бэкенд | **скоро** | состав банка воспроизводим при повторе прогона ЛИБО названо и ратифицировано, что банк стохастичен, и тогда числа консистентности сравниваются только ВНУТРИ прогона | прогон B, дописка 12.09 | | 439 | ⛔⛔ **БАНК КНИГИ НЕДЕТЕРМИНИРОВАН ПО ПОСТРОЕНИЮ: он есть функция ЧЕРНОВИКА, а черновик — стохастический выход модели.** Замер сессии прогона B, пере-снятый оркестратором СВОИМ запросом и сошедшийся дословно: `retrieval_state.banknote_detail` двух прогонов на ОДНИХ И ТЕХ ЖЕ шести чанках, побайтно один исходник (sha среза сверена) и тождественный покупающий конфиг (sha `pipeline-c1.yaml` совпал) — предложений **A 98 · B 93 · общих 74 ⇒ ЖАККАР 0.63**. ⛔ **Расходится не только СОСТАВ, но и ГРАНУЛЯРНОСТЬ ключа:** на `ch3/1` прогон A предлагает СОСТАВНЫЕ (`丙等资质` · `族长家老` · `舅父舅母`), а B — их СОСТАВЛЯЮЩИЕ (`丙等` · `资质` · `族长` · `家老` · `舅母` · `舅父`); на `ch2/0` предложение B — строгое ПОДМНОЖЕСТВО A, беднее на восемь. Отсюда же исчезновение `舅父舅母`, которое встречается в исходнике **14 раз** и есть в банке A при отсутствии в B — частотным порогом это не объясняется. ⛔ **СЛЕДСТВИЕ СТАРШЕ РЯДА 436: консистентность мерится ПО СТРОКАМ БАНКА, а строки между прогонами разные ⇒ у `I1`/`I2` двух прогонов РАЗНЫЕ ЗНАМЕНАТЕЛИ, и они несравнимы не потому, что прибор плох, а по построению.** ⚠ И это прямо задевает цель 6 («воспроизводимый прогон — повторение без сюрпризов»): снапшот и голден стерегут ВХОД, а состав банка в них не заперт. ⚠ Границы замера названы сессией: одна книга, три главы, шесть чанков, ОДНА пара прогонов — установлен РОД расхождения (состав + гранулярность), не его обычная величина; как из предложений собирается финальный банк, не читал никто**ПОСЫЛКА «ТОЖДЕСТВЕННЫЕ ВХОДЫ» НЕВЕРНА, снято 12.09 опровергателем и пере-проверено оркестратором.** Совпадение sha `pipeline-c1.yaml` было выдано за тождество входов: `diff -rq` двух фриз-деревьев даёт **52 расходящихся пути** (`chunkrun.go`, `stagerun.go`, `waverun.go`, `disposition.go`, `quality.go`, стеммер), и снапшоты РАЗНЫЕ (`cfd53cc0…` против `fef36e1d…`). ⚠ **Что при этом устояло и держит вывод:** `internal/miner` и `internal/terminology` между фризами **побайтно идентичны** (0 различий), langpack идентичен, `bankParseVersion` совпал, диф `models.yaml` — только комментарии. ⇒ **детерминированная половина не двигалась, двигалась ЧЕРНОВАЯ сторона — а она и производит банкноты.**Но ДОЛЯ расхождения, приходящаяся именно на температуру, ЭТОЙ парой прогонов не измерена и измерима быть не может: нужен повтор на ОДНОМ движке, и такого прогона нет. ⚠ И метод числа назвать обязательно: 0.63 — это сумма ПОЧАНКОВЫХ пересечений (74 из 98+9374); книго-уровневые множества дают 53 из 82 = **0.65**. Вывод переживает оба, число без метода — нет | бэкенд | **скоро** | состав банка воспроизводим при повторе прогона ЛИБО названо и ратифицировано, что банк стохастичен, и тогда числа консистентности сравниваются только ВНУТРИ прогона | прогон B, дописка 12.09 |
| 440 | ⛔ **МАЙНЕР ОТСЕКАЕТ ЦЕНТРАЛЬНЫЕ ТЕРМИНЫ КНИГИ ПО ПОСТРОЕНИЮ, А НЕ ПО ПОРОГУ — и это несовпадение ДВУХ РАЗНЫХ ВОПРОСОВ.** Формулировка сессии прогона B, принята дословно: **контраст спрашивает «характерно ли слово для ЭТОГО текста на фоне китайского вообще», а продукт спрашивает «нужна ли слову ОДНА закреплённая передача на всю книгу».** Для `家族` ответ на первый — НЕТ, на второй — ДА. Замер (контроль напечатан: словарь-контраст jieba 0.42.1, **349 046 строк**): `家族` · `族` · `炼制` · `楼阁` · `先机` · `老妈子`**ЕСТЬ в словаре-контрасте и потому НЕТ в банке ни одного из двух прогонов**, тогда как `方源` · `古月山寨` · `丫头片子` · `怀璧之罪` в словаре отсутствуют и в банк попали. ⇒ **шесть из восьми терминов, на которых читатель поймал разнобой, отсечены ПОТОМУ ЧТО ОНИ ОБЫЧНЫЕ КИТАЙСКИЕ СЛОВА.** ⛔ Цена названа текстом: `族` встречается в срезе **29 раз**, `家族`**9**, и «род ↔ клан» есть КРУПНЕЙШАЯ находка приоритета №1 за оба прогона. ⚠ Лечится в ПОЛНОТЕ МАЙНИНГА, а не в гейте: энфорсер не молчал — ему не о чем было говорить | бэкенд | **скоро** | у кандидата есть второй путь в банк — по внутрикнижной нагруженности (частота + разнобой передач), а не только по контрасту с общим языком | прогон B, §18.1(а) + дописка 12.09 | | 440 | ⛔ **МАЙНЕР ОТСЕКАЕТ ЦЕНТРАЛЬНЫЕ ТЕРМИНЫ КНИГИ ПО ПОСТРОЕНИЮ, А НЕ ПО ПОРОГУ — и это несовпадение ДВУХ РАЗНЫХ ВОПРОСОВ.** Формулировка сессии прогона B, принята дословно: **контраст спрашивает «характерно ли слово для ЭТОГО текста на фоне китайского вообще», а продукт спрашивает «нужна ли слову ОДНА закреплённая передача на всю книгу».** Для `家族` ответ на первый — НЕТ, на второй — ДА. Замер (контроль напечатан: словарь-контраст jieba 0.42.1, **349 046 строк**): `家族` · `族` · `炼制` · `楼阁` · `先机` · `老妈子`**ЕСТЬ в словаре-контрасте и потому НЕТ в банке ни одного из двух прогонов**, тогда как `方源` · `古月山寨` · `丫头片子` · `怀璧之罪` в словаре отсутствуют и в банк попали. ⇒ **шесть из восьми терминов, на которых читатель поймал разнобой, отсечены ПОТОМУ ЧТО ОНИ ОБЫЧНЫЕ КИТАЙСКИЕ СЛОВА.** ⛔ Цена названа текстом: `族` встречается в срезе **29 раз**, `家族`**9**, и «род ↔ клан» есть КРУПНЕЙШАЯ находка приоритета №1 за оба прогона. ⚠ Лечится в ПОЛНОТЕ МАЙНИНГА, а не в гейте: энфорсер не молчал — ему не о чем было говорить ⛔⛔ **ПРИЧИННОСТЬ ЭТОГО РЯДА ОПРОВЕРГНУТА 12.09 ЧТЕНИЕМ КОДА — механизм НЕ контраст.** `backend/internal/miner/miner_emit.go`, функция `emissionEligible`: **первым** стоит `if !hasAnyType(c.Types, "name", "place", "title") { return false }`, **вторым**`if c.Freq < emitMinFreq || subsumed[c.Src] || runeLen(c.Src) < 2`. ⇒ **`族` отсечён БЕЗУСЛОВНО как ОДНОРУННЫЙ**, к контрасту это отношения не имеет; **`家族` отсечён ТИПОМ** — у него 2 руны и freq 9 при `emitMinFreq` 5, то есть он проходит всё, на что ряд указывал, и падает на том, о чём ряд молчал. ⭐ **И настоящая находка ШИРЕ прежней: детерминированный канал по построению эмитирует ТОЛЬКО `name|place|title`.** Обычное существительное, несущее в книге (`家族` «род/клан», `炼制` «выплавить»), не может войти в банк этим каналом НИКОГДА — сколько бы раз оно ни встретилось. Это же объясняет, почему строк с провенансом `mined`-без-банкноты **ноль в обоих прогонах**: тип-фильтр так узок, что всё им пропущенное черновик называет и так. ⚠ Прежняя формулировка («ЕСТЬ в словаре-контрасте и ПОТОМУ НЕТ в банке») выдавала корреляцию 6 из 8 за механизм — класс назван и в `CLAUDE.md`. Нашёл опровергатель промта, пере-проверено оркестратором чтением функции | бэкенд | **скоро** | решение владельца: имеет ли право обычное существительное входить в банк детерминированным каналом, и если да — каким признаком, кроме типа | прогон B, §18.1(а) + дописка 12.09 |