textmachine/docs/BACKEND_CHECKER_PACKAGE_SESSION_PROMPT.md

9.7 KiB
Raw Blame History

Промт бэкенд-сессии: ПАКЕТ-ЧЕКЕРОВ — детекторы качества против размеченного корпуса ($0-код)

Выдан 01.08.2026, оркестратор №9; санкция владельца D39.67/68 (строка 25 бэклога — вес «скоро»). Ты — бэкенд-сессия TextMachine. Зона: backend/ (+ configs/langpacks/) + свой отчёт в docs/archive/reports/. НЕ коммитить — лендит оркестратор. Первый деливерабл — эхо-блок ≤10 строк.

Денег — НОЛЬ (развилка 74). ⚠ Параллельно может идти банк-сессия в режиме read-only дизайна — её файлов нет; если в дереве появятся чужие правки backend/ — СТОП и пинг. --resnapshot не запускать; TM_UPDATE_GOLDEN — только ОДИН раз в самом конце (см. приёмку).

Глобальный критерий владельца (01.08 — мерило каждого фикса)

Чистый архитектурный бэкенд, который легко писать и поддерживать, и который качественно выполняет задачу. Общность: «заработает ли на паре, которой нет в репо, без правки Go?» — фиксы через данные пары/цели, где возможно. Механизм — только где несёт качество; допустимый исход ревизии = «не чинить, закрыть с обоснованием».

МАНДАТ РЕВИЗИИ ПОСЫЛОК (обязателен)

Каждый пункт ниже найден по критерию «забыли», НЕ по критерию «надо ли». Для КАЖДОГО перед кодом — вердикт-тройка: (а) посылка (источник-замер: D39.39 / GENERALITY_RESEARCH §8 / пост-сверка) актуальна? — перепроверь сам дефект на текущем коде и labels-корпусе; (б) нужность — что даёт починка на РАЗМЕЧЕННЫХ данных (сколько единиц ловит/отпускает); если выигрыш ~0 — рекомендуй закрыть, не строй; (в) форма — лучшая из альтернатив (данные vs код vs контракт-запись «потолок by construction» по Р4). Замер бьёт по посылке → СТОП и пинг, не тихий обход.

ШАГ 0 — карта чтения

  1. CLAUDE.md → CURRENT-STATE docs/PROGRESS.md (строка 25 — твой полный перечень) → docs/architecture/13-tech-debt-anchors.md, секция «строка 25» — там file:line-якоря КАЖДОГО дефекта (chevron cheapgates.go:248-275 · K5a digit-требование :508-519 · заглавная латиница checkers.go:527 · K5c-супрессор :411-435 + «a design, not a patch» cheapgates.go:84-89 · 两 dc-checkers.txt:65 · 转-подстрока memory.go:1048/144 · R4-резидуал).
  2. Контракты: D39.63 — Р2 = детекторы единиц/шкал жёстко флагают ТОЛЬКО неверное ЗНАЧЕНИЕ, неконвертированная форма = мягкий счётчик (нужен split hard/soft в результате чекера); Р4 = потолок recall by construction записывается В КОНТРАКТ правила (комментарий+тест), не «переспрашивается».
  3. Корпус и харнесс: ~/books/gu-zhenren/labels/ (k1k6.jsonl, verdicts/, README с рецептом ре-рана НАСТОЯЩИХ чекеров) — корпус СТАТИЧЕН, свежий прогон не нужен. Прежний харнесс замера утрачен в scratch (урок «персист, не scratch») — пересобери и положи В GIT; рекомендуемая форма — env-гейченный Go-тест по образцу майнер-парити (TM_CHECKER_LABELS=1 go test …), выбор за тобой, но durable.
  4. Происхождение дефектов: D39.39/40 (пакет-6, 12 дефектов) · docs/archive/reports/GENERALITY_RESEARCH_2026-07-31.md §8 (актуальные якоря; ссылки D39.39 устарели) · D39.64 отчёт §5.5 (что фаза-2 сознательно НЕ делала и почему).
  5. docs/experiments/00-provider-quirks.mdНЕ нужен (вызовов нет); 12-go-style-notes.md — норматив общности.

Состав пакета (= строка 25 + строка 79; приёмка КАЖДОГО — по labels)

Корзина II пака-21: #3 атрибуция речи сверх «X», — (восклицательные/безатрибуционные; 38/46 реплик мимо) · #5 K5a: 数/几-магнитуды проходят к подчекеру (сейчас recall=0 на 149k знаков; узкий DC2-проб покрывает ровно 数十万) · #6 класс «заглавная латиница/маркеры TM-BANK в финале» (с allowlist) · #7 порог-3 — решить ПО ДАННЫМ labels: фикс или Р4-запись «потолок by construction» · #10 однознаковые Han-ключи пост-чека (转 в 转身): контекст/граница для Confirmed-miss — согласуй интерфейс с банк-сессией, зона общая с memory.go. Из (I)/(III): #1 K5c-супрессор пер-вхождением + имплементация Р2-контракта (сравнение ЗНАЧЕНИЯ, hard/soft split — «a design, not a patch», проектируй как дизайн) · #8 两/兩 → cheng_re (данные, батчем). Отложенные фазой-2 (D39.64 §5.5): K4b-атрибуция · inner_marker-вето-на-тире · приёмка гомоглиф-детектора (существует — tk.mixed, замерить на labels) · строгий OffLanguage (⚠ оговорка 36а: «甲等 → класс Цзя» строгой формой НЕ ловится — не заявлять выигрышем). R4-резидуал пака-11: DC7 grade/role · omission-бэкстоп (лёгкий ru-стеммер + лемма-матч по {dst, decl.forms, aliases}) · DC2 word↔word дроби (дизайны — PACK11_CONT_REPORT §резидуал). Довески: Problem-классы research/22 §2 №5 (char-freq-degeneration, control-code-loss) — вердикт-тройка, строить только если labels подтверждают класс · alignment-защита рефренов: МИНИМУМ = правка prompts/zh-ru/editor.md («повторы, которых НЕТ в оригинале»; двигает PromptSHA256/wire — допустимо, перекупок нет D39.63), детектор повторов — только вердикт-тройкой · строка 79: checks/repair.go:131 DC1-трим и checkers.go:457,474 isCyrLetter → c.wordScript; lintNumberMagnitude гейтить по объявленному письму источника (SourceScripts). Выход пакета: пере-замер recall чекеров на labels (вход решения строки 12 postcheck_gate) — таблица per-класс ДО/ПОСЛЕ со вскрытыми единицами.

Приёмка и самопроверка (обязательны, «ВСЕГДА на важных»)

  1. Харнесс labels: два независимых пути счёта совпадают; метрики per-defect ДО/ПОСЛЕ; перед любым сравнительным выводом — глазами ≥1 единица с каждой стороны (вывод на агрегате до вскрытия единиц запрещён).
  2. go build/vet/go test -race ./... зелёные; майнер-парити EXACT; мутационные тесты на новые данные-классы.
  3. Голден: вердикт-двиги для чекер-класса ОЖИДАЕМЫ и ратифицированы этим промтом — пере-захват ОДИН раз в конце (TM_UPDATE_GOLDEN), маскированный дифф, в отчёте: какие оси/вердикты двинулись, почему КАЖДЫЙ двиг верен (вскрытые единицы). Перекупок нет (D39.63) — но оси протоколируй.
  4. Общность: свип своих диффов на новые язык-ветвления (их быть не должно — данные/контракт).
  5. Адверсариальное селф-ревью исполнением: свой код + свои метрики (author≠reviewer внутри сессии).

Отчёт: docs/archive/reports/CHECKER_PACKAGE_<дата>.md — эхо-блок · вердикт-тройки ВСЕХ пунктов (вкл. «не чинить» с обоснованием) · метрики · голден-протокол · вопросы владельцу отдельным блоком. Бэклог не правишь; расхождение промта с кодом = пинг. СТОП — приёмка оркестратора.