textmachine/docs/BACKEND_PACK13_QA_SESSION_PROMPT.md

7.1 KiB
Raw Blame History

Промт бэкенд-сессии: ПАК-13 «выпускной QA» (дефект-классы D39.20 → механизмы)

Статус: ВЫДАН 23.07.2026, оркестратор №7. Источник скоупа — D39.20/D39.21 (05-decisions-log.md) + rerun2/RERUN_REPORT.md + два слепых ревью (дефект-классы). Пак — WIRE-ДВИГАЮЩИЙ (заголовки, юнит-политика, стайл-строки промпта): golden пере-капчерится структурно, итерация №2 пойдёт со свежим --resnapshot (драфт копеечный, $0.011). Координация: пак-12 (wire-нейтральный) лендится ПЕРВЫМ; зоны почти не пересекаются (12 = internal/llm/, 13 = чанкер/санитайзер/чекеры/рендер) — можно одной сессией подряд, 12 → 13.

Онбординг

CLAUDE.md → CURRENT-STATE PROGRESS.md05-decisions-log.md D39.20D39.21 → rerun2/RERUN_REPORT.md §6 + блайнд-ревью-дефекты (в D39.20) → internal/pipeline/{chunker,sanitizer,checkers_zh_ru,cheapgates,render,memory}.go + internal/lang/+configs/langpacks/.

Живой дефект-корпус для приёмки: rerun2/export-{glm,mistral,dspro}.txt (ВНЕ git, читать можно) — все известные дефекты там: again · «лять» · «войть» · «Вперди» · «глава клан» · огрызки « :» · «три часа» (三个时辰) · «тысячи» (千万) · «6,6» (六成六).

Скоуп (7 пунктов)

  1. mined_delta-крэш фикс (девиация №1 rerun2): терм дельты, уже существующий в сиде (UNIQUE(book_id,src,sense,since_ch,until_ch), store/migrate.go:202) → сейчас плоский INSERT крэшит прогон. Фикс: валидация при загрузке дельты — пересечение с сидом → ГРОМКАЯ ошибка со списком дубликатов и подсказкой («правьте сид / уберите из дельты»); никакого тихого merge поверх подписанного сида. Тест на оба пути.
  2. Заголовок-политика: структурные маркеры глав/разделов (第N节/第N章 — данные в langpack, НЕ хардкод, §0.1) детектятся чанкером и рендерятся ДЕТЕРМИНИРОВАННО шаблоном («Глава N») — модели заголовок не доверяем; санитайзер/CJK-strip НЕ должен съедать заголовки (dspro-арм потерял 第一/四/五节); огрызки « :» устранить. Приёмка: на rerun2-срезе все 5+5 заголовков рендерятся единообразно.
  3. Юнит-конверсия (D39.21-меры): политика «привычные единицы target-языка» — zh→ru: 时辰=2 часа, 半个时辰=час. Механика: (а) строка в драфт-промпт/глоссарий (wire), (б) детерминированный чекер: 时辰+число в исходнике ↔ часы в выводе, конверсия ×2 не сошлась → флаг. Данные единиц — в langpack.
  4. Число-масштабы: расширить число-дрейф-чекер: разряды 千万/数十万/亿 (маппинг масштабов, не только литеральные числа) + 成-проценты (六成六=66%). Приёмка: ловит «тысячи»↔千万 и «6,6»↔66% из rerun2.
  5. Broken-word / latin-residue чекеры: (а) латинские остатки в ru-выводе (again) — дешёвый детектор с allowlist (аббревиатуры/цифры); (б) сломанные словоформы («лять», «войть», «Вперди», «глава клан» [сущ.+сущ. без согласования — детектор по паре голых номинативов?]) — сессия исследует ДЕШЁВЫЙ детектор без тяжёлых зависимостей (никакого hunspell/pymorphy — дефолт-B D39.12); честно доложить достижимый recall. Приёмка: все перечисленные живые дефекты rerun2 ловятся, 0 FP на чистых главах экспортов.
  6. Аудит полноты банк-инъекции (директива владельца D39.21): трассировать, какие поля банка (gender/decl/тип/алиасы/sense) РЕАЛЬНО доходят до драфт- и edit-wire, а какие теряются (memory.go renderGlossaryBlock/editorConstraintHeader-путь). Отчёт-таблица «поле → драфт-wire? edit-wire? где теряется (file:line)» + фикс ОЧЕВИДНЫХ дыр (gender-аннотация именных терминов — род «гу Надежды»/«цикады» должен доезжать); спорное — НЕ чинить, в отчёт оркестратору.
  7. Стайл-канон в промпт (D39.21): строки стайл-гайда в драфт/edit-промпт (пер-пара, langpack/промпт-пак): generic «гу» — средний род · стихи/названия классики — переводом смысла · 资质=«талант» (в чекер-словарь: «ресурсы» при 资质 в исходнике → флаг). Формулировки — данными пары, не кодом.

НЕ делать

Род-enforce реплик (промпт/банк-рычаг, не чекер) · hunspell/pymorphy-зависимости · рефакторинг чанкера сверх заголовков · GLM overflow-гард (ждёт вендора) · сид-правки (元-корень/春秋蝉 — решения владельца, оркестратор внесёт отдельно).

Приёмка (ревью ИСПОЛНЕНИЕМ, мандат 12.07)

go build/vet/test -race зелёные · майнер-парити EXACT неизменен · golden: пере-капчер ОЖИДАЕТСЯ (wire-двигающий пак) — классифицировать диф (какие изменения от чего; wire-нейтральные пункты 1/4/5/6-аудит НЕ должны двигать wire) · дефект-корпус rerun2: каждый известный дефект пойман, 0 FP на чистом (таблица в отчёт) · самопроверка + адверсариальный селф-ревью (3 линзы: детерминизм/langpack-общность/FP-цена). Отчёт — docs/archive/reports/PACK13_QA_REPORT_<дата>.md, с file:line. Сессия НЕ коммитит — лендит оркестратор.