Name the chapter-boundary prompt as the pack row 303 waits for, narrow the readiness claim about the Chinese half to the state it was measured on, and list the prompt as active
This commit is contained in:
parent
5c27e1eac9
commit
7f8f08c2b1
5 changed files with 142 additions and 29 deletions
|
|
@ -25,21 +25,36 @@
|
|||
объявил навигационную цель на каждый осколок ⇒ **62 цели из 71 указывают во ВТОРУЮ половину spine** (позиции
|
||||
целей 8…124 при 126 документах, медиана 89), тогда как проза лежит в первой.
|
||||
|
||||
⛔ **И вот замер, который переворачивает саму картину «навигация указывает не туда»: документов spine БЕЗ
|
||||
навигационной цели — 55 из 126, и это ВСЯ ПРОЗА КНИГИ** (`index_split_005`…`_043`, от 9 до 157 тыс. знаков
|
||||
каждый). Навигация адресует осколки оглавления и ровно четыре прозаических документа. ⇒ говорить «цели указывают
|
||||
не туда» мягко: **текста книги навигация почти не адресует вообще.**
|
||||
|
||||
**Тела целей, разбиение полное и сумма сходится с 71:** **60** побуквенно равны своему ярлыку · **7** коротки,
|
||||
но ярлыку НЕ равны — два титула частей (`BOOK ONE`+`DEATHSEEKER`, `BOOK FOUR`+`THIS BLACKENED VEIL`) и пять
|
||||
осколков оглавления, у которых вторая строка есть имя СЛЕДУЮЩЕЙ части (`Chapter XIX. A Taste of Home` +
|
||||
`Book Three. To Kill a King`) · **4** несут прозу (`BOOK TWO/THREE/FIVE/SIX`, 14–82 тыс. знаков).
|
||||
|
||||
⛔ **А настоящих глав в книге — 84, и это первое, что я ставил неверно.** Открывает каждую **ДВА подряд абзаца
|
||||
одного класса**: римское числительное, затем имя прописными, затем проза другим классом. Замер: абзацев, чей
|
||||
текст есть голое римское числительное, — **84** (81 в шести частях и 3 в открывающей секции), все в одном и
|
||||
том же классе; контроль, доказывающий, что прибор читал книгу, — абзацев с классом в ней **11 397**.
|
||||
⛔ **А настоящих глав — 81, плюс пролог, и это первое, что я ставил неверно ДВАЖДЫ.** Форма главы: римское
|
||||
числительное, затем имя прописными тем же классом, затем проза другим классом. Замер: голых римских
|
||||
числительных **84**, из них **81 имеет имя следом** и **3 не имеют** — все три в открывающей секции `SUNSET`,
|
||||
где за номером идёт сразу проза. ⇒ **«84 главы» есть ВЫВОД прибора, а не замер книги**: собственное оглавление
|
||||
книги даёт «Sunset» одной строкой и 81 строку «Chapter». Контроль, доказывающий, что прибор читал книгу, —
|
||||
абзацев с классом **11 397** (счётчиком по `<p[^>]*class="…"`; другой парсер на тот же вопрос даёт 11 522 —
|
||||
подписывай способ счёта рядом с числом).
|
||||
⛔ **СУДЬБА ПРОЛОГА — РАЗВИЛКА, И РЕШИТЬ ЕЁ ОБЯЗАН ТЫ, А НЕ УМОЛЧАНИЕ ПРАВИЛА.** Голое числительное разрежет
|
||||
`SUNSET` на три безымянных главы, а единственное имя пролога уедет в преамбулу первой из них. Варианты: **81 + 3
|
||||
безымянных = 84** или **81 + 1 «Sunset» = 82**, и второй требует ТРЕТЬЕЙ формы заголовка (имя без числительного),
|
||||
которой у грамматики сегодня нет. Назови выбор и довод; приёмочное число — тот, который ты назвала.
|
||||
⚠ И мой первый замер дал **3** вместо 84, потому что регексп требовал `class` первым атрибутом, а у
|
||||
большинства первым стоит `id`. **Отрицательный замер здесь особенно дёшев и особенно лжив — печатай
|
||||
контрольную величину рядом.**
|
||||
|
||||
⭐ **ГЛАВНОЕ, и ради этого пак переписан.** Ярлык навигации «Chapter IV. Unforgiven» есть СКЛЕЙКА ровно того,
|
||||
что проза держит двумя абзацами — `IV` и `UNFORGIVEN`. ⇒ **навигация несёт правильные ИМЕНА и неправильные
|
||||
⭐ **ГЛАВНОЕ, и ради этого пак переписан.** Ярлык навигации «Chapter IV. Unforgiven» есть СКЛЕЙКА того, что
|
||||
проза держит двумя абзацами — `IV` и `UNFORGIVEN`. ⚠ **Склейка НЕ побайтная, и без этой оговорки замер даёт
|
||||
ноль:** ярлык в Title Case, проза капсом, апостроф типографский ⇒ побайтно **0 из 81**, с нормализацией
|
||||
регистра и апострофа — **65 из 81**. Оставшиеся **16 глав навигация не называет вовсе** (их строки оглавления
|
||||
лежат в документе без навигационной цели). ⇒ **навигация несёт правильные ИМЕНА и неправильные
|
||||
АДРЕСА; проза несёт правильные АДРЕСА и расщеплённое имя.** Ни один источник не лжёт целиком, и ни одного не
|
||||
хватает в одиночку.
|
||||
|
||||
|
|
@ -135,8 +150,12 @@
|
|||
|
||||
⛔ **ОСТАТОК НАЗВАН ЧИСЛОМ, И ПРЯТАТЬ ЕГО НЕЛЬЗЯ: строгое тождество снимает 60, а ПЯТЬ осколков переживут** —
|
||||
у них вторая строка несёт имя следующей части. **«Почти-тождество» я запрещаю**: порога не заводить. Решай по
|
||||
роду — либо правило формулируется так, что ловит и эти пять (например «каждая строка тела есть ярлык
|
||||
навигации»), либо остаток НАЗЫВАЕТСЯ числом и принимается осознанно. ⛔ Чего нельзя — сдать «сделано» и
|
||||
роду — либо правило формулируется так, что ловит и эти пять, либо остаток НАЗЫВАЕТСЯ числом и принимается
|
||||
осознанно. ⛔ **Пример, который я сюда вписал первым — «каждая строка тела есть ярлык навигации» — ЛОЖЕН, и я
|
||||
его снимаю: он ловит 0 из 5.** Вторые строки этих осколков («Book Three. To Kill a King») ярлыками не являются
|
||||
(ярлык — «BOOK THREE»), а пятый осколок несёт вовсе хвост оглавления (`Dawn` · `Acknowledgments` · `Also by` ·
|
||||
`About the Author` · `Copyright`). ⚠ Точное разбиение: ЧЕТЫРЕ осколка со второй строкой-именем следующей части
|
||||
и ОДИН с хвостом оглавления. Родовой признак ищи сама — или принимай остаток числом. ⛔ Чего нельзя — сдать «сделано» и
|
||||
получить 89 глав вместо 84.
|
||||
|
||||
**(б) ТАМ, ГДЕ НАВИГАЦИЯ НЕ ПОСТАВИЛА ЦЕЛИ, ГРАНИЦУ СТАВИТ ГРАММАТИКА.** Настоящие начала глав живут внутри
|
||||
|
|
@ -197,8 +216,7 @@
|
|||
КРОЕ, а крой уже фолдит отпечаток структуры.
|
||||
|
||||
**РЕШИ САМА,** что грамматика обязана уметь для этой книги. Приоры, каждый опровергается замером:
|
||||
безмаркерный заголовок (сегодня маркер требуется) · класс римских числительных (сегодня арабские и CJK) ·
|
||||
класс римских числительных (сегодня арабские и CJK) · «абзац, чей текст есть голое числительное» ·
|
||||
безмаркерный заголовок (сегодня маркер требуется) · класс римских числительных (сегодня арабские и CJK) · «абзац, чей текст есть голое числительное» ·
|
||||
«имя главы — СЛЕДУЮЩИЙ абзац того же класса».
|
||||
|
||||
⛔ **Приор «центрированный абзац» я СНИМАЮ, и вот почему — иначе он столкнул бы тебя лбом с §4.5.**
|
||||
|
|
@ -245,7 +263,6 @@
|
|||
**ПРЕДУПРЕЖДАЕТ, а не отказывает**; отказы — для механизма, который не может работать вовсе. Кривое
|
||||
оглавление — первое, а не второе.
|
||||
|
||||
⇒ книга без объявленной грамматики едет как сегодня в части (б), но человек **видит числом**
|
||||
⚠ **Оговорка, без которой абзац лжёт:** правило (а) живёт в Go и действует на КАЖДЫЙ EPUB с осколками-тождествами,
|
||||
объявлена грамматика или нет. Без грамматики отсутствует только (б).
|
||||
⇒ человек видит числом, что получил: сколько глав,
|
||||
|
|
@ -258,10 +275,18 @@
|
|||
|
||||
### 4.4 ⛔ ЗАМЕР ПЕРЕД СТРОЙКОЙ — ПЕРВЫМ ДЕЛОМ, И БЕЗ ЕДИНОЙ СТРОКИ Go
|
||||
|
||||
Прежде чем править код, **реализуй правило грамматики на python и прогони по книге прогона**. Ответь числом:
|
||||
сколько глав даёт «центрированный короткий абзац + римская цифра + строка капсом» против записей навигации.
|
||||
Прежде чем править код, **реализуй правило грамматики на python и прогони по книге прогона**. ⚠ **Прежняя
|
||||
редакция этого абзаца протухла** — она звала «центрированный короткий абзац», а §4.2 приор «центрирован» снял,
|
||||
и звала сверяться «против записей навигации», которых у прозы нет.
|
||||
|
||||
⇒ **это и есть приёмочное число пака.** Если правило даёт число, не похожее на настоящую структуру книги, —
|
||||
**Правило меряй на ИЗВЛЕЧЁННОМ тексте, а не на разметке:** «абзац, чей текст есть голое римское числительное;
|
||||
имя главы — следующая непустая строка того же класса». ⚠ Оговорка из замера: у 53 пар абзацы идут подряд, у 28
|
||||
между ними пустой абзац-спейсер; на извлечённом тексте он исчезает, в разметке «подряд» неверно.
|
||||
|
||||
**Ответь числами:** сколько глав даёт правило · сколько из них получили имя · сколько осталось безымянных ·
|
||||
чему это равно против собственного оглавления книги (81 + Sunset) и против 71 записи навигации.
|
||||
⇒ **приёмочное число — то, которое ты назовёшь, объявив судьбу пролога;** мои ориентиры — 84 по прибору и
|
||||
82 по оглавлению книги, и расходятся они ровно на неё. Если правило даёт число, не похожее на настоящую структуру книги, —
|
||||
стройка начинается не с того, и лучше это узнать за ноль долларов и без правок дерева. Так же вчера был
|
||||
пере-снят механизм группировки, и это сэкономило пак.
|
||||
|
||||
|
|
@ -301,24 +326,46 @@
|
|||
Ревью исполнением обязательно: своего кода, своих проб, своих результатов. **Субагенты разрешены.**
|
||||
**Fable 5 — ОДИН советчик** с постоянным контекстом; он советчик, а не источник истины.
|
||||
|
||||
**ЧЕТЫРЕ МЕСТА, ГДЕ ЭТОТ ПАК МЯГОК ИМЕННО ПОТОМУ, ЧТО ОН ТАКОЙ:**
|
||||
**СЕМЬ МЕСТ, ГДЕ ЭТОТ ПАК МЯГОК ИМЕННО ПОТОМУ, ЧТО ОН ТАКОЙ:**
|
||||
|
||||
1. ⛔ **Твоя правка меняет КРОЙ, а крой versionируется.** По конвенции проекта правка правила нарезки
|
||||
бампает версию нарезки, а та фолдится БЕЗУСЛОВНО — то есть у КАЖДОЙ книги, включая китайскую.
|
||||
**Сегодня это бесплатно** (книг продуктового пути с оплаченными чанками нет), и именно поэтому пак идёт
|
||||
ДО прогона, а не после. Предъяви цену явно, не умолчи её.
|
||||
**Сегодня это бесплатно, но условно, и условие я называю словами:** бесплатно ⇔ ни одну существующую базу
|
||||
с оплаченными чанками никто не ПРОДОЛЖАЕТ. Замер: в `coldrun-a` 20 строк `chunk_status` на $0.024056, в
|
||||
`coldrun-b` — 0; всех баз с оплаченными строками под `books/` — 161, и все объявлены одноразовыми
|
||||
(`D39.63` п.3, `D39.190` п.4). ⚠ **Продуктовый путь на этом хосте НЕ проверен:** `TM_PLATFORM_BOOKS_DIR`
|
||||
не задан, каталогов-кандидатов нет — то есть здесь «нет» значит «не нашёл», а не «проверил».
|
||||
Предстоящий прогон стартует ПОСЛЕ лендинга ⇒ куплено ничего. Предъяви цену явно, не умолчи её.
|
||||
2. ⛔ **Тождество легко сделать почти-тождеством, и тогда оно станет порогом.** «Равно ярлыку» и «начинается
|
||||
с ярлыка плюс немного» — разные правила: первое доказуемо, второе — эвристика с невидимой границей.
|
||||
Замер: **60 тождеств и ОДНО почти-тождество** (титульная страница части). Если возьмёшь «почти», скажи,
|
||||
где теперь граница и чем она обоснована.
|
||||
3. ⛔ **Грамматика, которая режет ЭТУ книгу, легко окажется грамматикой этой книги.** Признак «римская
|
||||
цифра в центрированном абзаце» обязан быть выведен из свойства ВЁРСТКИ, а не подобран под Кристоффа.
|
||||
Замер (пере-снят вторым кругом, прежняя редакция говорила «одно почти-тождество» и была неверна):
|
||||
**60 тождеств и СЕМЬ коротких не-тождеств** — два титула частей и пять осколков. Если возьмёшь «почти»,
|
||||
скажи, где теперь граница и чем она обоснована. ⛔ Я её брать запрещаю; см. §4.1(а).
|
||||
3. ⛔ **Грамматика, которая режет ЭТУ книгу, легко окажется грамматикой этой книги.** Признак «абзац есть
|
||||
голое числительное, имя — следующая непустая строка» обязан быть выведен из свойства ВЁРСТКИ, а не подобран
|
||||
под Кристоффа. ⚠ Прежняя редакция звала «римскую цифру в центрированном абзаце» — приор снят в §4.2.
|
||||
⛔ **Контрольный набор я назвал неверно, и неверно он звучал правдоподобно:** «китайская книга» — это TXT
|
||||
(`books/gu-zhenren`), и EPUB-пути она не касается вовсе. **Настоящий контроль — два EPUB дерева:**
|
||||
`books/isekai_majutsushi_jp.epub` (CJK-EPUB, получает умолчательную грамматику на EPUB-пути) и
|
||||
`books/fifty_shades_1_en.epub` (латиница, цели навигации 1:1 с документами — отрицательный контроль:
|
||||
правило (а) обязано на нём не сработать ни разу). Китайская книга — контроль только на сдвиг версии.
|
||||
4. ⛔ **Пин на новую грамматику легко построить на той же фикстуре, из которой она выведена.** Тогда он
|
||||
4. ⛔⛔ **ИМЯ, КОТОРОЕ ТЫ СБЕРЕЖЁШЬ, ДО КНИГИ ЧИТАТЕЛЯ СЕГОДНЯ НЕ ДОЕЗЖАЕТ — и §4.1(в) без этой оговорки
|
||||
обещает больше, чем даёт.** Замер: в билдере выдачи `TitleRaw` — **0 вхождений**
|
||||
(`backend/internal/pipeline/bookbuild.go`, контроль: в дереве он живёт в трёх файлах — `epubtoc.go`,
|
||||
`ingest.go`, `manifest.go`), а заголовок главы в файле берётся из
|
||||
`backend/internal/pipeline/bookbuild.go:554`=`t := ce.Heading`, то есть из шаблона пары, которого у `en-ru`
|
||||
нет. ⇒ имя доедет до МАНИФЕСТА и до платформы, а в книге читателя главы останутся номерами.
|
||||
**Это не повод не сберегать имя** — это повод НАЗВАТЬ границу: скажи в отчёте, докуда имя доезжает и где
|
||||
остаётся долгом (ряды **284** и **201**). ⛔ И отдельно сверься с `D39.205` («без пропусков», слово
|
||||
владельца): исключение документа-тождества не есть потеря текста книги — тело равно ярлыку, — но написать
|
||||
это обязана ты, а не читатель твоего отчёта.
|
||||
5. ⛔ **Каталог мутаций придётся пере-нацелить, и это часть пака, а не побочная уборка.** Перестройка
|
||||
группировки уводит цель у посадки на `NO DOCUMENT IS DROPPED`, а «имя у носителя» — у посадки на источник
|
||||
`title_raw`. **Посадка, потерявшая цель, даёт НЕИЗМЕРЕННУЮ, а не пойманную**, и неизмеренная, прочитанная
|
||||
как пойманная, хуже выжившей. Пере-нацель и скажи, сколько записей тронуто.
|
||||
6. ⛔ **Край платформы: отказ интейка `400 no_chapter_structure` при `ChaptersTotal < 2`.** EPUB из двух
|
||||
документов, один из которых тождество, даст одну главу — и книга не пройдёт дверь. Поставь пин на этот край.
|
||||
7. ⛔ **Пин на новую грамматику легко построить на той же фикстуре, из которой она выведена.** Тогда он
|
||||
докажет, что правило работает на том, из чего сделано. Образец правильной формы в дереве есть — пин,
|
||||
который режет книгу ИЗ ОДНОГО ФАЙЛА ДАННЫХ и падает без него.
|
||||
|
||||
|
|
@ -388,8 +435,10 @@
|
|||
|
||||
- [ ] Замер §4.4 предъявлен ЧИСЛОМ до первой правки Go.
|
||||
- [ ] У каждого пункта §4 — исход: сделано · не делаю с доводом · пинг.
|
||||
- [ ] **Английская книга режется по своим настоящим главам**, и это предъявлено прогоном, а не рассуждением.
|
||||
- [ ] **Китайская книга не изменилась** — предъявлено хешем.
|
||||
- [ ] **Английская книга режется по своим настоящим главам — числом, которое ты объявила в §4.4** (81 + пролог;
|
||||
расхождение с прибором названо), и это предъявлено прогоном, а не рассуждением.
|
||||
- [ ] **Китайская книга не изменилась ПО ТЕКСТУ** — предъявлено побайтным равенством текстов глав и чанков.
|
||||
⚠ Её КЛЮЧ МАНИФЕСТА при этом сдвинется, и это ожидаемо — см. §4.4-бис; путать два утверждения нельзя.
|
||||
- [ ] Ни одной ветки по языку или паре не добавлено — предъявлено грепом с контрольной величиной.
|
||||
- [ ] Круги СОШЛИСЬ; прежние находки закрыты таблицей «находка → что сделано → **чем предъявлено**».
|
||||
- [ ] Таблица мутаций полная, ТРИ исхода: поймано · выжило · **НЕ ИЗМЕРЕНО**; новые записи введены в гейт.
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -24,6 +24,7 @@
|
|||
- **Активные хендофф-промты — какой файл ТВОЙ** (состав обновляется при каждом лендинге, D39.80; хроника, причины и статусы РАБОТ — CURRENT-STATE и D-лог):
|
||||
| Роль | Активный промт | Статус |
|
||||
|---|---|---|
|
||||
| **Бэкенд · ГРАНИЦА ГЛАВЫ** | [BACKEND_CHAPTER_STRUCTURE_SESSION_PROMPT.md](BACKEND_CHAPTER_STRUCTURE_SESSION_PROMPT.md) | ⭐ **ВЫДАН 18.09, акт `D39.270`** — этот промт ЕСТЬ «пак 2» по ряду **303**, и запрет `D39.224` п.7 им ИСПОЛНЯЕТСЯ, а не снимается (промт заказ, не ратификация ⇒ именование живёт нотой). Предмет нашёл владелец: грамматику источника получает только текстовый путь ингеста, `ingestEPUB` не получает её вовсе ⇒ на EPUB границу назначает навигация издателя единолично. Фактура: целей навигации 71 (6 частей + 65 глав) · тождеств 60 · документов spine БЕЗ цели **55 из 126, и это вся проза** · настоящих глав **81 плюс пролог** · ярлык есть склейка двух абзацев прозы, но **0/81 побайтно и 65/81 при нормализации** ⇒ 16 глав навигация не называет. ⛔ Пак СДВИНЕТ ключ манифеста и КИТАЙСКОЙ книги (эррата 18.09-б к `D39.269` B1) и протушит пре-регистрированные числа пака прогона ⇒ лендится ДО фриза. Два круга опровержения: 14 находок (9 мажоров) и ещё 10 — все обязательные внесены; шесть моих утверждений, звучавших замером, оказались выводами. Живое сверх пака: ряды **283** · **284** · **201** · **302** |
|
||||
| Бэкенд · ДОСТИЖИМОСТЬ ПАР-ДАННЫХ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 18.09** — акт **`D39.268`**, лендинг `9defda4` (38 файлов, 1855/66, $0) + `e6f9a3b`; промт в `archive/prompts/` с баннером. Кампания **336/336 поймано, 0 выживших, 0 НЕ ИЗМЕРЕНО**. ⭐ Предмет пере-определён замером ДО выдачи: языковых ветвлений в Go шесть при контроле 154 файла, живых два и оба законны ⇒ остаточная зависимость есть НЕДОСТИЖИМОСТЬ ДАННЫХ. **Английская книга доезжает на боевом конфиге** и встаёт на потолке до первого вызова. Ряды 347 и 500 закрыты, 272 и 502 половинами |
|
||||
| Бэкенд · АНГЛИЙСКАЯ ПАРА en→ru | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 18.09** — акт **`D39.267`**, лендинг `ddadb3e` (32 файла, 1356/127, $0) + `63e3a0d`; промт в `archive/prompts/` с баннером-исходом. Кампания **327/327 поймано, 0 выживших, 0 НЕ ИЗМЕРЕНО**, сумма исходов = составу гейта. ⭐ Пак заменил защиту, державшуюся ОТСУТСТВИЕМ второго промт-пакета, на механизм, и нашёл это у себя сам. Живое продолжение предмета — пак достижимости пар-данных |
|
||||
| Платформа · ПРОГОН НЕ ВРЁТ О СЕБЕ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 17.09** — акт **D39.265** (32 пути, $0, контрактный минор **0.17.0**); промт в [archive/prompts/](archive/prompts/PLATFORM_RUN_TELLS_THE_TRUTH_SESSION_PROMPT.md) с баннером-исходом. Ряды **398** · **399** · **400** · **486** закрыты работой, **394** и **396** — ПЕРЕ-РЕШЕНИЕМ (четвёртое значение в клиентский словарь не идёт: «мы сами перестали перезапускать» — другая ось, чем «стоит ли повторять», и границу между осями стережёт новый гейт на три носителя), **416** — платформенной половиной. Кампания пере-снята приёмкой: 26 записей · поймано 25 · выжила 1, объявленная ДО прогона · неизмеренных 0. ⛔ Гейт зоны красен на экземпляре ряда **484** (фикстурный бюджет записи под нагрузкой; оба упавших теста живут в чистом `HEAD`) — названо границей, а не зеленью. ⚠ Две ошибки приёмки названы в акте: оркестратор взял себе правку канона (откачена) и неточно сформулировал §4.1 промта. Живое — ряды **416** (движковая половина) · **484** · **493** · **494** |
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Реестр D-нот — карта актуальности v2 (D1–D39.269; титул — носитель головы, бампать при каждом аппенде)
|
||||
# Реестр D-нот — карта актуальности v2 (D1–D39.270; титул — носитель головы, бампать при каждом аппенде)
|
||||
|
||||
> ⚠ **Колонку «тело» `counts.py --check` НЕ сторожит по устройству:** он сверяет полноту НОМЕРОВ, а не
|
||||
> место тела, поэтому колонка держится дисциплиной лендинга. Не нашёл тело по колонке — иди в слайсы,
|
||||
|
|
@ -328,3 +328,4 @@
|
|||
| D39.267 | 18.09 | **ПРИЁМКА БЭКЕНД-ПАКА «АНГЛИЙСКАЯ ПАРА en→ru»** — `ddadb3e` (32 файла, 1356/127, $0) + `63e3a0d` (отчёт зоны). Кампания **327/327 поймано, 0 выживших, 0 НЕ ИЗМЕРЕНО**, сумма исходов = составу гейта, корень сверен с `ddadb3e:backend` после кампании (0 расхождений). Ратифицирована замена защиты, державшейся ОТСУТСТВИЕМ, на механизм: пакет пары убирал пустоту, из-за которой английская книга отказывалась, и книга поехала бы китайским промтом молча. Веер 57 находок, 9 — дефекты собственной работы зоны. Решение владельца «данные работают там, где явления нет» исполнено подъёмом правила до КЛАССА. Ряды 501·502·503 заведены, 499 переписан четвёртой редакцией. ⚠ Мои ошибки: выдал следующий пак в НЕосвобождённую зону (норма через «я» слепа к делегированию) и пять ложных нулей прибора | приёмка |
|
||||
| D39.268 | 18.09 | **ПРИЁМКА БЭКЕНД-ПАКА «ДОСТИЖИМОСТЬ ПАР-ДАННЫХ»** — `9defda4` (38 файлов, 1855/66, $0) + `e6f9a3b`. Кампания **336/336 поймано, 0 выживших, 0 НЕ ИЗМЕРЕНО**, сумма = составу гейта. ⭐ Предмет ПЕРЕ-ОПРЕДЕЛЁН замером до выдачи: языковых ветвлений в Go шесть при контроле 154 файла, живых два и оба законны ⇒ остаточная зависимость есть НЕДОСТИЖИМОСТЬ ДАННЫХ, а не грязь в коде. Ратифицированы условный фолд как ФОРМА (три условия, прецедент — пак заголовков) и пар-скоупный лейбл промта. Китайская половина неподвижна — доказано ВХОДАМИ (0 тронутых, 0 версий-констант), а не совпадением хешей. Два отказа зоны приняты с замером. Ряды 347 и 500 ЗАКРЫТЫ, 272 движковой половиной, 502 половиной, 303 не тронут. **Английская книга доезжает на боевом конфиге — вход прогона открыт** | приёмка |
|
||||
| D39.269 | 18.09 | **ПРИЁМКА АДВЕРСАРИАЛЬНОГО КРУГА + РАТИФИКАЦИЯ ГОТОВНОСТИ К ХОЛОДНОМУ ПРОГОНУ** — `dca0e06` (20 файлов, 1188/247, $0) + `2a2ba4a`. Кампания **346/346, 0 выживших, 0 НЕ ИЗМЕРЕНО**, третья подряд начисто (327/336/346). ⛔ Починка САМА внесла блокер: посылка «такова форма, которую производит ингест» ложна — 68 прогонов из 4842 ломались, батарея при этом зелена, а посадка фиксировала дефект как норму; закрыто дифференциальным замером (ноль расходящихся абзацев из 11 404). **ГОТОВНОСТЬ РАТИФИЦИРОВАНА** с явным перечнем того, чего акт НЕ утверждает (платформа — на служебной базе; хостовое — предстартовые условия; «доезжает» ≠ «переводится»). Платформа: полная батарея, 0 пропусков — но путь к числу важнее: зелень при 487 пропусках была ничем. Деньги: $4 есть ОСТАТОК, потолки ниже него, размер за владельцем | приёмка+ратификация |
|
||||
| D39.270 | 18.09 | **ВЫДАЧА БЭКЕНД-ПАКА «ГРАНИЦА ГЛАВЫ» И ИМЕНОВАНИЕ ПАКА 2 ПО РЯДУ 303** — промт `docs/BACKEND_CHAPTER_STRUCTURE_SESSION_PROMPT.md`. Запрет `D39.224` п.7 УСЛОВЕН и этим паком ИСПОЛНЯЕТСЯ, а не отменяется; кто есть пак 2, промтом сказать нельзя — журнал бьёт промт. Предмет нашёл владелец: грамматику источника получает только текстовый путь ингеста, EPUB-путь не получает её вовсе. Фактура: целей навигации 71 (6 частей + 65 глав), тождеств 60, документов spine без цели 55 из 126 — и это вся проза; настоящих глав 81 плюс пролог; ярлык есть склейка двух абзацев, но 0/81 побайтно и 65/81 при нормализации. ⛔ Пак СДВИНЕТ ключ манифеста и китайской книги — `D39.269` B1 сужен эрратой 18.09-б. Два круга опровержения (14 находок и ещё 10) переписали пак; шесть моих утверждений, звучавших замером, названы выводами. | ЖИВАЯ |
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Журнал решений оркестратора — контракт D1–D39.269 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`)
|
||||
# Журнал решений оркестратора — контракт D1–D39.270 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`)
|
||||
|
||||
> **⟶ КАРТА АКТУАЛЬНОСТИ (ревизия D31, продлена до D38.2 [12.07]; исторические записи ниже НЕ переписываются — дисциплина D23.3).** Работая с контрактом (греп номера: живой файл → слайсы, целиком НЕ читать — D39.125), держи под рукой, что чем перекрыто:
|
||||
> ⚠ **Эррата 09.08 (D39.125):** D39.111 п.1 предписывал промту S3 «максимум = баланс МИНУС открытые холды» — формула ОШИБОЧНА (вычитание дважды), исправлена D39.115 п.2(а): максимум = Balance КАК ЕСТЬ; тело D39.111 — в слайсе `../archive/architecture/05-decisions-D39-106-123.md` (испр. 05.09: прежнее «живёт ниже в этом файле» протухло подрезкой D39.139) (голова D39.106+).
|
||||
|
|
@ -77,7 +77,7 @@
|
|||
> ⚠ **Эррата 05.09-е (D39.190 п.2) — «ПОТЕРЯННЫЙ ЗАГОЛОВОК У ШЕСТИ ГЛАВ ИЗ СЕМНАДЦАТИ» НЕ ИМЕЕТ НОСИТЕЛЯ.** Пункт 2 обосновывает вес структурной строки «свежей уликой полигона» — вычиткой семнадцати глав боевого перевода, нашедшей потерянный заголовок у шести глав из семнадцати (≈800 на книге). **Число подано без единой ссылки на файл**, и поиск первоисточника не дал его ни мне, ни независимо коллеге-Fable 05.09: в `eval/dovodka/` находится план на семнадцать глав, но не счёт потерянных заголовков. ⇒ Число НЕ отзывается — оно может быть верным, — но **опирать на него скоуп ЗАПРЕЩЕНО**: механизм потери не установлен (роняет модель? теряется на экспорте? не показывает читалка?), а лечение зависит от механизма. Титульная работа структурного пака стоит на СОБСТВЕННОМ основании — заголовок, не едущий по проводу, невозможно отрендерить, — а не на этой улике. Кто найдёт первоисточник, впишет адрес сюда.
|
||||
> ⚠⚠ **Эррата 05.09-г — НОРМА «ДЕРЕВО МОРОЗИТСЯ ЛИБО РЕВЬЮЕРУ НАЗЫВАЕТСЯ КОММИТ» ПРИПИСАНА `D39.172` ОШИБОЧНО; в её теле этого НЕТ.** Проверено: тело `D39.172` (пак `sqlc`) не содержит ни «морозится», ни «КОНКРЕТНОЕ дерево», ни «ревьюер» — оно про то, что чужие застейдженные правки уехали в чужой коммит под чужой подписью, то есть про гигиену коммита, а не про суждение о названном дереве. ⚠⚠ **ИСПР. в тот же час: первая редакция ЭТОЙ ЭРРАТЫ САМА ОВЕР-АТРИБУТИРОВАЛА ДВАЖДЫ** — назвала `D39.201` (её тело `D39.172` не цитирует ВОВСЕ) и пропустила `D39.180` и `D39.202` п.8, которые цитируют; плюс перевернула исток. **Замер:** `grep -n 'D39\.172' 05-decisions-log.md` → тела `D39.174` (×2) · `D39.180` · `D39.199` · `D39.202` · `D39.206`; `git log -S'судит КОНКРЕТНОЕ дерево'` → `0393e7a` (30.08, ПРОМТ) старше `8977001` (`D39.174`). ⇒ **норма родилась в `docs/ORCHESTRATOR_SESSION_PROMPT.md`, а ноты её унаследовали**, и ложную атрибуцию несут: `D39.174` · `D39.180` · `D39.199` · `D39.202` п.8 · `D39.206` + сам промт. ⚠ Поймано внешним ревьюером через час после написания: **эррата про овер-атрибуцию, написанная небрежно, — четвёртый случай того же класса за смену и худший из них, потому что стоит в шапке журнала, куда следующая сессия идёт первой.** ⚠ **Сама норма ВЕРНА и остаётся в силе** — операгивный носитель `ORCHESTRATOR_SESSION_PROMPT.md`, греп `судит КОНКРЕТНОЕ дерево`; ложна только атрибуция. Тела нот не переписываются (D23.3) — читать их через эту эррату. **Класс — ОВЕР-АТРИБУЦИЯ: ссылка на ноту, которая цитируемого не содержит; оркестратор допустил её сегодня ТРЕТИЙ раз** (прежние два: фраза «деньги покидают движок только внутри `spend`», которой в журнале нет, и подномер `D2.3`, оказавшийся про другое). Поймано сплошной вычиткой корпуса.
|
||||
> ⚠⚠ **Эррата 05.09-д (D39.196 п.5) — «ДВИЖКОВАЯ ПОЛОВИНА (СТРОКА 277) ПЕРВОЙ, БЕЗ НЕЁ В СТЕНУ УПИРАЕТСЯ ЛЮБОЙ ПУТЬ» ИСПОЛНЕНО: строки 277 и 278 ПОСТРОЕНЫ и СНЯТЫ** (лендинг `81a89e9`, акт `D39.206`). ⇒ **промт формы заказа, цитирующий эту ноту, НЕ должен заказывать защёлку и проекцию цены заново** — он начинается со строк **279–283**. ⚠ И строка **279** (контрактный минор «`shortfall` у паузы») обязана быть прочитана через `D39.203`/строку **294**: поле ПЕРЕИМЕНОВЫВАЕТСЯ, потому что владелец выбрал форму «сколько добавить» (величина `max(shortfall, step_max − headroom)`, кандидат имени `top_up_micro_usd`, `StreamVersion` 1.3→1.4). Зеркалить в контракт имя `shortfall_micro_usd` значит зеркалить приговорённое. ⚠ **Инвариантный пол при этом ОСТАЛСЯ:** последние ~2 главы не покупаются, пока не построена платформенная половина (строка 280) — стену десяти глав пак снял, пол нет.
|
||||
> ⚠⚠ **Эррата 05.09-в (D39.200 п.8б) — «ВСЕ 17 ПРОТУХШИХ ЯКОРЕЙ ТРАНЗИЕНТНЫ» НЕВЕРНО: СЕМЬ ГНИЮТ НА HEAD.** Пункт 8(б) обосновывал отказ чинить якоря тем, что все они целят в код под руками живых сессий, и предъявлял ЧЕТЫРЕ из семнадцати против `git show HEAD:` — четыре действительно стояли точно. **Обобщение с четырёх на семнадцать было выводом, а не замером, и ревизор его опрокинул проверкой всех.** Гниют на HEAD семь, все в `backend/docs/` (дерево этой зоны ЧИСТО, транзиентностью не объясняются): `DISCLOSURE_LAW_DESIGN.md:40` (`quality.go:228`, токен на `:233`) · `:41` (`status.go:684` → `:734`) · `:42` (`status.go:733` → `:817`) · `:43` (`bookbuild.go:221` → `:227`) · `:44` (`status.go:249` → `:275`) — эти СЪЕХАЛИ; а `:264` и `MONEY_HONESTY_REPORT.md:285` целят в `chunkrun.go:40`=`SourceEchoExpected: role == roleTerminologist` — этой подстроки на HEAD НЕТ ВОВСЕ, её съел вайр-батч (`isBankRole`), то есть якорь не съехал, а **умер**. ⇒ Десять остальных транзиентны, как и сказано, но вывод пункта в целом ложен. ✅ **ПОЧИНЕНО: `--lint` → 0 битых.** ⚠ **Раскол — ПЯТЬ и ДВА, а не шесть и один** (испр. по ревью, замерено `git show -U0`): `e7d6b3f` пере-навесил ПЯТЬ съехавших (`DISCLOSURE_LAW_DESIGN.md:40-44`), а ОБА МЁРТВЫХ (`:264` и `MONEY_HONESTY_REPORT.md:285`, целившие в исчезнувшую подстроку `chunkrun.go`) уехали раньше — дофиксом `616a8e4`. Шестой якорь коммита `e7d6b3f` — вообще другой предмет: архивный путь промта, в этом списке семи его не было. ⚠ И номера целей, названные выше по этой эррате, ЗОНА ПЕРЕ-СНЯЛА по содержимому — верить надо её замеру, а не спискам отсюда: продиктованные пингом номера были неверны. ⚠ И зона нашла БОЛЬШЕ, чем было в пинге: из шести пять оказались битыми ЕЩЁ ДО её пака — их скрывало то, что `backend/docs` добавили в корни линта только 04.09; чей это дрейф, она предъявила замером (`RebillBasis` стоял на 275 ещё в `81a89e9^`), иначе пять чужих долгов записались бы ей. ⚠ **Норма, которую это покупает, и она дороже самой ошибки: выборка, предъявленная как доказательство, доказывает ровно себя.** Четыре проверенных якоря обосновывают четыре, а не семнадцать; фраза «я проверил четыре, значит транзиентны все» — тот же класс, что «SURVIVED без доказательства, что посадка меняет поведение». Если проверять все дорого — так и писать: «проверено четыре из семнадцати, остальные НЕ проверены».
|
||||
> ⚠⚠ **Эррата 05.09-в (D39.200 п.8б) — «ВСЕ 17 ПРОТУХШИХ ЯКОРЕЙ ТРАНЗИЕНТНЫ» НЕВЕРНО: СЕМЬ ГНИЮТ НА HEAD.** Пункт 8(б) обосновывал отказ чинить якоря тем, что все они целят в код под руками живых сессий, и предъявлял ЧЕТЫРЕ из семнадцати против `git show HEAD:` — четыре действительно стояли точно. **Обобщение с четырёх на семнадцать было выводом, а не замером, и ревизор его опрокинул проверкой всех.** Гниют на HEAD семь, все в `backend/docs/` (дерево этой зоны ЧИСТО, транзиентностью не объясняются): `DISCLOSURE_LAW_DESIGN.md:40` (`quality.go:228`, токен на `:233`) · `:41` (`status.go:684` → `:734`) · `:42` (`status.go:733` → `:817`) · `:43` (`bookbuild.go:221` → `:227`) · `:44` (`status.go:249` → `:275`) — эти СЪЕХАЛИ; а `:264` и `MONEY_HONESTY_REPORT.md:285` целят в якорь вида `chunkrun.go:40` на токен `SourceEchoExpected: role == roleTerminologist` — этой подстроки на HEAD НЕТ ВОВСЕ, её съел вайр-батч (`isBankRole`), то есть якорь не съехал, а **умер**. ⇒ Десять остальных транзиентны, как и сказано, но вывод пункта в целом ложен. ✅ **ПОЧИНЕНО: `--lint` → 0 битых.** ⚠ **Раскол — ПЯТЬ и ДВА, а не шесть и один** (испр. по ревью, замерено `git show -U0`): `e7d6b3f` пере-навесил ПЯТЬ съехавших (`DISCLOSURE_LAW_DESIGN.md:40-44`), а ОБА МЁРТВЫХ (`:264` и `MONEY_HONESTY_REPORT.md:285`, целившие в исчезнувшую подстроку `chunkrun.go`) уехали раньше — дофиксом `616a8e4`. Шестой якорь коммита `e7d6b3f` — вообще другой предмет: архивный путь промта, в этом списке семи его не было. ⚠ И номера целей, названные выше по этой эррате, ЗОНА ПЕРЕ-СНЯЛА по содержимому — верить надо её замеру, а не спискам отсюда: продиктованные пингом номера были неверны. ⚠ И зона нашла БОЛЬШЕ, чем было в пинге: из шести пять оказались битыми ЕЩЁ ДО её пака — их скрывало то, что `backend/docs` добавили в корни линта только 04.09; чей это дрейф, она предъявила замером (`RebillBasis` стоял на 275 ещё в `81a89e9^`), иначе пять чужих долгов записались бы ей. ⚠ **Норма, которую это покупает, и она дороже самой ошибки: выборка, предъявленная как доказательство, доказывает ровно себя.** Четыре проверенных якоря обосновывают четыре, а не семнадцать; фраза «я проверил четыре, значит транзиентны все» — тот же класс, что «SURVIVED без доказательства, что посадка меняет поведение». Если проверять все дорого — так и писать: «проверено четыре из семнадцати, остальные НЕ проверены».
|
||||
> ⚠ **Эррата 05.09-б (D39.199 п.3) — ГРАНИЦА ПРИЁМКИ ЗАКРЫЛАСЬ ЧЕРЕЗ НЕСКОЛЬКО МИНУТ ПОСЛЕ АКТА.** Пункт 3 говорит «верификатор №2 успел прогнать 5 записей из 19, остальные 12 принял НА СЛОВО зоны» — это было верно на час написания. Прогон добежал: **19 mutation(s) run, 0 unexpected outcome(s), EXIT=0** — 18 RED плюс `WB62` `survives` как записано. ⇒ Утверждение зоны «все 17 новых записей предъявлены красными» подтверждено **ПРОГОНОМ**, а не со слов; ни один вывод верификатора не пересмотрен. ⚠ Что этим НЕ отменяется: находки вне карты (строки 287–290) сидят ВНЕ авторского списка, и красный прогон авторских записей их не опровергает — в частности `WB58` красна лишь потому, что каталог пары лежит на диске; при его отсутствии та же запись ПЕРЕЖИВАЕТ (строка 290). Остаток границы прежний: `-race` целиком не гонялся, живой 401 на хопе — PLAUSIBLE.
|
||||
> ⚠⚠ **Эррата 05.09-а (D39.84 п.1 и D39.100 К-8) — ЗАПРЕТ «ДЕНЕЖНЫХ ПОЛЕЙ В UI НЕТ ВОВСЕ» ОТОЗВАН ВЛАДЕЛЬЦЕМ, тела нот об этом НЕ ЗНАЮТ.** Тела D39.84 («оплат в MVP нет, денежных полей в UI нет вовсе») и D39.100 («запрет денег на экране D39.84 в силе и НЕ superseded») переписывать нельзя (D23.3), а читающий их ПО НОМЕРУ — как велит канон — видит запрет действующим. **Читать оба через `D39.196`:** владелец 05.09 отозвал запрет, баланс аккаунта, потолок заказа и холд ВЫХОДЯТ наружу деньгами; запрещённым остаётся другое и оно НЕ отменялось — цены моделей, стоимость стадий и вызовов, структура НАШИХ расходов (ПТ-33). ⚠ Носители запрета, которые обязан закрыть пак формы заказа, полным списком (⚠ **испр. 05.09: прежняя редакция называла несуществующую секцию yaml «§Credit» — такой секции в каноне нет, и идущий по списку упирался в пустоту; верный адрес — схема `Usage` и путь `/usage`**): `14-api-contract/openapi.yaml` **§Boundaries** (⚠ испр. 05.09 второй раз: две предыдущие редакции звали этот абзац «§Transport» — секция `## Transport` в файле есть, но денежный абзац лежит в `## Boundaries`; ошибка того же класса, что несуществующий «§Credit») · схема **`Usage`** · **`CeilingBounds`** · `docs/architecture/15-money-path.md` §1 · §4 · таблица §6 · `docs/product-requirements.md` ПТ-35 · **`docs/glossary.md`** · **`docs/architecture/13-tech-debt-anchors.md` §Б-126** · зеркало фронта · `frontend/docs/API_CONTRACT_INPUT.md` §4.8 · `platform/docs/ENGINEERING_STANDARDS.md` (зонный) · **`platform/README.md`** (зонный; добавлен 05.09 — в первых двух редакциях списка его не было). Первая редакция списка в компаньоне канона была НЕПОЛНА — три носителя добавлены ревизией 05.09, ещё один и поправка адреса — ревизией того же дня. ⚠ **Прозаические указатели на отзыв уже проставлены 05.09** в `15-money-path` (§1/§4/§6), ПТ-35, глоссарии и в yaml (`Usage`/`CeilingBounds`/шапка §Transport); ПОЛЯ приезжают паком — схема впереди кода не едет.
|
||||
> ⚠⚠ **Эррата 04.09-д (D39.195) — ПАК НЕ ПРИНЯТ, заголовок ноты ЛОЖЕН, и ошибка классификации — оркестраторская.** Нота объявила движковый вайр-батч «ПРИНЯТ И ЗАКРЫТ» и перевела найденное кругом 4 в строки бэклога **256–264**. **Владелец поправил зону прямо: «сворачивал — да, но сдавать несданную багованную работу не говорил».** Он прав. «Прекратить полировку» было применено к вещам, полировкой НЕ бывшим: ложный пин (`WB15`, тот же дефект, что чинился в `WB36`), близнец денежной дыры на лейбловой ветке `CheckKeys`, разрыв фингерпринта каталога, и семь пинов, которые слабее собственных формулировок. **Отчитаться о баге — не значит его сдать**, и различение это принадлежит владельцу, а не сессии и не оркестратору. ⚠ **Классифицировала зона, но РАТИФИЦИРОВАЛ оркестратор** — ошибка моя не меньше: акт приёмки существует, чтобы такую подмену ловить, а он её узаконил. Зона чинит и держит сдачу; строки 256–264 закрываются её лендингом, а не остаются долгом. ⚠⚠ **ЭТА ЭРРАТА ИСЧЕРПАНА 05.09 АКТОМ `D39.199`: пак ПРИНЯТ С ДОФИКСОМ на приёмочном коммите `74ffe4f`. Читающий её сегодня — читает историю, а не действующее указание** (испр. 05.09: сутки она стояла первой строкой, которую видел идущий к D39.195 по номеру, и предписывала считать пак непринятым). Ниже — как было. **До нового акта пак считать НЕ ПРИНЯТЫМ**; коммиты `b8154cd`/`c77c3ba`/`ecf063e`/`2e13cd1` в дереве остаются (код рабочий и батарея зелёная), но приёмкой они не покрыты. ⚠ Норма, которую это покупает: **свёрнутый круг закрывает ПОИСК, а не ПОЧИНКУ уже найденного** — найденное и не починенное не превращается в долг решением о темпе.
|
||||
|
|
@ -364,6 +364,16 @@
|
|||
> ⚠ Провенанс: нашла `textmachine-main-c5` на входной батарее своего пака, назвала как «не мой предмет» и
|
||||
> не стала чинить — по §2 промта. Диагноз («отношение слепо к ИЗМЕНЕНИЮ нагрузки между половинами») и форма
|
||||
> лечения (A-B-A-B с медианой либо нормировка на опорный замер) — её, записаны в ряд дословно.
|
||||
> ⛔ **Эррата 18.09-б (`D39.269` п. B1 — «китайская половина неподвижна»): УТВЕРЖДЕНИЕ СУЖЕНО, И СУЖЕНО
|
||||
> ЗАРАНЕЕ, А НЕ ПОСЛЕ ПРОПАЖИ.** Пункт верен как сказан — про ТОТ пак: тронутых входов, сворачивающихся в ключ
|
||||
> манифеста, было ноль. Но читается он как свойство ДЕРЕВА, а он есть свойство ОДНОГО ПАКА, и следующий же пак
|
||||
> («граница главы», `D39.270`) его снимает: правка правила ингеста бампает версию нарезки по конвенции самого
|
||||
> кода (`backend/internal/pipeline/manifest.go:355`=`treats an ingest-rule change as a chunkerVersion bump`), а
|
||||
> отпечаток структуры несёт версию алгоритма даже у ПУСТОЙ грамматики
|
||||
> (`backend/internal/lang/structure.go:104`=`structureAlgoVersion + "-none"`) ⇒ **ключ манифеста китайской книги
|
||||
> сдвинется**. ⇒ читать B1 следует как «неподвижна ПО СОСТОЯНИЮ НА `dca0e06`», а не как гарантию на будущее.
|
||||
> ⭐ Класс, ради которого эррата написана: **утверждение о неподвижности всегда датировано, и дату надо писать
|
||||
> внутри него** — иначе следующая смена прочтёт снимок как инвариант и обнаружит разницу пере-оплатой.
|
||||
|
||||
|
||||
## D22. Приёмка пакетов «бэкенд №3» и «полигон-erotica» + развязки 18+/эха/L3 (10.07, оркестратор). ✅
|
||||
|
|
@ -1914,7 +1924,7 @@ head-1 это семнадцать бюджетируемых операций,
|
|||
3. **После пополнения баланса прогон возобновляется ЯВНЫМ действием пользователя, а не сам.** Пункт «авто-резюм `paused`» висел в листе владельца с 08.08 в форме, умершей вместе с оконной моделью; зона записала вывод сама (`PLATFORM_DIRECTION.md`), владелец его подтвердил — **пункт снят с листа**, вывод зоны становится ратифицированным.
|
||||
4. **Фразы, которые видит пользователь (В-3 · К-6 · Приложение А), ДЕЛЕГИРОВАНЫ проекту** — слово: «оставляю проектирование фраз на вас, главное чтоб это было интернациональным». ⚠ Это не «свобода формулировки», а **инженерное требование**: фраза не может быть литералом ни в Go платформы, ни в TSX фронта — только данными, ключуемыми машинным кодом причины и локалью (механизм языков интерфейса уже построен, `ПТ-36`/`В-9`). Следствия: словарь фраз — носитель ДАННЫХ, один на продукт; `PD-246` (граница `attention`/`glance` — сегодня ДОГАДКА платформы по 15 причинам движка) закрывается вместе с ним, а не отдельно; строка **204** (движок не публикует причины флагов данными) становится его гейтом. Проектирование — оркестратор + зоны, подпись владельца больше не ожидается.
|
||||
5. **Осталось на владельце из платформенного листа — ОДИН пункт, и он переформулирован** (`PD-421`): держит ли ОТКРЫТЫЙ поток событий сессию живой. Владелец ответа не дал, попросив раскрыть предмет; вопрос переформулирован в терминах продукта и вынесен заново.
|
||||
6. ⚠ **Ключи провайдеров — развилка снята фактом, а не решением:** движок берёт их ДВУМЯ путями (`--keys-file` деплоя ПОБЕЖДАЕТ конвенционный `.env` рядом с `book.yaml` — `backend/cmd/tmctl/invocation.go:145`=`keys-file`), формат обоих — `KEY=VALUE`. Владелец 30.08 сообщил, что чинил ключи движка; **из этого следует, что холодный прогон движка (очередь №20 п.2) разблокирован, а живой прогон через API (п.3) — нет**: платформа читает СВОЙ путь (`TM_PLATFORM_ENGINE_KEYS_PATH`, `platform/internal/config/config.go:559`=`l.env("TM_PLATFORM_ENGINE_KEYS_PATH", "")`), и по записи P9 живых ключей в нём не было. Лечение — операционное и $0: направить переменную платформы на уже заполненный файл (формат совпадает), проверять — прогоном, не чтением (гардрейл `.env` в силе, оркестратор файлов ключей не открывал).
|
||||
6. ⚠ **Ключи провайдеров — развилка снята фактом, а не решением:** движок берёт их ДВУМЯ путями (`--keys-file` деплоя ПОБЕЖДАЕТ конвенционный `.env` рядом с `book.yaml` — `backend/cmd/tmctl/invocation.go:145`=`keysFile := fs.String("keys-file", "", "translate: path to the DEPLOYMENT's provider-key file (KEY=VALUE lines). Loaded FIRST, so it wins over the .env beside book.yaml; a named file that cannot be read is a refusal, never a silent skip")`), формат обоих — `KEY=VALUE`. Владелец 30.08 сообщил, что чинил ключи движка; **из этого следует, что холодный прогон движка (очередь №20 п.2) разблокирован, а живой прогон через API (п.3) — нет**: платформа читает СВОЙ путь (`TM_PLATFORM_ENGINE_KEYS_PATH`, `platform/internal/config/config.go:559`=`l.env("TM_PLATFORM_ENGINE_KEYS_PATH", "")`), и по записи P9 живых ключей в нём не было. Лечение — операционное и $0: направить переменную платформы на уже заполненный файл (формат совпадает), проверять — прогоном, не чтением (гардрейл `.env` в силе, оркестратор файлов ключей не открывал).
|
||||
|
||||
## D39.177 — ПЕРЕДАЧА РОЛИ ОРКЕСТРАТОРА №20 → №21: что смена приняла и построила, четыре моих ошибки (две поймал владелец) и очередь, сверенная деревом (31.08). ✅
|
||||
|
||||
|
|
@ -5026,3 +5036,55 @@ $0.38 из $6.65) измерен, не починен · **303** не трону
|
|||
процессов · `find` на относительном времени · копия под идущим мутатором · `awk`-диапазон по телу ноты ·
|
||||
пофайльный `diff` по пути без префикса каталога. ⭐ Формулировка зоны, накрывающая класс: **оба прибора
|
||||
честны, и именно поэтому расхождение читается как порча данных, а не как разные вопросы.**
|
||||
|
||||
## D39.270 — ВЫДАЧА БЭКЕНД-ПАКА «ГРАНИЦА ГЛАВЫ»: ЭТОТ ПРОМТ ЕСТЬ «ПАК 2» ПО РЯДУ 303 (18.09)
|
||||
|
||||
**Носитель — `docs/BACKEND_CHAPTER_STRUCTURE_SESSION_PROMPT.md`.** Нота нужна потому, что промт есть ЗАКАЗ, а не
|
||||
ратификация: `D39.224` п.7 запрещает трогать ось «обязательность юнита» **вне пака 2**, а кто есть пак 2 — в
|
||||
ратифицированном тексте не сказано нигде (единственные вхождения имени — сам п.7 и ряды 302/303). Одной строкой
|
||||
в промте такое не снимается: при конфликте промта с журналом побеждает журнал, и сессии предписано в этом
|
||||
случае не строить, а пинговать.
|
||||
|
||||
**1. ИМЕНОВАНИЕ.** Пак 2 по ряду **303** — это указанный промт. Запрет `D39.224` п.7 УСЛОВЕН («вне пака 2») и
|
||||
потому **исполняется, а не отменяется**: внутри этого пака ось «обязательность юнита» трогать можно и нужно.
|
||||
Ряды 302 (несколько глав в одном документе) и §9 дизайна (большой перекрой с миграциями) в пак НЕ входят.
|
||||
|
||||
**2. ПРЕДМЕТ, и его нашёл владелец одной фразой** — «у нас есть статический код который смотрит глава ли это и
|
||||
как она названа, там как то это все должно склеиваться». Замер подтвердил дословно: диспетчер ингеста отдаёт
|
||||
грамматику источника только текстовому пути (`backend/internal/chunk/ingest.go:243`=`func ingestTXT(p, encoding, sourceLang string, st *lang.SourceStructure)`),
|
||||
а `backend/internal/chunk/ingest.go:678`=`func ingestEPUB(p string, im *lang.InlineMarkup)` не получает её вовсе.
|
||||
⇒ механизм, умеющий сказать «это глава и вот её имя», работает на одном пути из двух.
|
||||
|
||||
**3. ФАКТУРА, снятая мною и пере-снятая кругом опровержения (книга прогона, EPUB 2.0, $0).** Целей навигации
|
||||
**71** = 6 ярлыков частей + 65 ярлыков глав. Тела целей: **60** побуквенно равны ярлыку · **7** коротки и не
|
||||
равны (2 титула частей + 5 осколков оглавления) · **4** несут прозу. Документов spine **без навигационной цели
|
||||
— 55 из 126, и это вся проза книги**: навигация адресует осколки, а не текст. Настоящих глав **81** (форма:
|
||||
голое римское числительное, затем имя прописными), плюс пролог `SUNSET` с тремя номерами БЕЗ имён. Ярлык
|
||||
навигации есть склейка двух абзацев прозы, но **не побайтно: 0 из 81 побайтно и 65 из 81 при нормализации
|
||||
регистра и апострофа** ⇒ шестнадцать глав навигация не называет вовсе.
|
||||
|
||||
**4. ЧТО ПАК СДВИНЕТ В ДЕНЬГАХ — названо ДО выдачи.** Правка правила ингеста бампает версию нарезки по
|
||||
конвенции самого кода (`backend/internal/pipeline/manifest.go:355`=`treats an ingest-rule change as a chunkerVersion bump`),
|
||||
а в ключ манифеста сворачиваются и она, и отпечаток структуры, причём отпечаток несёт версию алгоритма даже у
|
||||
ПУСТОЙ грамматики (`backend/internal/lang/structure.go:104`=`structureAlgoVersion + "-none"`). ⇒ **ключ манифеста
|
||||
китайской книги сдвинется тоже.** Сегодня это бесплатно, и условие названо словами: бесплатно ⇔ ни одну
|
||||
существующую базу с оплаченными чанками никто не продолжает (все 161 объявлены одноразовыми — `D39.63` п.3,
|
||||
`D39.190` п.4), а продуктовый путь на хосте НЕ проверен (`TM_PLATFORM_BOOKS_DIR` не задан ⇒ «не нашёл», а не
|
||||
«проверил»). Пак лендится ДО фриза холодного прогона; пре-регистрированные числа среза в
|
||||
`docs/COLDRUN_TWO_BOOKS_SESSION_PROMPT.md` после него протухают и пере-регистрируются паком прогона.
|
||||
|
||||
**5. ДВА КРУГА ОПРОВЕРЖЕНИЯ, и оба переписали пак, а не украсили его.** Круг 1 — 14 находок, 9 мажоров; круг 2
|
||||
— ещё 10 плюс ответы на четыре заданных вопроса. Все обязательные внесены. ⛔ **Мои ошибки, названные прямо,
|
||||
потому что они одного класса:** «настоящих глав шесть» (неверно дважды подряд) · «навигация о заголовках не
|
||||
знает» (она называет 65 поимённо и целит не туда) · «дом ратифицирован — книжный оверлей» (оверлей такой файл
|
||||
ОТКАЖЕТ: `backend/internal/lang/langpack.go:463`=`an overlay merges only the source/pair manifest files`) ·
|
||||
«84 главы» подано замером, тогда как это ВЫВОД прибора · пример родового правила для остатка, ловящий 0 из 5 ·
|
||||
приор «центрированный абзац», требующий правки функции, которую тот же пак запрещает трогать.
|
||||
⭐ **Класс, ради которого это записано:** все шесть — утверждения, которые ЗВУЧАЛИ как замер и держались на
|
||||
одном приборе. Первый мой счётчик дал 3 главы вместо 84, потому что регексп требовал `class` первым атрибутом,
|
||||
а первым стоит `id`; поймано печатью контрольной величины рядом с числом, и только ею.
|
||||
|
||||
**6. ГРАНИЦА АКТА.** Акт утверждает ИМЕНОВАНИЕ пака 2 и выдачу промта. Он НЕ утверждает: судьбу пролога (её
|
||||
объявляет сессия числом в §4.4) · форму лечения ряда 303 (дизайн §8.2 не ратифицирован) · что имя главы доедет
|
||||
до книги читателя — замерено, что НЕ доедет (`TitleRaw` в билдере выдачи 0 вхождений, заголовок берётся из
|
||||
`backend/internal/pipeline/bookbuild.go:554`=`t := ce.Heading`), и это остаётся долгом рядов 284 и 201.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue