books/gu-zhenren/labels/README.md

2.8 KiB
Raw Permalink Blame History

Размеченный набор для чекеров (полигон, пакет-6, 26.07.2026)

Набор живёт ЗДЕСЬ, а не в git: он содержит текст книги (производные книги — вне git). В git ушёл только отчёт docs/archive/reports/POLYGON_CHECKER_LABELS_2026-07-26.md.

Структура

  • raw/corpus.jsonl — 91 юнит из шести реальных прогонов: run, chapter, chunk_idx, members, heading, source, draft, final, disposition. Ключ юнита = run:chapter:chunk_idx (адресация лидера единицы редактуры — та же, по которой прогон пишет chunk_status).
  • pools/*.jsonl — кандидаты по классам (независимые сети, шире чекеров).
  • labels/*.jsonlРАЗМЕТКА: id, label ∈ {defect, ok, disputable}, subclass, note.
  • verdicts/* — вердикты ТЕКУЩИХ чекеров (получены ПОСЛЕ разметки).
  • metrics.json — precision/recall по классам + id ложных срабатываний и пропусков.

Стабильность ID

  • юнит-классы: run:chapter:chunk_idx:<класс>:<смещение в исходнике>
  • строчные: run:chapter:chunk_idx:k4:<поле>:<номер строки>
  • токенные: run:chapter:chunk_idx:k2:<поле>:<символьное смещение>
  • словотипы: type:<слово>
  • глоссарий: run:chapter:chunk_idx:k6:<исходный термин>

Смещения считаны по строкам corpus.jsonl — пока этот файл не переписан, ID воспроизводимы.

Как ре-ранить чекеры против набора

Харнесс, который вызывает НАСТОЯЩИЕ чекеры (internal/checks), — отдельный Go-модуль вне репо с module textmachine/backend/labelharness и replace textmachine/backend => <репо>/backend (имя модуля обязано начинаться с textmachine/backend/, иначе Go запретит импорт internal/). Он ничего в репозитории не меняет. Скрипты сборки/замера — в скретчпаде сессии: build_corpus.py, add_acceptance.py, build_pools.py, build_k6.py, measure.py.

ВАЖНО при повторе: гейты видят финал ДО chunk.ApplyHeading (waverun.go:516 идёт после :486), поэтому детерминированный заголовок из corpus.final надо снимать — иначе номер главы читается как «появившееся число» регресс-гардом.