Ratify D18 acceptance book switch to Gu Zhenren zh-ru, issue package-2 handoff prompts for backend and polygon, archive closed prompts

This commit is contained in:
Claude (backend session) 2026-07-09 19:31:05 +03:00
parent b7556b3a4f
commit 86b983d331
8 changed files with 118 additions and 2 deletions

View file

@ -39,4 +39,4 @@ Go-бэкенд издательского художественного пер
## Текущее состояние (2026-07-09)
Фаза 0 ✅; машинерия Ф1 построена и дополнена пакетами 09.07 (память v2 + фиксы D16, `tmctl status`+redrive, reasoning-буфер; пилот-харнесс починен: эхо-контроль, fidelity-ось, M0M3). Оба пакета прошли внешнее ревью (ACCEPT_WITH_FIXES — fix-листы в D-логе §Ратификации 09.07). До приёмки Ф1: fix-листы, GB18030-ingest, дешёвые гейты, автопопуляция/сид, реальный ja→ru прогон; спека D15.2 — на доработке (реализация заблокирована). Решающая точка — пилот Ф2.5. Ключи: DEEPSEEK, ZAI, KIMI, OPENAI, GEMINI, XAI, MISTRAL. Стенд: WSL2, GTX 1070 8GB (прокси-грабли: localhost из-под прокси даёт 403 — no-proxy транспорт для local).
Фаза 0 ✅; машинерия Ф1 построена и дополнена пакетами 09.07 (память v2 + фиксы D16, `tmctl status`+redrive, reasoning-буфер; пилот-харнесс починен: эхо-контроль, fidelity-ось, M0M3). Оба пакета прошли внешнее ревью (ACCEPT_WITH_FIXES — fix-листы в D-логе §Ратификации 09.07). **Приёмочная книга Ф1 = 蛊真人 zh→ru (D18)**: полный текст на стенде `/home/ubuntu/books/gu-zhenren/guzhenren-gb18030.txt` (GB18030; текст и производные ВНЕ git); 18+ фрагменты берутся из неё же (D14.4 разблокирован). До приёмки: fix-листы, GB18030-ingest, дешёвые гейты, сид-глоссарий, smoke → полный прогон; спека D15.2 — на доработке (реализация заблокирована). Решающая точка — пилот Ф2.5. Ключи: DEEPSEEK, ZAI, KIMI, OPENAI, GEMINI, XAI, MISTRAL. Стенд: WSL2, GTX 1070 8GB (прокси-грабли: localhost из-под прокси даёт 403 — no-proxy транспорт для local).

View file

@ -0,0 +1,51 @@
# Промт: бэкенд-сессия — подготовка приёмки Ф1 на 蛊真人 (fix-лист ревью + GB18030 + дешёвые гейты + спека D15.2 v2), 2026-07-09
---
## Кто ты и где ты
Ты — **бэкенд-сессия** проекта **TextMachine**: Go-бэкенд издательского художественного перевода крупных текстов (ранобэ/вебновеллы, zh/ja/en→ru) через мультиагентный LLM-пайплайн (черновик DeepSeek → монолингвальный редактор grok-4.3 → судья Gemini в Фазе 2). Проект работает параллельными сессиями со строгими зонами: твоя зона записи — **`backend/`** + твоя запись в `docs/PROGRESS.md` §Бэкенд. `docs/` (кроме журнала) и `eval/` НЕ редактировать — расхождения оформляй пингом оркестратору в журнале. Корневой `CLAUDE.md` автозагружен в твой контекст — его гардрейлы жёсткие: **`.env` не читать; DeepSeek thinking НИКОГДА не отключать (эхо-мина); слаги моделей не менять без live-фактчека; коммитить только по просьбе владельца; никаких reset --hard/перезаписей истории при возможных чужих незакоммиченных правках**.
## Онбординг с нуля (порядок чтения, ~30 мин)
1. `CLAUDE.md` (уже в контексте) → `docs/README.md` (карта) → CURRENT-STATE в `docs/PROGRESS.md`.
2. **`docs/architecture/05-decisions-log.md` ЦЕЛИКОМ** — ратифицированный контракт (D1D18). Твой мандат: §«Ратификации 09.07» п.5 (fix-лист), **D18** (приёмка теперь на 蛊真人 zh→ru — GB18030 на тебе), доработка спеки D15.2 (там же, п.2 ратификаций).
3. `backend/README.md` — карта пакетов + 7 инвариантов «ломать нельзя» + известный техдолг.
4. `docs/architecture/07-strategic-review.md` §4.34.4, §68 — почему эти фиксы существуют (каждая находка воспроизведена исполнением).
5. По ходу работы: `03-implementation-notes.md` (контракты), `docs/experiments/00-provider-quirks.md` (перед любой правкой адаптеров/конфига моделей).
Состояние на входе: Фаза 0 ✅; машинерия Ф1 построена (память v2 + фиксы D16, chunker v4, disposition, coverage, single-hop эскалация с ре-гейтом, `tmctl status`/`redrive`, reasoning-буфер additive). Предыдущий пакет прошёл внешнее ревью (ACCEPT_WITH_FIXES) — ты закрываешь его fix-лист и готовишь машину к первому реальному прогону целой книги.
Дисциплина: каждый фикс — с регресс-тестом, **mutation-verified** (реверт фикса валит именно его тест); финал — агентское адверсариальное селфревью (несколько дименсий → независимая refute-by-default верификация каждой находки); `go build/vet/test ./... -race` зелёные + `tmctl report` $0 перед сдачей. Живые LLM — только там, где явно сказано (задача 5), с потолком.
## Задача 1 — fix-лист внешнего ревью (порядок жёсткий, это первым)
1a. **[major] Homophone first-wins** (`memseed.go`, attachRubyAliasesToManual): чтения обрабатываются в сортировке по Base → при ДВУХ ручных омофонах (разные dst, чтение ≥4 каны, напр. 高梁→Такарё / 高橋→Такахаси, оба читаются たかはし) алфавитно-первая база успевает получить kana-алиас ДО того, как collides() увидит второго владельца → каждое かな-вхождение инжектится **CONFIRMED за произвольную из двух сущностей** (класс A2 «неверная авторитетная инъекция»). Фикс: ПЕРЕД аттачем сгруппировать чтения по нормализованному ключу МЕЖДУ разными базами; ключ, принадлежащий ≥2 базам с разными dst, — skip-and-log (или форс AMBIGUOUS) для ВСЕХ владельцев, не только опоздавших. Для ≤3-кана дыры нет (collision-prone → AMBIGUOUS) — не регресси.
1b. **[major] Закрепить мутационно инвариант redrive «DispOK-стадии НЕ сбрасываются»**: сейчас мутант `Disposition==Flagged||Skipped → true` в Runner.Redrive переживает весь набор (тесты флагают ПЕРВУЮ стадию — сброс совпадает с полным). Добавь тест «draft=ok, edit=flagged → сбрасывается ТОЛЬКО edit, draft резюмится за $0» + тест НЕсовпадающего `--reason`-селектора (сейчас его игнор тоже выживает).
1c. **[minor] Snapshot-чек ДО ResetChunkStages**: сейчас redrive сначала сбрасывает строки, потом падает на config-drift/потолке — флаг-телеметрия уничтожена, status показывает pending/pass. Посчитай текущий snapshotID и сравни с хранимым ДО деструктивной части (read-only расчёт уже есть в Status/ConfigDrift).
1d. **[minors, пакетом]**: `tmctl status --json` — при flagged>0 либо возвращать sentinel/exit 2 как human-режим, либо явно задокументировать «--json всегда 0»; human-подсказка при gate-промоченном glossary_miss НЕ должна советовать redrive (он для него no-op — советуй правку глоссария + --resnapshot); README «миграции v1v5» → v1v6; ETA — либо EWMA (как ратифицировано D12), либо явная пометка отступления; collides() в ruby-attach — учесть windowsOverlap и dst-eligibility владельцев (сейчас консервативные ложные скипы = потеря recall, направление безопасное); source-edit-невидимость для status — сузить overclaim-комментарий bookChunks (правка исходника без смены границ невидима) или сверить content_hash с $0-перерендером.
## Задача 2 — GB18030/кодировки в ingest (гейтит D18-прогон)
Реальные zh .txt — часто GB18030, не UTF-8 (приёмочная книга 蛊真人 — ровно этот случай; полигон уже конвертировал свои сэмплы руками). Сделай в `ingest.go`: детект кодировки для .txt (порядок: BOM → валидный UTF-8 → проба GB18030 (надмножество GBK/GB2312) → fail-loud «неопознанная кодировка, укажи явно») + конверсия в UTF-8 ДО NormalizeSource; опция явного указания в book.yaml (`encoding: gb18030|utf8`, дефолт auto). Зависимость `golang.org/x/text/encoding/simplifiedchinese` — допустима (первая внешняя за пределами go.sum-минимума — отметь в журнале). Эвристика детекта консервативная: сомнение = fail-loud, не тихая порча (инвариант lossless-чанкера: битые байты НЕ должны доехать до U+FFFD-замены). Тесты: GB18030-файл с CJK+пунктуацией, UTF-8 без BOM, UTF-8 c BOM, битый файл → loud.
## Задача 3 — дешёвые детерминированные гейты Ф1 (04-unhappy §6/§9; в план v3 внесены, не реализованы)
Четыре флаггера по паттерну post-check (наблюдаемость, НЕ жёсткие гейты; на ФИНАЛЬНОМ тексте чанка; версия каждого свёрнута в snapshot по образцу classifierVersion — правка правил = громкий resnapshot):
- **Линтер тире-диалогов** (Розенталь §4752): реплики через кавычки-ёлочки/дефис вместо тире с новой строки, смешение стилей внутри главы.
- **Ёфикатор**: наличие «ё» непоследовательно (частичная ёфикация — флаг; политика все-ё/все-е — из brief).
- **Блок-лист транслит-междометий**: «ара-ара», «маа», «хмф», «нани» и т.п. без перевода (словарь — конфиг, стартовый набор из 04-unhappy §9).
- **Число-гейт разрядов 万/億**: китайские/японские разряды в исходнике ↔ числа в выходе (万=10⁴, 億=10⁸; «三万» ≠ «3 миллиона») — детект несоответствия порядка величины.
Каждый: `flag_reason`-константа, счётчики в отчёте/паспорте главы, юнит-тесты на срабатывание и НЕсрабатывание (ложные позитивы — главный риск: цитаты, стилизация).
## Задача 4 — спека D15.2 v2 (документ, НЕ код; реализация остаётся заблокированной)
Доработай `backend/docs/D15.2-content-addressed-resume-spec.md` по трём дырам ревью (полный разбор — D-лог §Ратификации п.2): (1) fast-path-гард обязан покрывать ВЕСЬ wire stage-план (model/temp/reasoning/maxTokens-деривация/escalate_to) — отдельный guard-хеш в chunk_status, НЕ входящий в RequestHash, либо верификация пересчётом с сохранением параметров победившей попытки; (2) расщепление memory_version — ОБЯЗАТЕЛЬНАЯ часть дизайна (подсказка ревью: postcheck пересчитывается вживую и в chunk_status не хранится → memory_version можно целиком убрать из ключа вызова; реши судьбу gate:bool и decl-контента явно); (3) замена loud-гейта согласия: pre-flight dry-run «N чанков будет re-bill, проекция ~$X» с порогом, выше которого нужен явный флаг (Р6-класс согласия). Плюс: полевой маппинг ВСЕХ полей текущего snapshotID → {wire|verdict|dropped+why}; судьба chunk_status.snapshot_id и status-ридеров; sequencing миграции (ДО первой онгоинг-книги — иначе миграция съедает бэклог); blast-radius append-а моделировать со sticky(depth 2)+eviction+каскадом на editor. Сдай v2 оркестратору на утверждение.
## Задача 5 — подготовка D18-прогона на 蛊真人 (smoke, не полная приёмка)
Файл книги: **`/home/ubuntu/books/gu-zhenren/guzhenren-gb18030.txt`** (полная вебновелла ~2.5k глав, 15 МБ, GB18030+CRLF, заголовок «书名:蛊真人» — проверено оркестратором). Текст и ЛЮБЫЕ производные (чанки, переводы, глоссарий с цитатами) — **ВНЕ git** (Р8: приватная обработка легальна; в журнал — только метрики/статистику). Сделай: (а) прогон ingest+chunker на реальном файле (после задачи 2) — детект глав в этом формате (главы, вероятно, маркированы «第N章» — проверь и доработай главоделение txt-инжеста, если сейчас только `\f`), число глав/чанков/токен-статистика в журнал; (б) минимум одна фолбэк-модель черновика в конфиге с `escalate_to` (D18: эхо 25% требует живой эскалации; модель — из заведённых, напр. glm-5 или grok-4.3 draft-фолбэком; цены/квирки сверь с 00-provider-quirks); (в) smoke-прогон **1 главы** draft→edit на живых ключах с потолком $0.10: деньги в request_log сходятся, эхо-флаги/эскалация срабатывают, redrive на реальном флаге работает; (г) список блокеров полной приёмки (глоссарий-сид от полигона, пороги, что ещё) — в журнал. Полная приёмка — отдельная сессия по готовности сида.
## Приёмка сессии
`go build/vet/test ./... -race` зелёные; фиксы mutation-verified; селфревью проведено и находки закрыты; smoke-прогон задачи 5 с цифрами; спека D15.2 v2 сдана; запись в `docs/PROGRESS.md` §Бэкенд (итоги, цифры smoke, блокеры приёмки, вопросы оркестратору). Порядок: 1 → 2 → (3 ∥ 4) → 5.

View file

@ -0,0 +1,50 @@
# Промт: полигон-сессия — 18+ рука на 蛊真人 + синк зеркала + сид-глоссарий приёмки (D14.4/D18), 2026-07-09
---
## Кто ты и где ты
Ты — **полигон-сессия** проекта **TextMachine**: Go-бэкенд издательского художественного перевода крупных текстов (ранобэ/вебновеллы, zh/ja/en→ru) через мультиагентный LLM-пайплайн. Роль полигона — **эмпирическая валидация допущений архитектуры: мерить, а не верить**. Твоя зона записи — **`eval/` + `docs/experiments/`** + твоя запись в `docs/PROGRESS.md` §Полигон. `backend/` только читать; `architecture/*`/`research/*` не редактировать — расхождения пингом оркестратору в журнале. Корневой `CLAUDE.md` автозагружен — его гардрейлы жёсткие: **`.env` не читать (скрипты сами берут ключи); results не перезаписывать (провенанс); коммитить только по просьбе; никаких деструктивных git-операций при чужих незакоммиченных правках**.
**Мандат на 18+ в этой сессии:** работа с explicit-контентом «Мастера Гу» — твоя ПРЯМАЯ задача от владельца (задача 3). Жёсткая линия без исключений: **уровень 3 (несовершеннолетние в сексуальном контексте) — не включать в корпус, не обрабатывать, не анализировать**; встретился в тексте — фрагмент исключается молча.
## Онбординг с нуля (порядок чтения, ~30 мин)
1. `CLAUDE.md` (в контексте) → `docs/README.md` (карта) → CURRENT-STATE в `docs/PROGRESS.md`.
2. **`docs/architecture/05-decisions-log.md` ЦЕЛИКОМ** (контракт D1D18). Твой мандат: §«Ратификации 09.07» п.6 (fix-лист зеркала), **D14** (канал B: Grok+abliterated, Mistral-кандидат, DeepSeek для explicit запрещён его ToS), **D14.4/п.3 ратификаций** (18+ рука — последний critical; Mistral-fidelity переснять с персистом), **D18** (приёмка Ф1 теперь на 蛊真人 — сид-глоссарий на тебе).
3. `eval/README.md` — карта скриптов + 6 правил, выученных на ошибках.
4. `docs/experiments/02-refusal-benchmark.md` (бенч и корпус-уровни), `09-pilot-protocol.md` v2 (протокол пилота), `00-provider-quirks.md` (перед ЛЮБЫМ вызовом провайдера).
5. Источник истины горячего пути памяти — `backend/internal/pipeline/{memory,memnorm,mempostcheck}.go` (memmatch-v3): **при расхождении зеркала с Go — верить Go**.
Состояние на входе: твой предыдущий пакет (эхо-контроль memory_eval, fidelity-ось, M0M3, kana-замер, Mistral-refusal, вебновелл-срез) принят внешним ревью (ACCEPT_WITH_FIXES) и залендён; fix-лист — в D-логе §Ратификации п.6. Книга владельца: **`/home/ubuntu/books/gu-zhenren/guzhenren-gb18030.txt`** (полная, ~2.5k глав, GB18030). Ключи: DEEPSEEK/ZAI/KIMI/OPENAI/GEMINI/XAI/**MISTRAL**.
## Задача 1 — fix-лист ревью: зеркало и харнесс (первым — на этом стоит пилот)
1a. **[major] Дозеркалить `suppressUnboundedPhonetic` (D16.3)** в `eval/pilot/memory_eval.py::select()`: Go подавляет фонетический ключ (латиница/кириллица), сработавший внутри более длинного слова того же скрипта, ПЕРЕД containment (`memory.go` suppressUnboundedPhonetic; тест-эталон `TestSourcePhoneticWordBoundary`: 'rose' в 'roseanne walked in.' → 0 инъекций). Кана/Han — НЕ подавляются (ратифицировано). Добавь в self-test.
1b. **[major] Апостроф-фолд memnorm-v3**: Go фолдит ʼ → ' в ОБЕИХ нормализациях; зеркала (`memory_eval.norm_src`, `declmetric.normalize_target`) — нет → false MISS на д'Артаньян vs д’Артаньян. Критично для en→ru руки пилота. Дозеркаль + parity-asserts.
1c. **[minor] Эхо-детектор**: сейчас ловит только ЛИДИРУЮЩУЮ преамбулу — хвостовой/встроенный эхо-глоссарий («…текст…\nГЛОССАРИЙ:\n阿Q → А-кью») не флагается и надувает consistency. Расширь: маркеры/строки «src → dst» в ЛЮБОМ месте выхода.
1d. **[minors]**: байт-синк заголовка инъекции с Go (`glossaryBlockHeader` содержит пояснение ⟨проверить⟩ — зеркало нет); ts (UTC) в каждую запись refusal-результатов; trad2simp «508 строк → 500 уникальных» — задедупить файл или явная пометка (8 дублей: 莊/說/語/談/關/飛/決/東 — сверь маппинги, синк с Go-embed по hash); in-file карантин-маркер в старый `memory_eval_indicative.json` (C-метки); пометка в exp09 §6-bis «precision 0.371 — trap-set-относительная, не корпусная»; убрать отработавшую «re-verify vs final Go» ноту из докстринга memory_eval (сверка выполнена ревью 09.07 — после твоих 1a/1b она снова актуальна и снова закрывается).
## Задача 2 — Mistral-fidelity переснятие с персистом (D14.2, п.3 ратификаций)
Refusal-часть принята (11/11 ok), но fidelity-числа (8595) НЕ приняты — сырых выходов и судейских вердиктов в репо нет. Переснять пробу базового качества (35 фрагментов zh/ja/en → ru, судья чужого семейства) с ПОЛНЫМ персистом: сырые выходы, судейские JSON, model id, UTC, usage — в `eval/data/` по конвенции raw_*. Обнови exp02 §Mistral. Только после этого D14.2 финализируется оркестратором.
## Задача 3 — 18+ рука на «Мастере Гу» (D14.4 — ПОСЛЕДНИЙ CRITICAL проекта)
Владелец разрешил брать 18+ фрагменты из 蛊真人 (файл выше; текст вне git — в корпус кладём фрагменты, корпус gitignored как весь `eval/data/`).
3a. **Корпус**: отбери 815 жёстких сцен (насилие/жестокость/dark — этого в 蛊真人 много) → `eval/data/refusal_corpus/` по существующей конвенции уровней (l2-violence и т.п.). Файл GB18030 — конвертируй при отборе (iconv). **Честно оцени покрытие подуровня l2-erotica**: если эротики в отобранном нет/мало — явно скажи владельцу в журнале, что эротика-срез требует другого источника (не натягивай).
3b. **Refusal/excision-прогон**: Grok-4.3 (канал B основной; на выделенном промо/data-sharing аккаунте xAI — НЕ прод-ключ, гигиена Р4), Mistral (кандидат-фолбэк), локальная abliterated (ollama на стенде), плюс **DeepSeek как контроль** (по его ToS explicit запрещён — зафиксируй фактическое поведение: отказ/вырезание/перевод). Мерь: отказы, тихие вырезания (sent_cov/len_ratio — наш excision-детект), качество на выборке. Это проверка ставки «Grok = NSFW-канал» + валидация Mistral как фолбэка.
3c. **Судьи на explicit**: (i) Grok-судья 18+ — оценивает ли explicit-переводы без отказа, вменяемо ли; (ii) **Gemini-судья на explicit** — поведение при «artistic context» (для fidelity-оси пилота на 18+ руке; если Gemini отказывает — зафиксируй и предложи замену судьи для этой руки).
3d. Всё с полным провенансом (уроки exp02: сырьё не перезаписывать, ts/model/usage в каждой записи). Выход: `docs/experiments/10-explicit-benchmark.md` (методика, цифры, честные ограничения) + сводка в PROGRESS.
## Задача 4 — сид-глоссарий 蛊真人 для приёмки D18 (координация с бэкендом)
Приёмочный гейт D10 (консистентность ≥98%) требует approved-глоссария. Собери **стартовый сид ~3060 записей** по первым 2030 главам: главные имена (方源/Фан Юань и т.д.), ранги/титулы гу-мастеров (仙/尊 и иерархия), рекуррентные термины (蛊 и производные). Формат — seed-YAML бэкенда (`backend/example/book.yaml` + `glossary_seed`-схема: src/dst/type/aliases/decl/sense/окна где нужны). dst — по Палладию (таблица транслитерации — вручную, это и есть B6-lite для сида), decl — заполни для склоняемых. Метод: спот-экстракция локалью/облаком по дизайну exp06 (`extract_bench.py` — переиспользуй) + ручная курация рендеров (облачный рендер zh 0.75 — НЕ доверять слепо, каждый dst глазами). **Сид-файл — рядом с книгой (`/home/ubuntu/books/gu-zhenren/`), НЕ в git** (производное текста); в журнал — только счётчики/методику. Согласуй схему полей с бэкендом через журнал (их задача 5 ждёт твой сид для полной приёмки).
## Задача 5 — precision гейта на терсных репликах (незакрытый хвост вебновелл-среза)
Прошлый срез не закрыл диалого-плотный кейс (диалог был склеен в абзацы — эвристика не сработала). На 蛊真人 диалогов много: доработай сегментацию среза (реплики «…» на отдельных строках исходника — не склеивать), набери диалого-плотный бакет ≥20 чанков, прогони coverage-гейт (пороги exp02/07) на хороших переводах → доля ложных excision_suspect. Это гейтит снятие 1-флаг-толерантности (D12/Q4) и пороги для приёмки D18.
## Приёмка сессии
Зеркало синхронно Go по 1a/1b (parity-asserts + self-test зелёные); Mistral-fidelity с полным персистом; `10-explicit-benchmark.md` с прогонами 3a3d и честными оговорками; сид-глоссарий передан бэкенду (счётчики в журнале); терсный precision-бакет закрыт цифрами; всё с провенансом. Запись в `docs/PROGRESS.md` §Полигон: итоги, цифры, вопросы владельцу/оркестратору. Порядок: 1 → (2 ∥ 3) → 4 → 5 (3 — приоритет: последний critical).

View file

@ -72,6 +72,13 @@
- Гигиена: `*.key.json` в .gitignore; **правило git-координации мультисессий** внесено в CLAUDE.md (признание инцидента: перезапись истории оркестратором 09.07 при грязном дереве полигона стёрла его незакоммиченные правки — восстановлены сессией).
- **Ждём от владельца (без изменений):** explicit-18+ фрагменты (последний critical-блокер D14.4), приёмочная ja→ru книга (epub) для прогона D9, провенанс двух внешних 12-*-доков; решение по юр-пакету (EU-хостинг/провайдер-матрица данных/compliance-паспорт — обсуждено 09.07).
### 2026-07-09 (поздний вечер) — D18 + промты пакетов №2 (оркестратор)
- **D18 ратифицирован (решение владельца):** приёмка Фазы 1 — на **蛊真人 zh→ru** (полная книга ~2.5k глав от владельца лежит на стенде: `/home/ubuntu/books/gu-zhenren/guzhenren-gb18030.txt`, GB18030+CRLF — проверено декодом; текст и производные ВНЕ git); ja→ru — второй прогон при появлении ja-epub (форсирующая функция D9 по ruby уже выполнена кодом). Полный текст — D-лог D18.
- **18+ блокер снят владельцем:** explicit-фрагменты берутся из 蛊真人 (dark/violence; покрытие l2-erotica полигон оценит честно — возможно понадобится второй источник).
- **Хендофф-промты №2 выданы** (старые закрыты → archive): [`BACKEND_SESSION_PROMPT_ACCEPTANCE_PREP.md`](BACKEND_SESSION_PROMPT_ACCEPTANCE_PREP.md) — fix-лист ревью (homophone first-wins и др.) → GB18030-ingest → дешёвые гейты Ф1 → спека D15.2 v2 → smoke-прогон 1 главы 蛊真人; [`POLYGON_SESSION_PROMPT_EXPLICIT_AND_MIRROR.md`](POLYGON_SESSION_PROMPT_EXPLICIT_AND_MIRROR.md) — синк зеркала (suppressUnboundedPhonetic+апостроф) → Mistral-переснятие → **18+ рука на 蛊真人 (эксп.10)** → сид-глоссарий приёмки → терсный precision. Координация: бэкенд-задача 2 (GB18030) гейтит их же задачу 5 и полигонный отбор сцен удобнее после неё, но полигон может стартовать параллельно (iconv руками уже валидирован).
- Юр-пакет — в бэклоге до решения владельца (промт ресёрч-сессии подготовлю по запросу).
## Бэкенд
### 2026-07-04 — Сессия 1: шаг 0 (перевалидация) завершён

View file

@ -16,7 +16,7 @@
- `experiments/` — эмпирика «Полигона»: `00-provider-quirks` (читать перед любым вызовом провайдера), `01-token-calibration`, `02-refusal-benchmark`, `03-local-stand`, `04-editor-quality`, `06-local-extraction`, `07-coverage-precision`, `08-cost-model-v2` (актуальная денежная модель), `09-pilot-protocol` (пилот Ф2.5 + поправки D13).
- `research/` — фактура исследований 0405.07: `0110` базовые, `11-gap-*` добор критиком, `12-*` режимы отказа/отзывы/таксономии (+ два внешних материала с провенанс-шапками), `13` валидация памяти, `14` адаптивная память. ⚠ Часть под superseded-баннерами (01/02/03/04/05/09 и gap-1/2/5) — **читай баннер прежде содержимого**.
- `PROGRESS.md`**журнал** (CURRENT-STATE сверху, ниже хронология; НЕ источник решений).
- **Активные хендофф-промты**: [`BACKEND_SESSION_PROMPT_REVIEW_FIXES.md`](BACKEND_SESSION_PROMPT_REVIEW_FIXES.md) (пакет D15/D16) · [`POLYGON_SESSION_PROMPT_PILOT_HARNESS.md`](POLYGON_SESSION_PROMPT_PILOT_HARNESS.md) (харнесс D13 + пробы).
- **Активные хендофф-промты**: [`BACKEND_SESSION_PROMPT_ACCEPTANCE_PREP.md`](BACKEND_SESSION_PROMPT_ACCEPTANCE_PREP.md) (fix-лист + GB18030 + дешёвые гейты + спека D15.2 v2 + smoke 蛊真人) · [`POLYGON_SESSION_PROMPT_EXPLICIT_AND_MIRROR.md`](POLYGON_SESSION_PROMPT_EXPLICIT_AND_MIRROR.md) (18+ рука на 蛊真人 + синк зеркала + сид-глоссарий D18).
- `archive/` — закрытые сессионные промты (только история, инструкции оттуда не исполнять).
## Статус (2026-07-09)

View file

@ -213,6 +213,14 @@ D1 остаётся дефолтом Фазы 1 (менять конфигура
6. **Новые задачи полигону (следующий пакет):** (а) зеркало ↔ Go: дозеркалить suppressUnboundedPhonetic (D16.3) и апостроф-фолд memnorm-v3 (оба продемонстрированы расхождением; критично для en→ru руки пилота); (б) эхо-детектор — ловить хвостовой/встроенный эхо-глоссарий, не только преамбулу; (в) Mistral-переснятие с персистом (п.3); (г) байт-синк заголовка инъекции с Go (⟨проверить⟩-пояснение); (д) minors: ts в refusal-записи, «508→500» trad2simp-дедуп/пометка, in-file карантин старых C-меточных данных.
7. **Гигиена:** `*.key.json` добавлен в .gitignore (остаточный риск утечки ключа слепоты); правило git-координации мультисессий внесено в CLAUDE.md (инцидент: перезапись истории оркестратором при грязном дереве полигона — недопустимо без сверки чужих правок).
## D18. Приёмочная книга Фазы 1 — 蛊真人 (zh→ru); ja→ru прогон отложен. ✅ (амендмент D9, решение владельца 09.07)
**Решение:** приёмка Фазы 1 (end-to-end книга целиком) выполняется на **蛊真人 (Reverend Insanity, «Мастер Гу»)**, zh→ru — реальная вебновелла от владельца, уже на стенде (чистая вычитанная .txt, GB18030; 7 глав прогнаны вебновелл-срезом). ja→ru прогон (буква D9) понижен до «второй прогон при появлении ja-epub от владельца».
**Обоснование:** (1) форсирующая функция D9 — «ruby на критическом пути» — ВЫПОЛНЕНА (ruby-захват/сид реализованы и покрыты тестами, шаги 3a/4); (2) zh→ru вебновелла — коммерчески флагманский сегмент («ИИ-фабрики», Р9), а ja-книги на стенде нет; (3) терминологическая плотность 蛊真人 (ранги/титулы гу, рекуррентные имена) — идеальный стресс банка памяти по жалобе №1 читателей; (4) deepseek-эхо 25% на этом тексте (замер полигона 09.07) — боевой тест echo-гейта и single-hop эскалации черновика.
**Следствия:** GB18030-детект/конверсия в ingest обязательны ДО прогона (пакет №2 бэкенда); сид-глоссарий 蛊真人 (имена/ранги, dst по Палладию, decl) готовит полигон с владельцем — сам текст и производные **вне git** (Р8: приватная обработка легальна, нарушение — при распространении); OpenCC-полнота trad2simp некритична (текст в упрощённых); Поливанов/Палладий-валидатор — B6/Ф2 как и был; epub-путь остаётся на юнитах до первой epub-книги. Приёмочные критерии 02-mvp-plan v3 не меняются, кроме пары (zh→ru) и cost-sanity (пропорция вебновеллы exp08). Эскалация draft при эхе требует заведённого `escalate_to` — минимум одна фолбэк-модель черновика в конфиге до прогона.
## Сопутствующие правки доков (оркестратор, 09.07)
`02-mvp-plan.md` → v3 (мёртвые пороги/интерим-18+/фазовые списки синхронизированы с D-логом); обе `*.puml` → v3 (убраны Opus/BYOK/«≤2×», дорисованы ре-гейт эскалации, три класса отказов D12, человек в петле, фазовые пометки); superseded-баннеры на `research/01, 02, 03, 04, 09`; провенанс-шапки на `research/12-architecture-as-antipattern.md` и `12-common-failures.md` (происхождение не зафиксировано — до уточнения владельцем числа оттуда не абсорбировать как факты); закрытые промты → `docs/archive/prompts/`; онбординг: корневой `CLAUDE.md` + `backend/README.md` + `eval/README.md`.