textmachine/docs/archive/prompts/RESEARCHER_CHUNKING_COHESION_SESSION_PROMPT_2026-07-16.md

19 KiB
Raw Blame History

⟶ ОТРАБОТАН (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-спека чанкера (профиль→B0B5→DP) + фоллбек-веер; когезия carryover/lookahead/стейт БЕЗ LLM-summary; волновая архитектура W0W3 (вводная владельца 16.07: параллелизм); §D пре-рег дизайн Q0Q5. Оркестратор-ревью НЕ проводилось по решению владельца (сессия отревьюирована своим воркфлоу + сильной моделью). Правки владельца в задаче 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/1518).
  • Гардрейлы (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.mddocs/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 жадная» слабо различима на ЭТОМ тексте. Не тулинг/время — домен.

СКВОЗНОЙ ВЫВОД (несущий для дизайна) — ИНВАРИАНТ ОБЩНОСТИ (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 (пре-регистрированный арм-дизайн Q1Q4 + маркированный трап-набор + methodology-guard) · §E (открытые вопросы владельцу/бэкенду). Несущие клеймы — с первоисточником; отметь общую-ногу-литературы vs независимые голоса. Оркестратор верифицирует по первоисточникам и лендит; полигон-эмпирику по §D запускаю отдельным промтом ПОСЛЕ (author≠reviewer). Ничего не коммить.