# Промт: бэкенд-мини-сессия — 2 обязательных фикса output-санитайзера (D33.1) + golden re-capture (2026-07-12)

> **Гейтит пере-прогон 25 глав.** Санитайзер (D30.3, `sanitizer.go`) залендён (D33, 00f8e36) и **включён в `pipeline-c1.yaml`**, но ревью нашло 2 major-дефекта, которые backend-ревью пропустило. Оба правят вердикт-ось → **golden re-capture обязателен** (инвариант №8, D23.1). Правки вольются в единый resnapshot пере-прогона (нулевая доп. цена).

---

## Кто ты

Бэкенд-мини-сессия. Зона: `backend/` + секция «Бэкенд» в `PROGRESS.md`. **Ничего не коммитить** — лендинг оркестратора. Пакет крошечный и целевой: 2 регекс-фикса санитайзера + пины + golden. Не расползаться (этап Б/В D15.2 — отдельный промт после пере-прогона).

## Онбординг

1. `CLAUDE.md` → CURRENT-STATE → **D33 целиком** (мандат; особенно D33.1–33.2) → D30.3 (санитайзер) → D23.1 (процедура golden).
2. `docs/experiments/12-quality-diagnosis.md:229` (точная строка хвостовой утечки gemini A5/5_1 «Основные правки для справки» — цель фикса 1) + шапка D30.

## Задачи

### 1. [major] Хвостовой класс ловит «Основные правки для справки» (D33.1а)
Санитайзер ловит ВЕДУЩУЮ gemini-преамбулу, но НЕ хвостовую форму «**Основные правки для справки:**» + список — ту самую утечку A5/5_1 (exp12:229), ради которой гейт включён. Сейчас `sanitizer.go:164/171` матчат только примечание/заметки/сноска и внесённ+правк/что изменено/список правок — «для справки»/«основные правки» проваливаются.
- Фикс: high-precision альтернатива на «основные правки»/«для справки» (эти фразы в НАРРАТИВЕ не встречаются — низкий FP-риск).
- Пин: fire-тест точной строкой 5_1 (хвостовой блок должен флагаться).

### 2. [major] Класс «битые словоформы» ложно флагает нормальную прозу (D33.1б)
`junctionDuplicated` (`sanitizer.go:356`) фаерит «около колонны», «около колодца», «стало талой» ТАК ЖЕ, как реальный «Первок предок» — гард полиптотона (`:362`) исключает только префикс-вложенность, а эти пары лишь случайно делят 4+-рунную морфемную границу, не содержа друг друга. «около» — частый предлог → флаг-шторм на 25 главах легитимного текста. Гейт включён в c1.
- Фикс на выбор: (а) требовать, чтобы перекрытие покрывало **бо́льшую часть ОБОИХ токенов** (не просто 4+ руны общей границы); ИЛИ (б) **снять класс целиком** — он и так признаёт (`TestSanitizerBrokenWordRecallGap`), что канонический «Первок предок» не ловит (recall-gap до Ф2-морфологии), т.е. класс ловит мало реального и много ложного. Реши по precision: если после сужения (а) класс всё ещё даёт FP на прозе — снять.
- Пины: clean-кейсы «около колонны»/«около колодца»/«стало талой» (НЕ флагать) + сохранить recall-gap-тест как есть.

### 3. Мелочи (документировать границей ИЛИ быстро сузить — не блокеры, D33.2)
Латиница-heavy на 5+ брендах («iPhone, iPad, MacBook…») — исключить капитализированные одиночные латинские токены из heavy-count; хвостовой «Примечание:»/«Комментарий:» в последних строках; «# # #»/«## ***» разделители (требовать букву/цифру после хешей). Разговорный префикс «Конечно!/Готово!» перед преамбулой — recall, precision-over-recall дизайн, ОК (не трогать). Recall-gap «Первок предок» — **принятая граница** до Ф2-морфологии (не чинить).

### 4. Golden re-capture
Правки 1–2 меняют вердикт-ось → `TM_UPDATE_GOLDEN=1`; дифф-класс задокументируй — изменения ДОЛЖНЫ исчерпываться sanitizer-version-бампом + (если фикстура ch6 упражняет затронутые классы) вердиктами санитайзера. Любой другой класс = стоп и пинг оркестратору.

## Дисциплина

Только санитайзер + пины + golden; никаких других wire-правок. Каждый фикс/пин mutation-verified; `go build/vet/test -race` чисто. `git status` перед стартом (в дереве могут быть чужие правки). `.env` не читать. Отчёт: секция PROGRESS «Бэкенд» — дифф-класс golden, числа пинов, что решил по классу «битые словоформы» (сузил/снял). Не коммитить.
