Narrow three claims to what the code shows, drop a count that was wrong twice, and mark the row whose half landed unnoticed

This commit is contained in:
heaven 2026-09-06 15:58:03 +03:00
parent d8f723fa2b
commit b5cdd3dc11

View file

@ -329,7 +329,7 @@
| 273 | **ПАР-ШОВ ЛОМАЕТСЯ АСИММЕТРИЧНО: промпт-пак падает ГРОМКО, целевые ДАННЫЕ выключаются МОЛЧА — вместе с банком.** Отсутствие промптов пары — жёсткая ошибка загрузки («never silently substitute another pair's conventions»). Отсутствие ЦЕЛЕВЫХ данных — тишина в трёх местах: `lang.InjectionTextsFor` на незнакомом таргете возвращает пустое, обе банк-инъекции рендерят пустоту (`if !tx.HasData() { return "" }`), `LoadReaderWords` отдаёт значки вместо слов без ошибки. ⇒ Книга на новый таргет переводится ЦЕЛИКОМ и за ПОЛНЫЕ деньги, но БЕЗ банка-как-закона — то есть без единственного механизма, держащего термины консистентными на всю книгу, без $0-чекеров цели и с пометками из значков в выданном файле. Ни ошибки, ни варнинга, ни поля в отчёте сборки. ⚠ Строка 32 закрыта формулировкой «инертна ПО ОТСУТСТВИЮ данных» — для ЧЕКЕРОВ это хорошо, для БАНК-инъекции такого вывода не делал никто | бэкенд | скоро (гейт второй пары) | префлайт готовности таргета: банк-данные есть ⇒ работаем, нет ⇒ громко | критик полноты стратегии 04.09 |
| 275 | ⚠ **ПЕРЕ-СНЯТА 05.09 СЛОВОМ ВЛАДЕЛЬЦА — прежняя формулировка «КАЧЕСТВО НЕ МОЖЕТ СТАРТОВАТЬ ВООБЩЕ» БЫЛА НЕВЕРНА (ошибка оркестратора).** Она называла четыре гейта; из них **три сняты словом владельца, четвёртый гейтом не был** (разбор — `D39.198`): **13а** веса рубрики НЕ НУЖНЫ — веса меряют РАЗНЫЕ узлы (консистентность — банк памяти, выдумки — редактор, художественность — редактор И черновик), единого веса быть не может, а одно взвешенное число измеряет, но не ДИАГНОСТИРУЕТ · **24** профили голоса — приоритет №3, подписи владельца не требуют («зачем мне это подписывать») · **149** разморозка панели не нужна: пока идут доработки, менять жильцов ролей незачем · **55** прогоняем на ТЕХ ЖЕ текстах (мастер Гу, Жан-Кристоф), оговорка про претрейн остаётся ОГРАНИЧЕНИЕМ ВЫВОДА, а не требованием новой книги. **ЧТО ОСТАЁТСЯ ЖИВЫМ В ЭТОЙ СТРОКЕ:** привязать каждый класс дефекта к УЗЛУ и мерить по узлам; поставить порог остановки для приоритетов №1 и №2 (разъехавшийся термин — стоп, выдумка — стоп, сухая фраза — не стоп). ⚠ Консистентность проверяема ДЕТЕРМИНИРОВАННО за $0 — это ГЕЙТ, а не строка рубрики; ближайший её носитель — строка **267** | полигон+бэкенд | скоро | привязка классов к узлам + пороги остановки для №1 и №2 | решение владельца 05.09, `D39.198` |
| 276 | ⭐ **ФОРМА ЗАКАЗА ПЕРЕВОДА — решение владельца 05.09, ратифицировано D39.196.** На аккаунте **баланс в ДЕНЬГАХ** и он виден. Человек стартует перевод; хочет задать потолок — тянет ползунок **в деньгах**; рядом ответ на его настоящий вопрос: **хватает на полную книгу или нет**. Хочет задать объёмом — второй ползунок: **ГЛАВЫ когда книга распозналась**, **ЗНАКИ когда нет** (о нераспознавании говорим ЯВНО). Старт = **холд с баланса**. Отдельная кнопка **«перевести книгу целиком»** — за целую книгу оценка точнее, чем за произвольный кусок. ⚠ **Две ручки связаны проекцией:** объём — ЗАКАЗ (главная), деньги — ЛИМИТ (вторая); тронутая последней ограничивает, другая пересчитывается и показывается производной («5 глав ≈ $0.55, зарезервируем до $0.8»); минимум денежного ползунка = неделимый шаг движка, чтобы ползунком нельзя было выразить невозможный заказ. Не тронута ни одна ⇒ заказ = вся книга. ⚠ **Цифра на экране — ПАРА, а не точка:** «ожидаемо ≈ $1.1, зарезервируем до $1.6, спишем по факту», и закрытие фактом после прогона — проекция имеет дисперсию (редакторские вызовы 2590 % worst-case), точечное число превратится в «сказали 1.14, списали 1.31». Главный ответ — фраза, цифра рядом и мельче. ⚠ **Запрет «денег в UI» ОТОЗВАН владельцем** (D39.196 п.2): виден баланс, потолок, холд; цены моделей и стадий — нет. «Страница» из контракта убирается совсем — владелец назвал ЗНАКИ, форматирование «≈67 стр.» это локаль фронта. Исполнение — **279283** (⚠ испр.: 277 и 278 ПОСТРОЕНЫ лендингом `81a89e9` и сняты) | движок+платформа+фронт | скоро | решение принято и ратифицировано D39.196; исполняется **279283** (277 и 278 закрыты) | решение владельца 05.09 + сведение с внешним рецензентом |
| 279 | **ШАГ 3, КОНТРАКТ (минор, полоса ломающих правок мажора 0 законна): заказ объёмом.** `ceiling_chapters``chapters` со смыслом ОБЪЁМА (`null` = вся книга) · `CeilingBounds{min,max,default}``OrderOptions{chapters_left, affordable_chapters, verdict: covers_all|covers_part|covers_none, blocked}` · `PausedReason` += `run_limit_reached``credit_exhausted` СТАНОВИТСЯ правдой — сегодня лжёт при 34% баланса, наблюдение H14) · `Run` += `ordered_chapters`/`delivered_chapters`. ⚠ Фразы — ДАННЫМИ по коду причины и локали, не литералом. ⚠ **ПЕРЕ-СНЯТО 05.09 под D39.196:** наружу ВЫХОДЯТ баланс, потолок заказа и холд — деньгами; контракт получает `balance`, `estimate{expected, hold}` под выбранный заказ, границы денежного ползунка `{min: неделимый шаг, max: баланс}` и `shortfall` у паузы; процент остатка остаётся СИГНАЛОМ «мало/пусто». НЕ выходят: цены моделей, стоимость стадий и вызовов, структура НАШИХ расходов. Плюс `OrderOptions` обязан нести ТРИ вида заказа (вся книга · знаки · до главы N), а не только главы. Ремедиа-таблица `resumeRun` упрощается: «Продолжить» — новый прогон ТОГО ЖЕ заказа | контракт | скоро | минор контракта одним актом с платформенной половиной | согласование 04.09 |
| 279 |**ПРОТУХЛА — испр. 06.09: половина ИСПОЛНЕНА без пометки, половина осталась остатком без имени.** Форма `OrderOptions` (`chapters_left`, `affordable_chapters`, `verdict`) стоит в каноне с минора 0.11.0, а `shortfall` в каноне ОТСУТСТВУЕТ (ноль вхождений); тело `D39.208` строку не называет, ✅ не стоит. Класс `D39.167` п.1: акт лендинга обязан быть сверен со строками. ⇒ разделить: исполненное пометить, остаток `shortfall` назвать своим предметом. **ШАГ 3, КОНТРАКТ (минор, полоса ломающих правок мажора 0 законна): заказ объёмом.** `ceiling_chapters``chapters` со смыслом ОБЪЁМА (`null` = вся книга) · `CeilingBounds{min,max,default}``OrderOptions{chapters_left, affordable_chapters, verdict: covers_all|covers_part|covers_none, blocked}` · `PausedReason` += `run_limit_reached``credit_exhausted` СТАНОВИТСЯ правдой — сегодня лжёт при 34% баланса, наблюдение H14) · `Run` += `ordered_chapters`/`delivered_chapters`. ⚠ Фразы — ДАННЫМИ по коду причины и локали, не литералом. ⚠ **ПЕРЕ-СНЯТО 05.09 под D39.196:** наружу ВЫХОДЯТ баланс, потолок заказа и холд — деньгами; контракт получает `balance`, `estimate{expected, hold}` под выбранный заказ, границы денежного ползунка `{min: неделимый шаг, max: баланс}` и `shortfall` у паузы; процент остатка остаётся СИГНАЛОМ «мало/пусто». НЕ выходят: цены моделей, стоимость стадий и вызовов, структура НАШИХ расходов. Плюс `OrderOptions` обязан нести ТРИ вида заказа (вся книга · знаки · до главы N), а не только главы. Ремедиа-таблица `resumeRun` упрощается: «Продолжить» — новый прогон ТОГО ЖЕ заказа | контракт | скоро | минор контракта одним актом с платформенной половиной | согласование 04.09 |
| 280 | ✅ **ИСПОЛНЕНО ЛЕНДИНГОМ 06.09 — акт `D39.208`.** Заказ живёт на КНИГЕ и хранится ИДЕНТИЧНОСТЬЮ (`books.ordered_through_chapter_id`), а не ординалом; холд считается от проекции движка; `--max-units` едет в argv. ⚠ **Кроме ОДНОЙ позиции, от которой зона отказалась с доводом и которая живёт отдельно:** денежный ползунок объявлен на проводе, но отправить его нечем, и оценки под ВЫБРАННЫЙ заказ нет. Прежняя редакция ряда: **ШАГ 4, ПЛАТФОРМА: заказ живёт на КНИГЕ, холд считается от проекции, `--max-units` наконец едет в argv.** `books.ordered_through_chapter` (null = вся книга) — сегодня интент живёт на ПРОГОНЕ, оттого и неловкость «поднять лимит = НОВЫЙ прогон с бо́льшим `ceiling_chapters`»; с заказом на книге «Продолжить» после пополнения тривиален, и дверь пере-прохода встаёт рядом вторым типом заказа. Холд = `min(баланс, проекция × k)`; `bookCap = committed + холд` (`PD-158` цел). В argv добавляется `--max-units` = сумма юнитов заказанных глав минус доставленные. Удаляются `DefaultPerChapter`, `Scale` и `draftWork`: план движка становится РАВЕН заказу, и «черновики на весь потолок при нуле готовых глав» исчезает структурно. Закрывает `PD-410`, `PD-440`, `PD-446`. ⚠ **ПРЕДУСЛОВИЕ, названное отдельно: `PD-422`**`--resnapshot` передаётся УСЛОВНО, а условие ставит только правка банка; рост авто-банка от майнинга флага не ставит. Частичный заказ на майнящей книге растит банк ⇒ следующий заказ без `--resnapshot` умрёт на снапшот-гарде, холд взят, попытка сожжена. Взять В ТОТ ЖЕ пак | платформа | скоро | заказ на книге + холд от проекции + проводка `--max-units` + PD-422 | согласование 04.09 |
| 281 | **ЗАМЕР: сколько наших денег стоит тысяча ПЛОТНЫХ и тысяча РАЗРЕЖЕННЫХ знаков по стадиям и парам.** Цель — НЕ константа (D39.165 п.1г прямо запрещает ставку константой), а **дисперсия проекции**: коэффициент k для холда и честность вердикта «хватит ли». Снимать есть из чего и это $0: `find -L books` даёт 162 базы прогонов, в `request_log` лежат `chapter · chunk_idx · stage · prompt/completion_tokens · cost_usd · tm_hit`, исходник по юниту отдаёт `tmctl export --pairs` бесплатно. Метод: по юниту плотные/разреженные знаки против суммы `cost_usd` при `tm_hit=0`, по стадиям; хвост ретраев и эскалаций считать ОТДЕЛЬНО; базы до 16.08 пере-прайсить по токенам. ⚠ Гейт для коэффициента холда в строке 280 | полигон | скоро (гейт строки 280) | замер по 162 базам, $0 | согласование 04.09, вторая редакция |
| 282 | ⛔ **ЧИСЛО, ПОДПИСАННОЕ «ЗНАКОВ», СЧИТАЕТ РУНЫ ПОТОКА ЗАПИСИ ФАЙЛА — что для UTF-8 txt И ЕСТЬ знаки, а для EPUB даёт руны ZIP-АРХИВА.** ⚠ Заголовок первой редакции («считает байты») — противоположная полуправда, испр. 05.09: ложно оно для EPUB, GB18030 и UTF-16, а не всегда. Проверено оркестратором по коду: `platform/internal/books/books.go`, греп `type counter` — счёт идёт по не-продолжающим байтам UTF-8 ПОТОКА ЗАПИСИ файла, а не по тексту; там же комментарий признаёт приближение для GB18030. Наружу уходит как `character_count` (`platform/internal/httpapi/v0.go`), на экране подписано `'about.characters': 'Знаков'` (`frontend/src/i18n/ru.ts`). ⇒ Живая ложь на продуктовом экране, и она же — вторая ненадёжная единица, найденная тем же вопросом «откуда берётся число». **Основой страницы быть не может.** Лечение: переименовать в размер файла ЛИБО заменить манифестной суммой знаков движка — ✅ **источник ПОСТРОЕН**: `source_chars` по юниту в `manifest --json` (лендинг `81a89e9`, акт D39.206; строка 278 закрыта и снята). Остаток строки — платформенная половина: взять число и снять ложную подпись. ⚠ Фронт заморожен — подпись правится при разморозке, число на платформе раньше | платформа+фронт | скоро | снять ложную подпись + заменить источник на манифест движка | согласование 04.09; проверено оркестратором по коду |
@ -376,16 +376,16 @@
| 317 | **У ЧИСЛА, СТОЯЩЕГО В КАНОНЕ, НЕТ ПРИБОРА В РЕПОЗИТОРИИ.** `D39.214` п.6 цитирует замер «сканер по 193 свойствам схем канона, три правила, семь флагов, пять ложных, два настоящих». **Сканер не закоммичен** — проверено грепом 06.09. ⇒ ни «193», ни «семь» не воспроизводимы никем, включая автора. ⛔ **ПОДОЗРЕНИЕ НА НЕПОЛНОТУ СКАНА СНЯТО 06.09 — И СНЯЛ ЕГО ТОТ, КТО ПРИНЁС.** Сначала агент верификатора пере-выполнил три правила по описанию и получил **двенадцать** флагов; это читалось как «зона что-то не досмотрела». Верификатор довёл зацепку до замера сам: **189 свойств, 9 уникальных флагов** — ровно зонные ПЯТЬ ложных плюс `Chapter.number` (настоящая находка, уже диспозиционированная) плюс три `EventStatus.*_reason`, **которые оказались дефектом ЕГО реализации**: правило читало `description` самого поля и не читало РОДИТЕЛЬСКИЙ объект, документирующий все три разом (`docs/architecture/14-api-contract/openapi.yaml:3123`=`unless its own status`). ⇒ **знание там не расщеплено, а централизовано — сказано один раз на три поля, и это лучше, чем трижды.** Семёрка зоны ВЕРНА, пропущенного нет. ⚠ И `OrderOptions.structure` прибор больше не флагует — потому что зона его починила. ⇒ **дефект этой строки — НЕВОСПРОИЗВОДИМОСТЬ числа, а не его неверность**, и срочность соответствующая. ⭐ **Та же форма, что норма «число называет ДЕРЕВО и ПОПУЛЯЦИЮ», только про ИНСТРУМЕНТ:** одноразовый скрипт, давший число в канон, обязан ехать в репозиторий вместе с числом — иначе замер неотличим от утверждения. ⇒ заказ: либо сканер ложится в `platform/` (или `docs/scripts/`) и число пере-снимается им, либо число в каноне помечается как невоспроизводимое. ⚠ Принёс верификатор ПОСЛЕ своего «ок», прямо сказав «это зацепка, а не находка, и опровержением зоны я это не считаю» | платформа+оркестратор | когда-нибудь | число в каноне пере-снимается прибором, лежащим в дереве | **D39.214** |
| 318 | ⛔ **ПОСТЧЕК БАНКА ОБЕЩАЕТ ЛОВИТЬ СТРАХ ВЛАДЕЛЬЦА И МОЛЧИТ РОВНО ТОГДА, КОГДА ТОТ СБЫВАЕТСЯ.** Комментарий `backend/internal/membank/mempostcheck.go:14-16`=`we injected the wrong dst and the model obeyed it` объявляет, что промах ловит ОБЕ беды — «модель проигнорировала глоссарий» И «мы вложили неверный dst, и модель его исполнила (страх владельца)». Код делает обратное: `present := dstFormPresent(...)`, затем `if present { continue }`**исполненная неверная строка ПРИСУТСТВУЕТ в выводе, значит промах не пишется**. ⇒ чем послушнее модель исполнила ложь, тем надёжнее прибор молчит; метрика «нет постчек-миссов» означает «банк ИСПОЛНЕН», а читается как «исполнен ВЕРНО». ⚠ Независимое подтверждение в дереве: `docs/experiments/18-editor-wire-probe.md` — «Механизма, который это ловит, в пайплайне нет». ⚠ **Вред реплицирован ДВАЖДЫ на разных проводах и моделях** (`research/24`, транслятор-провод, принято `D39.102`; `experiments/18`, редакторский, принято `D39.108`): неверная строка принята 6/6 и вытеснила верную 5/6. ⇒ немедленно и дёшево — **привести комментарий к тому, что код делает** (правка комментария в хеш не входит); отдельно и дороже — недостающий ДЕТЕКТОР правильности значения. ⛔ Ослаблять `D39.104` НЕ предлагается: закон банка ратифицирован, и доказательств против него нет | бэкенд | скоро | комментарий описывает поведение, и есть носитель у вопроса «верно ли значение» | **D39.202** |
| 319 | ⛔ **ПРИБОР СЛЕПОГО ЧТЕНИЯ ШТРАФУЕТ РОВНО ТО ПОВЕДЕНИЕ, КОТОРОЕ САМ ЖЕ ЗАКАЗЫВАЕТ.** Судимой руке предписано `eval/dovodka/prereg-4axes/stand/editor-p9.md:5`=`Сверяй смысл черновика с исходным текстом` — то есть ОТХОДИТЬ от черновика там, где он искажает оригинал. А блокирующая линза `eval/dovodka/blind-read/PREREG-2-BLIND-READ.md:62`=`точность относительно черновика` меряет верность ЧЕРНОВИКУ, ⇒ мы велим редактору ОТХОДИТЬ от черновика там, где тот переврал оригинал, и меряем его ВЕРНОСТЬЮ черновику. ⛔ **ПРОТИВОРЕЧИЕ КОНСТРУКЦИИ ДОКАЗАНО — ВЕЛИЧИНА ИСКАЖЕНИЯ НЕ ЗАМЕРЕНА, и это разные вещи.** Прежняя редакция строки писала «прибор СИСТЕМАТИЧЕСКИ поощряет якорение» и «отход от черновика записан в ДЕФЕКТЫ»: **испр. 06.09 автором строки** — фраза «Отход от черновика» встречается в сыром судейском массиве ОДИН раз, то есть это наблюдение, а не свойство, и масштаб я выдал за факт, не посчитав. Доказано ровно одно: две бумаги в одном дереве требуют взаимоисключающего. ⇒ вывод замера **ненадёжен ПО ПОСТРОЕНИЮ** независимо от частоты, и величину надо мерить ДО любого следующего решения о тире редактора. ⚠ Задет приоритет владельца №2 («отсутствие выдумок — редактор, сверка с ИСХОДНИКОМ», `D39.198` п.2). ⭐ **Этого довода в отчётах Кодекса НЕТ — он найден консилиумом**, и он сильнее всего, что там написано. ⚠ Обвязка с исходником уже существует в том же дереве (`eval/dovodka/judge-prompts/`), то есть нужен не новый прибор, а ПЕРЕ-ПОДКЛЮЧЕНИЕ готового. ⚠ Тем же заходом — три эрраты в носителях замера: «правильный ответ по построению — ничья» противоречит собственному тексту отчёта; из §8 пре-рега выпало унаследованное ограничение «опора судьи — черновик, не оригинал»; правило решения готово выдать вывод, который отчёт результата запрещает дословно | полигон | скоро | линза меряет то, что руке заказано, и носители замера не противоречат себе | **D39.198** |
| 319 | ⛔ **ПРИБОР СЛЕПОГО ЧТЕНИЯ ШТРАФУЕТ РОВНО ТО ПОВЕДЕНИЕ, КОТОРОЕ САМ ЖЕ ЗАКАЗЫВАЕТ.** Судимой руке предписано `eval/dovodka/prereg-4axes/stand/editor-p9.md:5`=`Сверяй смысл черновика с исходным текстом` — то есть ОТХОДИТЬ от черновика там, где он искажает оригинал. А блокирующая линза `eval/dovodka/blind-read/PREREG-2-BLIND-READ.md:62`=`точность относительно черновика` меряет верность ЧЕРНОВИКУ, ⇒ мы велим редактору ОТХОДИТЬ от черновика там, где тот переврал оригинал, и меряем его ВЕРНОСТЬЮ черновику. ⛔ **ПРОТИВОРЕЧИЕ КОНСТРУКЦИИ ДОКАЗАНО — ВЕЛИЧИНА ИСКАЖЕНИЯ НЕ ЗАМЕРЕНА, и это разные вещи.** Прежняя редакция строки писала «прибор СИСТЕМАТИЧЕСКИ поощряет якорение» и «отход от черновика записан в ДЕФЕКТЫ»: **испр. 06.09 автором строки** — фраза «Отход от черновика» встречается в сыром судейском массиве ОДИН раз, то есть это наблюдение, а не свойство, и масштаб я выдал за факт, не посчитав. Доказано ровно одно: две бумаги в одном дереве требуют взаимоисключающего. ⇒ вывод замера **ненадёжен ПО ПОСТРОЕНИЮ** независимо от частоты, и величину надо мерить ДО любого следующего решения о тире редактора. ⚠ Задет приоритет владельца №2 («отсутствие выдумок — редактор, сверка с ИСХОДНИКОМ», `D39.198` п.2). ⭐ **Этого довода в отчётах Кодекса НЕТ — он найден консилиумом**, и он сильнее всего, что там написано. ⚠ Обвязка с исходником уже существует в том же дереве (`eval/dovodka/judge-prompts/`), то есть нужен не новый прибор, а ПЕРЕ-ПОДКЛЮЧЕНИЕ готового. ⚠ **Три эрраты в носителях замера — ФОРМОЙ БАННЕРА, тела НЕ править** (оба документа заморожены, и пре-рег ценен именно неизменяемостью), и **горизонт у них другой: ПЕРВЫМ касанием полигона, ДО пака починки линзы** — иначе три дешёвые правки будут ждать дорогого пака. Не исполнены ни одна: «правильный ответ по построению — ничья» противоречит собственному тексту отчёта; из §8 пре-рега выпало унаследованное ограничение «опора судьи — черновик, не оригинал»; правило решения готово выдать вывод, который отчёт результата запрещает дословно | полигон | скоро | линза меряет то, что руке заказано, и носители замера не противоречат себе | **D39.198** |
| 320 | **ДВА СОВЕТА ДВИЖКА, КОТОРЫХ ДВИЖОК НЕ ИСПОЛНЯЕТ.** (а) `backend/internal/membank/memseed.go` советует оператору «mark one status: auto», а гард полисемии статус НЕ СМОТРИТ вовсе — условие `a.Src != b.Src || a.Dst == b.Dst || !windowsOverlap(...)`, и совет в пределах одного файла не сработает НИКОГДА. Одна строка плюс тест. (б) `internal/lang/data/``injection.txt` несёт заголовок «НЕПОДТВЕРЖДЁННЫЕ РАБОЧИЕ ВАРИАНТЫ», живой в сборке (`internal/lang/embedded.go:449`), тогда как `membank/memory.go` прямым текстом объявляет «NO ⟨проверить⟩ MARKER, and no fork by status at all» по `D39.104` п.2. ⚠ Правка ДАННЫХ — стоп-мир (`EmbeddedVersion``cutTag``manifest_key`), поэтому прицепом к паку строки 161, а не отдельным заходом; правка комментария (а) дешева и сегодня | бэкенд | скоро | совет и заголовок описывают то, что сборка делает | **D39.202** |
| 321 | ⛔ **РЕДАКТОР ПОДБИРАЕТ БАНК БЕЗ ПАМЯТИ О ПРЕДЫДУЩИХ ЕДИНИЦАХ, И ОПРАВДАНИЕ В КОДЕ ЛОЖНО.** Черновая волна передаёт sticky-контекст, редакторская — `nil`; комментарий рядом оправдывает это тем, что единица есть глава либо её часть, «так что внутриглавное окно липкости неприменимо». **Оправдание неверно:** глава РЕГУЛЯРНО делится на несколько правочных единиц (`assignEditUnits` жадно пакует чанки до потолка и закрывает единицу ВНУТРИ главы), а sticky сбрасывается только на границе ГЛАВЫ. ⚠ **ЗАМЕР 06.09 (Fable 5, `tmctl manifest` на `22e079e`, $0):** слайс 25 глав — 57 чанков / 37 единиц / **11 многоединичных глав**; ПОЛНАЯ книга — 2283 главы / 5071 чанк / 4276 единиц / **1962 многоединичных, то есть 86 %**. Прежнее «56 чанков» взято из архивной СИМУЛЯЦИИ, факт 57. ⛔ **И картина «черновик сохраняет — редактор теряет» верна только для СИДОВОГО банка:** на нынешнем стенде все строки mined, базовый банк ПУСТ, черновая волна банка не несёт вовсе, а редакторская — единственная с банком — не переносит между единицами. ⚠ **Экспозиция замерена, дрейф — НЕТ:** теряется 49 банковых строк на 12 единицах, из них у **4** форма перевода уже стоит в черновике (все Confirmed); инцидентов не наблюдено ни одного. ⇒ **сначала мерить на следующем платном прогоне** ($0 по хранилищу), потом строить. ⚠ Теста, фиксирующего нынешний `nil`, НЕТ ⇒ правка это багфикс, а не смена заказанного поведения. ⚠ **Sticky — это множество id БАНКОВЫХ строк, не пересказ повествования**; отчёт Кодекса описал его неверно, и это отдельно опровергнуто. ⇒ предмет: либо передавать, либо привести комментарий к правде — но молча оставлять оправдание, которое разошлось с кодом, нельзя | бэкенд | скоро | редакторская волна либо несёт перенос, либо объясняет отказ верно | **D39.215** |
| 322 | ⛔ **УКАЗАТЕЛЯ ПРИНЯТОЙ РЕДАКЦИИ НЕТ: НЕУДАЧНАЯ ПОВТОРНАЯ РЕДАКТУРА ЗАТИРАЕТ ДОСТУПНЫЙ РЕЗУЛЬТАТ.****ПРОДУКТОВАЯ РАМКА ЭТОЙ СТРОКИ БЫЛА НЕВЕРНА И СНЯТА 06.09 (поправка владельца):** функции «заказать вторую редактуру» у нас НЕТ. Есть **ре-проход**, законный только при СДВИНУВШЕМСЯ банке — человек исправил термин и просит пере-прогнать книгу. ⇒ верное утверждение узкое: **ре-проход пере-делывает затронутую единицу ЦЕЛИКОМ** тем же редакторским промптом (режима «правь только термин» в движке нет), **прежний текст остаётся в чекпойнтах, но без адреса** — ни одна строка статуса на него не указывает, экспорт его не видит, отката нет; **и ничто нигде не сравнивает старый вывод с новым**. ⛔ **Единственный БЕЗВОЗВРАТНЫЙ путь найден:** ре-проход флагнулся → оператор делает `redrive`сброс стадий сносит ВСЕ чекпойнты чанка, включая прежний хороший. ⚠ Попутно: комментарий `backend/internal/store/chunkstatus.go:52-57` про «резюм переписывает строку» ЛОЖЕН — обычный резюм её не пишет. ⭐ Это ЯДРО гипотезы 1 отчёта `research/32`, и консилиум его ПОДТВЕРДИЛ — единственная его архитектурная часть, устоявшая целиком. ⚠ Полный revision-контур (схема, семантика `chunk_status`, экспорт, контракт, платформа) — смена курса и дизайн-пак масштаба строки 161, НЕ заказ этой строки. **Заказ здесь узкий: указатель принятой редакции**, чтобы повторная попытка не могла уничтожить принятое | бэкенд+платформа | скоро | вторая редактура не может отнять первую | **D39.215** |
| 323 | **ЧЕСТНАЯ ЦЕНА ПРАВКИ БАНКА — НЕ «ПЕРЕПОКУПКА КНИГИ», И ЭТО МЕНЯЕТ ДОВОД, КОТОРЫМ ЗАЩИЩАЛИ БЕЗДЕЙСТВИЕ.****ФОРМУЛА ПЕРЕПИСАНА 06.09 ПО ЗАМЕРУ — прежняя редакция была завышена в ТРЁХ местах.** Верно: подпись через `bank-apply` двигает ТОЛЬКО редакторскую волну и стоит **единицы, чей исходник содержит ключ термина внутри его окна** (плюс те, где термин перестал инжектироваться); остальное ре-пиньтся за $0 **при явном `--resnapshot`**. Правка СИДОВОГО файла двигает обе волны и добавляет черновые чанки с ключом плюс **до двух следующих чанков той же главы** (рябь переноса), а также все единицы с перекупленным черновиком — **последнего смета НЕ ВИДИТ**. ⛔⛔ **И главный денежный член был пропущен: проход терминолога перекупается НА КАЖДУЮ ПОДПИСЬ, он НЕВИДИМ смете и согласию, и тратится ДАЖЕ БЕЗ `--resnapshot`** (центы: $0.005 на четырёх главах, $0.026+$0.034 на десяти; потолок — бюджет). ⚠ Прежнее «опровергнуто кодом и тестом» тоже сильнее правды: пин доказывает игрушечный случай — две главы по чанку, mined-only, без прохода майнинга, без ряби и каскада. ⚠ Значение: «оставить как есть, потому что чинить дорого» — довод, которым закрывали вопрос неверной банковой строки, — **отпадает по цене**. Сам закон банка при этом НЕ оспаривается: доказательств против `D39.104` нет ни у одного голоса. ⚠ Оговорки названы и не спрятаны: бесплатность неполная, проход терминолога пере-покупается (строка 38), и всё это только при ЯВНОМ `--resnapshot` | оркестратор | скоро | цена правки банка названа формулой, а не страшилкой | **D39.215** |
| 322 | ⛔ **УКАЗАТЕЛЯ ПРИНЯТОЙ РЕДАКЦИИ НЕТ: НЕУДАЧНАЯ ПОВТОРНАЯ РЕДАКТУРА ЗАТИРАЕТ ДОСТУПНЫЙ РЕЗУЛЬТАТ.****ПРОДУКТОВАЯ РАМКА ЭТОЙ СТРОКИ БЫЛА НЕВЕРНА И СНЯТА 06.09 (поправка владельца):** функции «заказать вторую редактуру» у нас НЕТ. Есть **ре-проход**, законный только при СДВИНУВШЕМСЯ банке — человек исправил термин и просит пере-прогнать книгу. ⇒ верное утверждение узкое: **ре-проход пере-делывает затронутую единицу ЦЕЛИКОМ** тем же редакторским промптом (режима «правь только термин» в движке нет), **прежний текст остаётся в чекпойнтах, но без адреса** — ни одна строка статуса на него не указывает, экспорт его не видит, отката нет; **и ничто нигде не сравнивает старый вывод с новым**. ⛔ **Единственный БЕЗВОЗВРАТНЫЙ путь найден:** ре-проход флагнулся → оператор делает `redrive`сброс стадий сносит чекпойнты **ФЛАГНУТОЙ стадии по всем снапшотам**, и прежний хороший чекпойнт РЕДАКТУРЫ в их числе. ⚠ **Испр. 06.09: стояло «ВСЕ чекпойнты чанка» — шире правды**, черновая строка уцелевает (`backend/internal/pipeline/volume.go:717`=`deletes only the FLAGGED and SKIPPED`). Довод о безвозвратности от этого не страдает: теряется именно принятая редактура. ⚠ Попутно: комментарий `backend/internal/store/chunkstatus.go:52-57` про «резюм переписывает строку» ЛОЖЕН — обычный резюм её не пишет. ⭐ Это ЯДРО гипотезы 1 отчёта `research/32`, и консилиум его ПОДТВЕРДИЛ — единственная его архитектурная часть, устоявшая целиком. ⚠ Полный revision-контур (схема, семантика `chunk_status`, экспорт, контракт, платформа) — смена курса и дизайн-пак масштаба строки 161, НЕ заказ этой строки. **Заказ здесь узкий: указатель принятой редакции**, чтобы повторная попытка не могла уничтожить принятое | бэкенд+платформа | скоро | вторая редактура не может отнять первую | **D39.215** |
| 323 | **ЧЕСТНАЯ ЦЕНА ПРАВКИ БАНКА — НЕ «ПЕРЕПОКУПКА КНИГИ», И ЭТО МЕНЯЕТ ДОВОД, КОТОРЫМ ЗАЩИЩАЛИ БЕЗДЕЙСТВИЕ.****ФОРМУЛА ПЕРЕПИСАНА 06.09 ПО ЗАМЕРУ — прежняя редакция была завышена в ТРЁХ местах.** Верно: подпись через `bank-apply` двигает ТОЛЬКО редакторскую волну и стоит **единицы, чей исходник содержит ключ термина внутри его окна** (плюс те, где термин перестал инжектироваться); остальное ре-пиньтся за $0 **при явном `--resnapshot`**. Правка СИДОВОГО файла двигает обе волны и добавляет черновые чанки с ключом плюс **до двух следующих чанков той же главы** (рябь переноса), а также все единицы с перекупленным черновиком — **последнего смета НЕ ВИДИТ**. ⛔⛔ **И главный денежный член был пропущен: проход терминолога перекупается НА КАЖДУЮ ПОДПИСЬ, он тратится ДАЖЕ БЕЗ `--resnapshot`, и его ПЕРЕПОКУПКА невидима смете и согласию** (⚠ испр. 06.09: стояло «невидим смете» без оговорки — шире правды: смета ПЕРВОГО прогона проход несёт потолком, `backend/internal/pipeline/priceprojection.go:317`=`BookOnceUSD: r.bookOnceUSD()`; невидима именно перепокупка на подписи, строка 38) (центы: $0.005 на четырёх главах, $0.026+$0.034 на десяти; потолок — бюджет). ⚠ Прежнее «опровергнуто кодом и тестом» тоже сильнее правды: пин доказывает игрушечный случай — две главы по чанку, mined-only, без прохода майнинга, без ряби и каскада. ⚠ Значение: «оставить как есть, потому что чинить дорого» — довод, которым закрывали вопрос неверной банковой строки, — **отпадает по цене**. Сам закон банка при этом НЕ оспаривается: доказательств против `D39.104` нет ни у одного голоса. ⚠ Оговорки названы и не спрятаны: бесплатность неполная, проход терминолога пере-покупается (строка 38), и всё это только при ЯВНОМ `--resnapshot` | оркестратор | скоро | цена правки банка названа формулой, а не страшилкой | **D39.215** |
| 324 | **ВХОД РЕНДЕРА ЗАКРЫТ: СОСЕДНЕЕ ПОВЕСТВОВАНИЕ НЕЛЬЗЯ ПОДАТЬ ДАЖЕ ПРАВКОЙ ПРОМПТА.** Шаблон принимает фиксированный набор плейсхолдеров, неизвестный `{{…}}` — жёсткая ошибка. ⇒ на дежурный ревью-вопрос «заработает ли это без правки Go» ответ здесь сегодня **«нет»**, и это признанный долг, а не дефект: пара-данные общности так и задуманы, но ИМЕННО этот вход расширяется только кодом. ⛔ **ИСПР. 06.09: сцепка со строкой 321 была МИМО ПРЕДМЕТА** — там переносятся id банковых строк по инъекционному каналу, а не через шаблон, и в шаблон это не упирается вовсе. В шаблон упирается только «дать редактору соседний ТЕКСТ», и это отдельная гипотеза. ⚠ И это НЕ долг общности: набор — движковые рантайм-значения, пар-специфики в нём нет; таблица в данных стала бы вторым носителем. ⇒ **строить не надо**, предмет переформулирован в контракт входа. Если гипотеза соседнего текста подтвердится замером — правка Go снапшот НЕ двигает, но использование в боевом промпте двигает его через хеш промпта ⇒ редакторская волна перекупается ОДИН раз | бэкенд | когда-нибудь | вход рендера расширяем данными либо отказ объявлен в носителе | **D39.215** |
| 325 | ⛔ **«МЫ ПРОСТО НЕ БУДЕМ ВПУСКАТЬ EPUB И НЕ-CJK» — СЕГОДНЯ НАМЕРЕНИЕ, А НЕ ФАКТ: ИНТЕЙК ИХ ПРИНИМАЕТ.** Замер 06.09: приём и обработка имени `.epub` закреплены тестом платформы (`platform/internal/books/books_test.go`, кейсы с расширением), то есть сужение входа до того, что умеет ВЫДАЧА, — это **код, а не решение**. ⚠ Значение прямое: строка 283 держит «структура глав для выдачи гейтит бету для не-CJK и EPUB», и её компенсация на бете («просто не впускаем») не работает, пока отказа нет в коде. ⇒ либо интейк отказывает форматам, чью выдачу мы не умеем, с честной причиной пользователю, либо 283 обязана быть сделана ДО впуска. ⭐ Найдено разбором границы беты 06.09; предмет — компенсация, объявленная и не построенная | платформа | скоро | вход физически сужен до того, что умеет выдача, либо выдача умеет впускаемое | **D39.215** |
| 326 | ⛔ **ПОНЯТИЯ «БЛОКЕР БЕТЫ» В ТРЕКЕРЕ НЕТ, И КРИТЕРИЯ ВПУСКА ПЕРВОГО ПОЛЬЗОВАТЕЛЯ В РЕПОЗИТОРИИ НЕ СУЩЕСТВУЕТ.** Замер 06.09: гейт печатает «блокеров очереди: 0», но этот вес — про ОЧЕРЕДЬ, а не про бету; слово «бета» встречается в **трёх** строках бэклога из 236, и ни одна не является критерием впуска; греп по `docs/`, `platform/docs/`, `backend/docs/` на «первый пользователь / первая внешняя книга / впуск» не даёт ничего. ⇒ **вопрос «сколько ещё до беты» не читается из трекера не потому, что мало сделано, а потому что трекер никогда не нёс этого понятия.** ⚠ Практическое следствие: любой ответ о сроке беты сегодня — оценка сессии, а не состояние проекта, и проверить его нечем. ⇒ заказ: **линия остановки как ПРОВЕРЯЕМОЕ условие** (прогон на чужом файле через ту же дверь · деньги сходятся либо маржа видна пользователю · застрявший прогон видно и лечится · ни один экран не врёт о единице · вход сужен до того, что умеет выдача) — формулировку утверждает ВЛАДЕЛЕЦ, носитель заводит оркестратор | владелец → оркестратор | скоро | в дереве есть проверяемый критерий впуска первого внешнего пользователя | **D39.215** |
| 326 | ⛔ **ПОНЯТИЯ «БЛОКЕР БЕТЫ» В ТРЕКЕРЕ НЕТ, И КРИТЕРИЯ ВПУСКА ПЕРВОГО ПОЛЬЗОВАТЕЛЯ В РЕПОЗИТОРИИ НЕ СУЩЕСТВУЕТ.** Замер 06.09: гейт печатает «блокеров очереди: 0», но этот вес — про ОЧЕРЕДЬ, а не про бету; слово «бета» в строках бэклога встречается считаное число раз и НИ РАЗУ не как критерий впуска (⚠ счёт из строки снят 06.09: я привёл «три из 236», а пере-счёт даёт 5 из 229 — оба числа были неверны, а утверждение в них не нуждается); греп по `docs/`, `platform/docs/`, `backend/docs/` на «первый пользователь / первая внешняя книга / впуск» не даёт ничего. ⇒ **вопрос «сколько ещё до беты» не читается из трекера не потому, что мало сделано, а потому что трекер никогда не нёс этого понятия.** ⚠ Практическое следствие: любой ответ о сроке беты сегодня — оценка сессии, а не состояние проекта, и проверить его нечем. ⇒ заказ: **линия остановки как ПРОВЕРЯЕМОЕ условие** (прогон на чужом файле через ту же дверь · деньги сходятся либо маржа видна пользователю · застрявший прогон видно и лечится · ни один экран не врёт о единице · вход сужен до того, что умеет выдача) — формулировку утверждает ВЛАДЕЛЕЦ, носитель заводит оркестратор | владелец → оркестратор | скоро | в дереве есть проверяемый критерий впуска первого внешнего пользователя | **D39.215** |
*(Указатели на архив-слайсы хроники — бюллетенем «Архивы хроники» в CURRENT-STATE; здесь копий нет.)*