19 KiB
⟶ ОТРАБОТАН (2026-07-16), ЗАЛЕНДЕН D39.1. Выход:
docs/research/19-chunking-cohesion.md(+-sources.md, 52 клейма: 36 CONFIRMED / 16 OVERSTATED-с-коррекциями, 65-агентный веб-воркфлоу + 5-линзовое само-ревью, 8 MAJOR исправлены до сдачи). Ключевое: конфликт exp14↔research/18 разрешён как ложная дихотомия (эмиссия ≠ окно чтения ≠ единица связности); Go-спека чанкера (профиль→B0–B5→DP) + фоллбек-веер; когезия carryover/lookahead/стейт БЕЗ LLM-summary; волновая архитектура W0–W3 (вводная владельца 16.07: параллелизм); §D пре-рег дизайн Q0–Q5. Оркестратор-ревью НЕ проводилось по решению владельца (сессия отревьюирована своим воркфлоу + сильной моделью). Правки владельца в задаче 1 (роли при чанковании; lost-in-middle) — закрыты §A.1/Q2c. Архивная копия.
Промт: сессия-РЕСЁРЧЕР — логическая нарезка + меж-чанковая когезия + дизайн эмпирики (трек 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 независимых голоса.
Онбординг
CLAUDE.md→docs/architecture/09-target-architecture.md(§2 слой 1 — целевой чанкер; §4 трек B — вопросы) →08-sync-audit-ledger.mdдорожка L2 (все находки нарезки) +L1(контракт переводчик/редактор).docs/architecture/05-decisions-log.mdD39 + D30.2 (:366— reflow-механизм открытый вопрос) + D35 (:471— декаплинг = un-ratified кандидат).- Код нарезки (грунтовка, не по заголовкам):
backend/internal/pipeline/chunker.go(жадная упаковка абзацев вtargetChunkTokens=1500const, спуск до предложений; границы бюджетные),ingest.go(как формируются главы),chunkrun.go(чанк = единица И черновика И редактуры; инъекция только глоссарий — меж-чанковой когезии нет),render.go/config/pipeline.go(STMDepth/OverlapTokens— мёртвые заглушки). - Предыдущая эмпирика:
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/):
- Translate-арм НЕ гонялся: frontier-as-ПЕРЕВОДЧИК спот-чек (14:148) планировался, но
exp14/costs.jsonl— только РЕДАКТОРСКИЕ армы (ре-редактуры фикс. flash-черновика). Draft-swap/translate-плеча НЕТ. → «переводчик отдаёт структуру» (Q4) — чистое поле, ни одного датапоинта. - Реюз (дёшево): кривая размера — выходы
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/катафора-плечо ОТСУТСТВУЕТ. - Кросс-граничный null = ДОМЕН-АРТЕФАКТ, не бесполезность рычага: чистого next-supported/катафора-трапа в раннем срезе не нашлось; T5/T6 локально самодостаточны → A-ref-prev байт-идентичен «чинить нечего» (14:93/257/290). Маркированного кросс-граничного набора НЕТ. §D-1 (locus когезии не размечен) в силе.
- Сцен-граница — СОЗНАТЕЛЬНО не гонялась: докстринг
exp14_sizecurve.py:10-11— ранняя арка 蛊真人 структурно плоская (1 предл./строка, мало сцен-маркеров) → «сцена vs жадная» слабо различима на ЭТОМ тексте. Не тулинг/время — домен.
СКВОЗНОЙ ВЫВОД (несущий для дизайна) — ИНВАРИАНТ ОБЩНОСТИ (09 §0.1): три из четырёх пробелов (Q1/Q3/Q4) — непротестированные допущения, потому что тест-срез плоский (ранняя арка 蛊真人: 1 предл./строка, мало сцен-маркеров) и физически не задействует рычаги. Это ограничение ДИЗАЙНА ЭКСПЕРИМЕНТА, НЕ вывод о продукте. Цель проекта — перевод ЛЮБОЙ книги/пары/структуры; чанкер обязан быть ОБЩИМ (адаптируется к структуре каждого входа в рантайме), а не тюнингом под одну книгу. Следствия для §D:
- Валидируй чанкер на РАЗНООБРАЗНОМ корпусе структур+языков (плоский CJK line-per-sentence · сцен-маркированный вебновелл · длинно-абзацный европейский роман · ja-ранобэ · …) — так, чтобы дизайн доказывал КОРРЕКТНОСТЬ+near-оптимум на всём спектре. Плоская книга — ОДНА точка спектра, который алгоритм обязан обрабатывать; НИКОГДА не повод сузить продукт («книга плоская → урезать нарезку» — ЗАПРЕЩЕНО).
- Трапы Q1/Q3/Q4 — на срезах, которые РЕАЛЬНО задействуют рычаг (сцен-структура для Q1-границы; кросс-главные зависимости для Q3-когезии), маркированные, вне претрейна — иначе снова неинформативный null. В проекте есть корпус-билдеры (
gu/ja/en/jpm_corpus_build,webnovel_slice) — используй для разнообразия. - Структурная характеризация — вход алгоритма, не приговор книге: опиши спектр структур (в т.ч. насколько плоская 蛊真人 дальше) как вход для рантайм-детектора границ + для выбора репрезентативного тест-корпуса. Не «эта книга плоская → отключим логическую нарезку».
- Дешёвый реюз (от полигона): кривая (Q2) + A-ref-prev/both как есть; дозаказать
A-ref-next+ translate-плечо (Q1 реюзит те же 2 T-трапа почти бесплатно) + добрать структурно-разные срезы.
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). Ничего не коммить.