From 5a502e7c4370780e9fba366c46ac13cd35ca3de7 Mon Sep 17 00:00:00 2001 From: heaven Date: Sat, 5 Sep 2026 21:57:05 +0300 Subject: [PATCH] Name what the cut gate actually compares, since the pack itself mints new unit ids and the full manifest could never match --- docs/CHAPTER_STRUCTURE_SESSION_PROMPT.md | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/docs/CHAPTER_STRUCTURE_SESSION_PROMPT.md b/docs/CHAPTER_STRUCTURE_SESSION_PROMPT.md index 8d459237..a5133e47 100644 --- a/docs/CHAPTER_STRUCTURE_SESSION_PROMPT.md +++ b/docs/CHAPTER_STRUCTURE_SESSION_PROMPT.md @@ -273,10 +273,20 @@ and the read-only path so status/export/report reproduce the identical snapshot **Зелено, если выполнено ОДНО из двух:** -- **(а)** разрез стенд-книги воспроизводится **байт-в-байт** против пина §2.1, ЛИБО +- **(а)** **РАЗРЕЗ** воспроизводится байт-в-байт против пина §2.1 — и предмет сравнения назван точно: + **id глав и их номера**, ЛИБО - **(б)** расхождение **перечислено**, приложена **машинная карта сдвигов**, в отчёте **ЯВНО названа цена: что именно теряется и у кого**, и это **подписано владельцем**. +⛔⛔ **ЧТО В СРАВНЕНИЕ НЕ ВХОДИТ, иначе ветка (а) недостижима по построению.** `key` и **unit-id +ОБЯЗАНЫ сдвинуться** — каждый unit-id склеен как `chapterID:cutTag:idx` (`manifest.go:220-221`), а +§2.2 прямо ТРЕБУЕТ, чтобы компонент `Structure` вошёл в `cutInputs` и двинул `cutTag`; шапка того же +кода обещает «ANY re-cut mints new unit ids across the whole book» (`:218`). ⇒ полный JSON разойдётся +у КАЖДОГО конфига, и разойдётся **не на дефекте, а на работе, которую пак сам заказал**. Это не +расхождение, а исполнение §2.2, и одноразовая перечеканка id уже учтена отдельной ценой — строка +бэклога **298** прямо говорит, что она «другой предмет и другая цена». +⇒ **Сверяешь id глав и номера. `key` и unit-id — движутся, и это ожидаемо.** + ⛔ **Почему не только (а).** Чистое «байт-в-байт» защищало бы ОШИБКИ нынешнего разреза: правильный детектор чинит главы-огрызки, а гейт бы его за это не пустил. Это **девятая форма ложной зелени — гейт, ЗАЩИЩАЮЩИЙ дефект** (`D39.202`). ⚠ Такого детектора **в паке 1 нет** (он в §5, пак 2) — довод @@ -294,8 +304,13 @@ and the read-only path so status/export/report reproduce the identical snapshot ветка (а) провалена по построению, и требовать под них подпись владельца бессмысленно. Они — прибор §2.1 п.3: их новый разрез **ИЗМЕРЯЕТСЯ и идёт в отчёт числом**, а не гейтится. -⚠ **Ожидаемый исход для 蛊真人 — ветка (а).** В паке 1 её разрез может сдвинуть только -`\f`-конкуренция. Ветка (б) существует на случай, если `\f` там окажется. +✅ **ВЕТКА (а) ДЛЯ 蛊真人 ОБЕСПЕЧЕНА ЗАМЕРОМ, а не надеждой.** Шаг 0 сессии 05.09: форм-фидов +**НОЛЬ во всех шести файлах стенда**, значит ветка отката конкуренции не срабатывает нигде и разрез +боевой книги сдвинуть НЕЧЕМ. Там же: `話` в 蛊真人 — **ноль вхождений вообще**, поэтому сведение +чанкера к пяти юнитам не меняет ни одного её чанка и ни одного контент-хеша; ветка (б) по инвентарю +не нужна. ⚠ **Обратная сторона, и она про твою самопроверку:** раз `\f` в реальных книгах нет, +**путь конкуренции проверяется ИСКЛЮЧИТЕЛЬНО синтетическими фикстурами** — они здесь единственная +улика, и потому именованный артефакт §4 обязан целить именно туда, а не только в `nav`. --- @@ -318,7 +333,7 @@ and the read-only path so status/export/report reproduce the identical snapshot пустая глава номер не потребляет, а `title_raw` поедет параллельным срезом, и промах на одну позицию даст заголовок главы N на главе N+1 **молча**. Тот же класс уже чинили для ruby (`ingest.go:568-605`, `denseNo`). -7. **Именованный артефакт:** посади дефект в разбор `nav` так, чтобы одна глава потерялась молча, +7. **Именованный артефакт — ДВА, и второй важнее:** посади дефект в разбор `nav` так, чтобы одна глава потерялась молча, и предъяви **имя покрасневшего теста**. Не краснеет ничто — это находка, а не повод двигаться. ⚠ **Каталог мутаций** (`backend/cmd/tmmutate`): `-root` обязан быть КОПИЕЙ; копия вне git ⇒