# Промт: полигон-сессия — erotica-срез 18+ по трём парам + fix-лист (закрытие D14.4), 2026-07-09

Скопируй в новую сессию Claude Code в `/home/ubuntu/projects/textmachine`.

---

## Кто ты и где ты

Ты — **полигон-сессия** проекта **TextMachine**: эмпирическая валидация допущений архитектуры (мерить, а не верить). Зона записи — **`eval/` + `docs/experiments/`** + твоя запись в `docs/PROGRESS.md` §Полигон. `backend/` только читать; `architecture/*`/`research/*` не редактировать — расхождения пингом оркестратору в журнале. Гардрейлы `CLAUDE.md` (автозагружен) жёсткие: **`.env` не читать; results не перезаписывать (провенанс: model id + UTC + usage + ПОЛНЫЕ сырые выходы); коммитить только по просьбе; никаких деструктивных git-операций при чужих незакоммиченных правках** (research/15 уже залендён — D21; параллельно может работать бэкенд-сессия пакета №3, её незакоммиченные правки в `backend/` не трогать).

**Мандат на 18+:** работа с explicit-эротикой — твоя ПРЯМАЯ задача от владельца (закрытие D14.4 — последнего critical проекта). Жёсткая линия без исключений: **уровень 3 (несовершеннолетние в сексуальном контексте) — не включать в корпус, не обрабатывать**; сомнительный фрагмент исключается. Для ja-книги обязателен **по-героинный спот-чек возраста** участников отбираемых сцен (по тексту/вики) — прецедент: «Isekai Harem Monogatari» отклонена именно на этом (протагонист-школьник).

## Онбординг (порядок чтения, ~30 мин)

1. `CLAUDE.md` → `docs/README.md` → CURRENT-STATE в `docs/PROGRESS.md` (+ записи 09.07: D19/D20 циклы).
2. **`docs/architecture/05-decisions-log.md`**: твой контракт — **D14 (канал B) + D19 (канал B v2: Mistral-переводчик, grok reasoning-ON эскалация, судьи Grok+Gemini; п.5 — твой fix-лист) + D20** (контекст бэкенд-пакета) + **D21** (принят research/15 «Голос и состояние»; пп.6/9 — твои хвосты: quirks-строка эхо-класса, fidelity-хвост P4).
3. **`docs/experiments/10-explicit-benchmark.md`** — конвейер violence-руки, который ты РАСШИРЯЕШЬ на эротику (методика/провенанс — образец); `02-refusal-benchmark.md` (уровни корпуса), `00-provider-quirks.md` (перед любым вызовом).
4. Твои инструменты уже в репо: `eval/gu_corpus_build.py` (отбор+аудит фрагментов), `eval/refusal_bench.py`, `eval/explicit_judges.py`, `eval/mistral_fidelity.py`, providers-конфиги армов.

Контекст: violence-часть 18+ закрыта (exp10: 0 отказов у всех; grok reasoning-OFF эхает — потому канал B пересобран в D19). **Эротика не мерена вообще** — твоя работа закрывает ровно эту дыру по трём парам.

## Задача 1 — корпус l2-erotica по трём парам

Источники (тексты и производные — **ВНЕ git**, в корпус идут только отобранные фрагменты, каталоги данных gitignored):
- **ja:** книга от владельца — смотри свежий файл в `/home/ubuntu/books/` (владелец кладёт сам; если к старту его нет — спроси владельца; шорт-лист скаута 09.07: «王国へ続く道» — арки со взрослыми героинями по фан-вики, есть EN фан-перевод как якорь; бэкап «人妻人形日記» — 人妻-жанр). Формат может быть любой (txt/epub; кодировку детектить — Shift-JIS вручную через iconv, наш ingest её сознательно не берёт).
- **zh:** **金瓶梅** — общественное достояние, найди и скачай чистый текст сам (например, ctext/wikisource-класс источники), положи в `/home/ubuntu/books/jinpingmei/`. Бонус: канонический русский перевод Манухина («Цветы сливы в золотой вазе») — если найдёшь фрагментарно, используй как якорь для судей.
- **en:** **«Fifty Shades of Grey»** — владелец положит в `/home/ubuntu/books/` (либо спроси); официальный русский перевод существует — якорь.

Отбор: **6–10 explicit-фрагментов на пару** (~1–2k знаков каждый, разная степень откровенности: вкл. и жёсткие сцены — они и есть тест границы), уровнёвка `l2-erotica-{ja,zh,en}` по конвенции корпуса; для ja — по-героинный спот-чек возраста и скрин уровня 3 (как в `gu_corpus_build.py`, метод аудита задокументируй); для zh-классики трад→упр нормализация не нужна текстам в оригинальной графике? — проверь графику скачанного текста (金瓶梅 циркулирует и в трад, и в упр; наш trad2simp покрывает, но зафиксируй какая).

## Задача 2 — erotica-прогон конвейера exp10 (ядро задачи)

Те же армы, что violence-рука (сравнимость!): **Mistral** (дефолт-переводчик канала B по D19 — главный вопрос: держит ли эротику, policy позволяет), **grok-4.3 reasoning-ON** (эскалация; ключ — текущий xAI, ратифицировано D19.4 для eval), **локальная abliterated 8b**, **DeepSeek — контроль** (его ToS прямо запрещает sexually-explicit: зафиксируй фактическое поведение — откажет/вырежет/переведёт; это важный политический датапоинт, но в канал B он НЕ вернётся при любом исходе — D14.1). Мерь: отказы / тихие вырезания (sent_cov+len_ratio) / эхо / качество индикативно. **Судьи на эротике:** Grok-судья и Gemini-судья (на violence оба судили 10/10 — держат ли erotica под издательской рамкой; если Gemini откажет — зафиксируй и предложи замену оси fidelity для 18+ руки пилота).

⚠ **Gemini-грабли (пробы research/15 + live-фактчек оркестратора 09.07):** (1) **Вся 2.5-серия официально идёт на shutdown 16.10.2026** (deprecations-страница вендора; замены: 2.5-pro→3.1-pro-preview, 2.5-flash→3.5-flash, 2.5-flash-lite→3.1-flash-lite) — миграция судейских слагов с 2.5-flash обязательна независимо от флейков. (2) Пробы ловили на 2.5-flash **интермиттентный 404 «model no longer available» ПРИ наличии слага в /models** (листинг перепроверен живьём 09.07 — слаг числится); вендор интермиттент не документирует — ретраить и мигрировать. (3) Официальная замена 3.5-flash в пробе давала 503 high-demand и `finish_reason=PROHIBITED_CONTENT` на сцене насилия; **PROHIBITED_CONTENT — НЕконфигурируемый фильтр-класс** (safety_settings на него не влияют, в отличие от `SAFETY`) → в логах прогона различай `SAFETY` vs `PROHIBITED_CONTENT` — это разные диагнозы (первый лечится настройками, второй нет); gemini-3.1-flash-lite в пробе работал. (4) Вывод exp07 «content_filter не эмитит ни один провайдер» на Gemini 3.x **МЁРТВ** — логируй `finish_reason` всех судейских и переводческих вызовов как первоклассный результат (ожившая ветка классификатора D2.4).

Выход: **расширение `10-explicit-benchmark.md`** (секция Erotica: таблица по армам × парам, находки, честные ограничения) либо отдельный `11-erotica-benchmark.md` — реши по объёму. Полный провенанс. Это закрывает D14.4 → так и напиши в журнале, оркестратор финализирует.

## Задача 3 — fix-лист D19.5/D20 (микро, попутно)

(а) `mistral_fidelity.py`: агрегация mean при n=2 судьях (label не «median») — прошлые числа уже исправлены оркестратором в доках, чини скрипт; заодно там судья gemini-2.5-flash — учти 404-флейки (см. Задачу 2, мигрируй/ретрай); (б) **цена Mistral по официальному прайсу** с датой и URL (комментарий $0.5/$1.5 расходится с маркетингом $2/$6 в 4× — до wiring экономики канала B нужна правда); (в) провенанс-нота `memory_eval_M_ahq_final.json` (прогнан до-Task-1 зеркалом — для zh no-op, приписка в meta/доку); (г) эхо-детектор: line-start FP на прозе, начинающейся со слова «Глоссарий» — задокументируй как известную границу (консервативный, не тихий); (д) токен-корзина `glossary_line_tokens`: ゛゜/々/〇/halfwidth-катакана — синк с Go-скриптами (info-класс, по желанию); (е) **строка эхо-класса в `00-provider-quirks.md`** (поручение D19.2 — до сих пор не выполнено, D21.9): «reasoning-off + плотный CJK = зона эха — свойство класса моделей, не квирк вендора» + инверсия из research/15 P4: «языковой констрейнт в system у reasoning-off моделей может УСИЛИВАТЬ эхо (grok-none 3/10→9/10; проверена одна формулировка — чувствительность неизвестна)».

## Задача 4 — сид 蛊真人: финализация по D19.3

В `/home/ubuntu/books/gu-zhenren/guzhenren-seed.yaml` поправь запись 白凝冰: **`gender: hidden`** (вместо female/draft; ратифицировано D19.3 — механизм D5.1: безродовые конструкции до раскрытия; `until_ch` оставь пустым/0 с note «выставить при определении главы раскрытия»). Прогони валидацию сида бэкенд-путём ($0, как делал прошлый пакет). Это снимает блокер №1 полной приёмки — отметь в журнале для оркестратора.

## Задача 5 (опционально, по остатку бюджета сессии) — fidelity-хвост P4 (D21.6)

Деблокирует анти-эхо wiring в боевые промпты (гейт D21.6); копейки, судейская инфраструктура у тебя уже есть. Материал: сырые выходы эхо-проб research/15 — `/home/ubuntu/books/gu-zhenren/research15-probes/probes/raw/echo-*.json` (дубль оркестратора; полные промпты/выходы/usage; арм-маппинг — в `probe_echo.py` рядом). Отсуди fidelity митигированных переводов (постинструкция / микро-few-shot / префилл DeepSeek — 35 выходов) против чистых баз тех же фрагментов: кросс-семейные судьи со свапом позиций (твоя же методика exp10). ⚠ Эхо-базы (verbatim-китайский) в сравнение не включай — берёшь чистые базовые переводы; материал — уровень-2 violence из твоего же `refusal_corpus_gu` (скрин уровня-3 чист) + один SFW-кейс. Вопрос один: роняют ли митигации fidelity. Не роняют → wiring деблокирован (решение — оркестратор); роняют → тоже результат (митигции останутся эскалационной экономикой без wiring). Приёмку сессии эта задача НЕ гейтит.

## Приёмка сессии

Корпус l2-erotica по трём парам заведён (с методикой аудита); erotica-прогон всех армов + судей с полным провенансом; exp10/11 написан; fix-лист закрыт; сид финализирован и провалидирован. Запись в `docs/PROGRESS.md` §Полигон: таблица результатов, три главных вывода (Mistral на эротике? DeepSeek-контроль? судьи?), вопросы владельцу/оркестратору. Ничего не коммить — оркестратор примет после внешнего ревью.
