# Промт: полигон-сессия — починка пилот-харнесса + пробы (D13/D14/D16, 2026-07-09)

---

Ты — **полигон-сессия** TextMachine, зона записи `eval/` + `docs/experiments/` (+ твоя запись в `docs/PROGRESS.md` §Полигон). Корневой `CLAUDE.md` уже в контексте — гардрейлы обязательны (**`.env` не читать — скрипты сами берут ключи; `eval/data/refusal_corpus/*` не открывать; results не перезаписывать — провенанс**). `backend/` только читать; `architecture/*`/`research/*` не редактировать — расхождения пингом оркестратору в PROGRESS.

Контекст: стратегическое ревью (`docs/architecture/07-strategic-review.md`) верифицировало дефекты пилот-харнесса — **пилот Ф2.5 держит все главные ставки проекта, и с текущим инструментом он даст ложный вердикт**. Твой мандат — D13 (поправки пилота), D14.2 (проба Mistral), D16-хвост (kana-precision). Контракт: `docs/architecture/05-decisions-log.md`, блок «Пост-ревью решения D13–D17».

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

1. `eval/README.md` — карта скриптов + 6 правил, выученных на ошибках.
2. `05-decisions-log.md` D13–D17 (мандат) + `07-strategic-review.md` §4.5 (верифицированные дефекты харнесса — с трассами) и §9 (что пилот обязан ответить).
3. `docs/experiments/09-pilot-protocol.md` (текущий протокол — ты его обновляешь) + `00-provider-quirks.md` (перед любым вызовом провайдера).
4. Источник истины горячего пути памяти — `backend/internal/pipeline/memory.go` (+ memnorm/mempostcheck): **при расхождении зеркала с Go — верить Go**. ⚠ Бэкенд-сессия параллельно вносит D16-фиксы (sticky-disposition, source-границы, полисемия fail-loud, ruby-alias) — синхронизируй зеркало с АКТУАЛЬНЫМ кодом на момент работы, проверь журнал §Бэкенд.

## Задача 1 — починка `eval/pilot/memory_eval.py` (D13.5; решающий инструмент memory-ставки)

Верифицированные дефекты (07-ревью §4.5): consistency скорит ВЕСЬ выход, модель эхает глоссарий-преамбулу → M-режимы завышены, **вред неверной инъекции ЗАНИЖЕН** (chunk1-C3 надут эхом с 0.667 до 1.0); полные выходы не сохранены (`out[:160]`); fidelity-оси нет. Сделать:
1a. **Эхо-контроль**: детект глоссарий-блока/промпта в выходе (маркеры «ГЛОССАРИЙ», повтор инструкции, cjk_share для эха источника — переиспользуй классификацию `refusal_bench`) → отрезать преамбулу до тела перевода И флаговать точку как echo-contaminated (перегенерация или исключение из скоринга — не тихий стрип).
1b. **Полные сырые выходы** сохранять всегда (не превью) — иначе пост-хок аудит невозможен.
1c. **Fidelity-ось реализовать**: LLM-судья чужого семейства против источника (mistranslation/omission; family-правило D13.3 — судья не из семейства draft-модели) — без неё пред-регистрированное правило «M3 роняет vs M0 по верности» непроверяемо. CometKiwi — опционально и только с оговоркой «на ru-литературе не валидирован».
1d. **Переименовать режимы C0–C3 → M0–M3** (коллизия с конфигурациями ядра exp09 §3) — в скрипте, данных и exp09.
1e. **Синк зеркала с Go** по 7 расхождениям из ревью: sticky-глубина (Go: stickyDepth=2), `until_ch` (не реализован в eval-select), span-containment со спойлер-гейтом суппрессора, токен-бюджет/eviction, sticky-диспозиция (после D16.2-фикса бэкенда — наследование!), полная trad2simp-таблица (вендорить из `backend/internal/pipeline/data/trad2simp.txt`), ignorables (Cf+VS-диапазоны). Плюс `declmetric.py`: dash-fold/ignorable-strip + граница по `unicode.IsLetter`-эквиваленту (сейчас только кириллица).
1f. **Пере-прогнать индикатив на Ah-Q** после фиксов; ожидание: M3-вред станет виднее. Обновить exp09 и цифры в своей записи PROGRESS (старые «C1 1.0 = C2 1.0, C3 0.60» пометить как контаминированные).

## Задача 2 — гигиена оценочных артефактов (урок exp04)

Верифицировано: ключ моделей+цены лежал В ТОМ ЖЕ артефакте при LLM-оценке (за `<details>` — для LLM-фетча это не скрытие), маппинг A/B/C/D фиксирован на всех фрагментах. Сделать: (а) `build_editor_artifact.py` — пере-рандомизация меток per-фрагмент, ключ — ОТДЕЛЬНЫМ файлом, не публикуемым до вынесения оценки; (б) в `04-editor-quality.md` добавить честную оговорку о слепоте задним числом (сноска, историю не переписывать): выбор grok-4.3 остаётся провизорным, страхуют объективные латентность/цена и руки пилота (7-bis + D13.1).

## Задача 3 — протокол пилота v2 (`09-pilot-protocol.md`; правки D13)

3a. **Новые/правленые армы**: «моно vs билингв редактор на ОДНОЙ модели, простой general-промпт» (D13.1 — прямой тест D1; отдельно от 7-bis); C2 — только ГЕТЕРОГЕННЫЕ кандидаты (разные модели, D13.2 — на гомогенных селекция ≈ монета).
3b. **Панель судей (D13.3)**: 2–3 семейства максимум; **11+ повторов на вердикт со свапом позиций A/B**; агрегация Bradley-Terry/медианой; **grok исключён из судейства grok-редактированных выходов**; валидация судьи — κ против человеческого IAA + tie-rate/top-1 within-prompt (НЕ средняя корреляция).
3c. **Пре-регистрация (D13.4)**: MDE/мощность (число BWS-наборов), N аннотаторов ≥3 (иначе явный «безκ-режим»), правила решения по каждой руке — зафиксировать ДО решающего прогона неизменяемым разделом.
3d. **Инструмент**: оценить Pearmut (arXiv:2601.02933 — открытая платформа человеческой оценки с attention-checks) ПРЕЖДЕ постройки своего BWS-тулинга; вердикт «берём/своё» — в exp09.

## Задача 4 — проба Mistral для канала B (D14.2)

Mistral Usage Policy (eff. 11.06.2026) без бланкетного запрета adult-текста → кандидат-фолбэк канала B (DeepSeek для explicit выбыл по своему ToS — D14.1). Сделать: завести Mistral в `providers.json` (⚠ **`MISTRAL_API_KEY` в наборе НЕТ — запроси у владельца**; без ключа задача блокирована — так и пометь); прогнать SFW/L1/L2-violence срез refusal-бенча сразу; explicit-часть — когда владелец даст фрагменты (та же 18+ рука exp02, единственный critical ревью). Заодно снять базовое качество ru-перевода Mistral на 2–3 PD-фрагментах (индикативно — годен ли вообще как переводчик канала B, не только «не отказывает»).

## Задача 5 — kana-precision (D16-хвост; расширение E1-протокола)

`minKeyLenPhonetic=3` в Go — «консервативный дефолт до замера» (`memory.go:~42-48`). Собери ja-kana ловушки (аналог омографов retrieval_bench: 2–3-kana ключи внутри частых слов/компаундов, реальные имена из PD-ja корпуса) и замерь precision матчера на MIN=2/3/4 — вход для прод-ja решения (подтвердить 3 / поднять / развести по типу каны). Учитывай D16.3-фикс бэкенда (source-границы) — мерь ПОСЛЕ него или на обеих версиях.

## Задача 6 — вебновелл-срез (блокирована корпусом владельца; подготовь скрипты заранее)

Когда владелец положит 3–5 глав реальных вебновелл в `eval/data/samples/`: довалидация r-коэффициентов (exp01/08), precision coverage-гейта на терсных репликах (exp07 §просьба — гейтит снятие 1-флаг-толерантности), частота DeepSeek-эха вне претрейна. Подготовь прогоны так, чтобы по появлению файлов запускалось одной командой.

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

Обновлённые `memory_eval.py`/`declmetric.py` (эхо-контроль, полные выходы, fidelity, M0–M3, синк с Go) + пере-прогнанный индикатив; `09-pilot-protocol.md` v2 с D13-правками и пре-регистрационным каркасом; вердикт по Pearmut; Mistral-прогон (или явный блок «нет ключа»); kana-precision отчёт; всё — с провенансом (model id, дата, usage, сырые выходы). Запись в `docs/PROGRESS.md` §Полигон: итоги, изменившиеся цифры, вопросы оркестратору/владельцу.
