65 lines
17 KiB
Markdown
65 lines
17 KiB
Markdown
# Промт: сессия-РЕСЁРЧЕР — логическая нарезка + меж-чанковая когезия + дизайн эмпирики (трек B), 2026-07-13
|
||
|
||
> Рождён из арх-ресета **D39** (`docs/architecture/05-decisions-log.md`, `09-target-architecture.md` §2 слой 1, §4 трек B). Это **ресёрч ПЕРЕД постройкой** для сцепленных концернов **1 (разделение переводчик/редактор), 2 (нарезка), 4 (частично)**. Ты НЕ пишешь прод-код и НЕ гоняешь платную эмпирику — ты (1) добываешь best-practices, (2) проектируешь реализуемый чанкер+когезию, (3) выдаёшь ПРЕ-РЕГИСТРИРОВАННЫЙ дизайн полигон-эмпирики, которую потом исполнит полигон-сессия.
|
||
|
||
## Зачем эта сессия (мета)
|
||
Потолок художественности — в НАШЕЙ нарезке/проходах, не в моделях (D39). Три сцеплены: редактор репараграфизует ВНУТРИ ~1500-токенного чанка → нарезка ограничивает потолок дискурс-переверстки и «понимания связей». Владелец: **нарезка нетривиальна** — глава может быть >> загружаемого чанка, резать надо по **логическим** единицам (статический код, фоллбеки, интернет-best-practices), а не «все китайские книги такие, грузим главы». Нужно спроектировать это правильно И спроектировать эксперимент, который разрешит открытые вопросы, а не соберёт ложную сходимость (полигон делал это трижды — D32.4).
|
||
|
||
## Зона и дисциплина
|
||
- **Зона записи — `docs/research/` только** (новый отчёт, напр. `docs/research/19-chunking-cohesion.md`). Ничего не коммитишь — лендит оркестратор после верификации первоисточников (как research/15–18).
|
||
- **Гардрейлы (CLAUDE.md):** НЕ читать `.env`; 18+ уровень 3 — не открывать `eval/data/*corpus*`, `/home/ubuntu/books/` (кроме метаданных/структуры, если понадобится оценить размеры глав — тогда ТОЛЬКО счётчики, не содержимое explicit).
|
||
- **Правило двух направлений:** несущий клейм → первоисточник; аномалия/best-practice тула → офиц. дока. Не абсорбируй фреймворк-маркетинг как факт.
|
||
- **Анти-анкоринг (как research/18):** §A своего вывода замораживай (sha256) ДО чтения нашего стека/предыдущих отчётов, чтобы независимость была реальной.
|
||
- **Мандат самопроверки (CLAUDE.md):** несущие клеймы верифицируй адверсариально своим воркфлоу (author≠reviewer внутри сессии: твой «CONFIRMED» — по первоисточнику, не по вторичке); отметь, где сходимость общая-ногой-литературы, а не 3 независимых голоса.
|
||
|
||
## Онбординг
|
||
1. `CLAUDE.md` → `docs/architecture/09-target-architecture.md` (§2 слой 1 — целевой чанкер; §4 трек B — вопросы) → `08-sync-audit-ledger.md` дорожка **L2** (все находки нарезки) + `L1` (контракт переводчик/редактор).
|
||
2. `docs/architecture/05-decisions-log.md` **D39** + D30.2 (`:366` — reflow-механизм открытый вопрос) + D35 (`:471` — декаплинг = un-ratified кандидат).
|
||
3. **Код нарезки** (грунтовка, не по заголовкам): `backend/internal/pipeline/chunker.go` (жадная упаковка абзацев в `targetChunkTokens=1500` const, спуск до предложений; границы бюджетные), `ingest.go` (как формируются главы), `chunkrun.go` (чанк = единица И черновика И редактуры; инъекция только глоссарий — меж-чанковой когезии нет), `render.go`/`config/pipeline.go` (`STMDepth`/`OverlapTokens` — мёртвые заглушки).
|
||
4. **Предыдущая эмпирика:** `docs/experiments/14-quality-empirics.md` (кривая размера чанка §2Б.4; A-ref ±1 §2.4; P1c глава-целиком §2.3) + `docs/research/18-quality-levers.md` §A (Ось-4: держать чанк МЕЛКИМ + carryover; глоссарий ≈14% дискурс-ошибок, дейксис ~37%, эллипсис ~29%) + `16-reader-ide-alignment.md`, `12-*` (дискурс-нормы, кросс-предложенческая когезия).
|
||
|
||
## ⚠ ЦЕНТРАЛЬНЫЙ КОНФЛИКТ, который сессия ОБЯЗАНА адресовать
|
||
**exp14 §2Б.4** намерял: крупнее чанк = дешевле выходных токенов И лучше абзацы (оптимум ~3200c/глава, 0 ретраев) → «edit=крупная единица». **research/18 §A Ось-4** заключает ОБРАТНОЕ для прода: держать чанк МЕЛКИМ (малый retry-blast-radius, Lost-in-Middle), а когезию давать кэшированным running-summary/carryover — «а НЕ размером единицы». Оба клейма grounded, но **противоречат по размеру edit-единицы**. Твой дизайн эмпирики должен этот конфликт РАЗРЕШИТЬ (на retry-adjusted-cost + на реальном вебновелл-срезе, не PD-классике), а не выбрать сторону догадкой.
|
||
|
||
## ЗАДАЧИ
|
||
|
||
### Задача 1 — Best-practices логической/семантической нарезки (интернет + академия)
|
||
Добудь и адверсариально верифицируй, КАК правильно нарезать крупный НАРРАТИВНЫЙ текст на логические единицы, когда глава >> окна модели:
|
||
- Инженерные best-practices: recursive/semantic splitting, sentence-window / parent-document, discourse/scene-boundary detection, topic segmentation (TextTiling и потомки), overlap-стратегии — с их РЕАЛЬНЫМИ ограничениями (не маркетинг фреймворков).
|
||
- Как это делают CAT/пром-MT тулы и переводчики-практики (сегментация по смысловым блокам, не по строкам).
|
||
- Академия по кросс-предложенческой когезии, релевантная нарезке: Voita (дейксис/эллипсис/когезия), DelTA / running-summary, document-level MT context windows.
|
||
**Выход:** реализуемый в СТАТИЧЕСКОМ Go-коде дизайн: (а) стратегия `logical` (сцена/диалог/тема-граница) с **фоллбек-лестницей** и инвариантом «никогда не резать предложение»; (б) какие сигналы границы детектируемы БЕЗ модель-вызовов (дёшево — владелец: «не модель-вызовами размечать чанк»); (в) конкретные фоллбеки при провале детекции. Рассмотри ВСЕ кейсы, не только «1-2-3-4 мелкие главы влезли в чанк» (это простейший).
|
||
|
||
### Задача 2 — Дизайн меж-чанковой когезии
|
||
Спроектируй механизм, закрывающий претензию-2 «понимание связей» при чанк-изоляции + zh zero-anaphora:
|
||
- running bilingual summary + carryover соседних единиц (оживить `STMDepth`/`OverlapTokens`), cache-friendly (порядок кэша важен — research/18);
|
||
- ±1 reference-контекст (exp14 дал null на PD-срезе — но домен-mismatch: нужны РЕАЛЬНЫЕ кросс-граничные трапы вебновеллы);
|
||
- как это НЕ ломает деньги/снапшот/детерминизм (read-only контекст, fold в снапшот).
|
||
|
||
### Задача 3 — Дизайн контракта переводчик/редактор (концерн 1)
|
||
research/07 предписывает узкие мандаты + диффы, не полную перегенерацию; прод-редактор = ОДНА full-regen с 4 мандатами (причина инверсий D34.3). Спроектируй (для эмпирики, не для прода):
|
||
- арм **«переводчик отдаёт структурный ~верный черновик»** vs «редактор-переписыватель» — **НИКОГДА не тестировался** (exp14 держал модель черновика константой);
|
||
- diff-based редактор (search/replace + детерм. apply) как узкий проход — оценка ROI (blast-radius, COGS, omission-safety).
|
||
|
||
### Задача 4 — ПРЕ-РЕГИСТРИРОВАННЫЙ дизайн полигон-эмпирики (для исполнения полигоном)
|
||
Спроектируй эксперимент, разрешающий концерны 1/2/4 БЕЗ ложной сходимости. Не полный факториал (24 ячейки — неподъёмно) — **набор целевых 2-арм контрастов к общему якорю** на едином **МАРКИРОВАННОМ вебновелл-срезе** (не PD-классика — гейт «вне претрейна»):
|
||
- **Q1 (нарезка):** `граница greedy vs logical` при фикс. edit-единице → чинит ли логическая граница когезию (претензия-2).
|
||
- **Q2 (edit-единица, РАЗРЕШАЕТ КОНФЛИКТ):** `edit=чанк vs edit=глава/крупная` на **retry-adjusted** COGS + когезия.
|
||
- **Q3 (когезия):** `нет vs running-summary/carryover` при МЕЛКОМ чанке → закрывает ли carryover кросс-границу (клейм research/18).
|
||
- **Q4 (контракт):** `где reflow: переводчик vs редактор vs отдельный-пасс` + арм сильного переводчика.
|
||
- **Обязательно:** маркированный набор КРОСС-ГРАНИЧНЫХ трапов на вебновелл-срезе (аудит: §D-1 «locus когезии не размечен»); methodology-guard D32.4 (fidelity-first агрегация, leave-one-out судей, катастроф-скрин к победителю тоже, per-call кап, пре-регистрация ЗАМОРОЖЕНА коммитом ДО первого платного вызова, каждый скрипт персистит usage/cost).
|
||
|
||
## Полигон-синк — ОТВЕТЫ получены (2026-07-13), ВПЛЕТИ в дизайн
|
||
Оркестратор синканулся с полигон-сессией 14/14б. Факты (grounded по артефактам, всё ВНЕ git в `exp14/`):
|
||
1. **Translate-арм НЕ гонялся:** frontier-as-ПЕРЕВОДЧИК спот-чек (14:148) планировался, но `exp14/costs.jsonl` — только РЕДАКТОРСКИЕ армы (ре-редактуры фикс. flash-черновика). Draft-swap/translate-плеча НЕТ. → **«переводчик отдаёт структуру» (Q4) — чистое поле, ни одного датапоинта.**
|
||
2. **Реюз (дёшево):** кривая размера — выходы `exp14/sizecurve/{17,13}-{800c,1600c,3200c,whole}.txt` + `sizecurve.json`; исходник = детерм. `chapter_source()` из `material.json`; границы байт-воспроизводимы (жадный `rechunk(budget)` детерминирован). A-ref — `exp14/arms/A-ref-{prev,both}/{11.1,24.1}.txt` + `material.json→trap_chunks`. **⚠ `A-ref-next` НЕ гонялся** (только prev/both) — next-supported/катафора-плечо ОТСУТСТВУЕТ.
|
||
3. **Кросс-граничный null = ДОМЕН-АРТЕФАКТ, не бесполезность рычага:** чистого next-supported/катафора-трапа в раннем срезе не нашлось; T5/T6 локально самодостаточны → A-ref-prev байт-идентичен «чинить нечего» (14:93/257/290). Маркированного кросс-граничного набора НЕТ. §D-1 (locus когезии не размечен) в силе.
|
||
4. **Сцен-граница — СОЗНАТЕЛЬНО не гонялась:** докстринг `exp14_sizecurve.py:10-11` — ранняя арка 蛊真人 **структурно плоская** (1 предл./строка, мало сцен-маркеров) → «сцена vs жадная» слабо различима на ЭТОМ тексте. Не тулинг/время — домен.
|
||
|
||
**СКВОЗНОЙ ВЫВОД (несущий для дизайна):** три из четырёх пробелов (Q1/Q3/Q4) — непротестированные допущения на НЕПОДХОДЯЩЕМ домене (плоская ранняя арка 蛊真人), а НЕ отрицательные результаты. Прямые следствия для §D:
|
||
- **Домен-пригодность — ПЕРВЫЙ шаг эмпирики.** Сначала **характеризовать структуру целевой книги** (蛊真人 целиком, не только ранняя арка: есть ли сцен-маркеры, кросс-главные зависимости, разброс длины глав) — ТОЛЬКО метаданные/структура, не explicit-содержимое. Если книга плоская и дальше → это САМО ПО СЕБЕ находка: логическая/сцен-граница для НЕЁ малополезна, доминирующий рычаг = внутри-чанк верность (T1-floor) + размер edit-единицы, а не граница. Не строить сцен-чанкер под домен, который его не задействует.
|
||
- **Трап-набор Q1/Q3/Q4 должен быть на срезе С выраженной сцен-структурой + реальными кросс-граничными зависимостями** (маркированный, вебновелл, вне претрейна) — иначе снова неинформативный null. Выбор среза обоснуй характеризацией (шаг выше).
|
||
- **Дешёвый путь (от полигона):** реюзать кривую (Q2) + A-ref-prev/both как есть; дозаказать только `A-ref-next` + translate-плечо (Q1 реюзит те же 2 T-трапа почти бесплатно); маркированный кросс-граничный + сцен-структурированный набор разблокирует Q3+Q4 разом.
|
||
|
||
## Deliverable
|
||
`docs/research/19-chunking-cohesion.md`: §A (заморожена sha256, ДО чтения стека) · §B (best-practices нарезки+когезии, реализуемый Go-дизайн + фоллбеки) · §C (дизайн контракта t/e) · §D (пре-регистрированный арм-дизайн Q1–Q4 + маркированный трап-набор + methodology-guard) · §E (открытые вопросы владельцу/бэкенду). Несущие клеймы — с первоисточником; отметь общую-ногу-литературы vs независимые голоса. Оркестратор верифицирует по первоисточникам и лендит; полигон-эмпирику по §D запускаю отдельным промтом ПОСЛЕ (author≠reviewer). **Ничего не коммить.**
|