# humanizer-ru

> Нормализатор и диагност русского текста: находит артефакты копипасты и
> следы машинной генерации, нормализует типографику без правки смысла.
> Продукт для русского текста; не для английского, исходного кода,
> юридических документов и художественной прозы.

## Маршрутизатор задач

- Проверить текст на следы машинного происхождения: `humanizer-detect`
- Сверить факты двух версий текста (потери, добавления, инверсии): `humanizer-facts diff`
  (частота связок, статус домена обязателен в выводе) и `humanizer-markers`
  (артефакты копипасты и чат-интерфейсов).
- Найти артефакты копипасты и разметки: `humanizer-markers` (показывает
  совпадения с классом и строкой). Снятие невидимых меток текстового
  слоя: `humanizer-markers --remove` — safe снимается автоматически,
  ambiguous (bidi, вариационные селекторы, ZWJ/ZWNJ, спецпробелы) только
  с `--include-ambiguous` и предупреждением, dangerous (разделители
  строк, аннотации) показывается и не снимается никогда; теги
  эмодзи-флагов не трогает. Контейнерные файлы (PNG/DOCX/PDF) —
  `scripts/filemarks` в репозитории. Все четыре команды читают stdin
  через «-».
- Нормализовать типографику без правки смысла: `humanizer-polish`
  (идемпотентна; буквы и цифры сохраняет дословно; режимы `--diff`,
  `--dry-run`, `--in-place`, `--json`). Не запускать на Markdown и
  разметке: снимает `##`, `**`, ёлочки, тире, многоточие; для разметки —
  `--preserve-markup` (сохраняет разметку и русскую типографику, снимает
  только невидимые символы и NBSP) и `--typographic` (русская
  публикационная типографика: парные прямые кавычки в ёлочки, многоточие
  единым символом; код, заборы и frontmatter не трогает).
- Переписать текст по-человечески: скилл `humanizer-ru` (SKILL.md),
  только по явной просьбе пользователя; заявлений о качестве переписывания
  нет.

## Машинный интерфейс

Ссылки абсолютные: llms.txt отдаётся с двух хостов (репозиторий и Pages),
относительные цели с Pages не разрешаются.

- Контракт: [contract.v1.json](https://github.com/Vladimir-Human/humanizer-ru/blob/main/contract.v1.json)
  — схема конверта `{tool, schema, files}`, версии схем, коды выхода,
  «когда не использовать» для каждого инструмента.
- Реестр маркеров: [markers.v1.json](https://github.com/Vladimir-Human/humanizer-ru/blob/main/markers.v1.json)
  — 40 маркеров класса `copypaste_artifacts` с доказательствами и
  статусами `live`/`retired`.
- Реестр фактов витрины: [eval/facts/facts.v1.json](https://github.com/Vladimir-Human/humanizer-ru/blob/main/eval/facts/facts.v1.json)
  — единственное место, где живут публичные числа проекта, со статусами и
  командами воспроизведения.
- MCP-сервер (Model Context Protocol, stdio): `pip install humanizer-ru`,
  в конфигурации MCP-клиента команда `humanizer-mcp` (без аргументов;
  JSON-RPC 2.0, newline-delimited). Инструменты `humanizer_scan`,
  `humanizer_markers`, `humanizer_polish`, `humanizer_detect`; их схемы
  генерируются из contract.v1.json, находка возвращается как успешный
  tool result (isError false), ошибка входа — isError true с конвертом.
  Проверено: conformance-гейт `scripts/check_mcp.py` и протокол в
  `research/mcp-conformance-protocol.md`.
- Идентичность продукта: файл `identity.v1.json` в корне репозитория и на
  Pages (/identity.v1.json) — имя, область, URL-якоря, точка входа MCP,
  список запрещённых заявлений; сверяется с носителями гейтом
  `scripts/check_identity.py`.
- Как обновиться: `pip install --upgrade humanizer-ru==<версия>`; свежая
  версия — [GitHub Releases](https://github.com/Vladimir-Human/humanizer-ru/releases)
  или лента [releases.atom](https://github.com/Vladimir-Human/humanizer-ru/releases.atom);
  машиночитаемая сверка версии — `humanizer-scan --contract`
  (product.version, блок install).

## Чего этот проект не делает

- Не выносит вердиктов об авторстве: маркеры указывают на путь текста
  (копирование, чат-интерфейс), а не на автора; детектор связок вердикта
  не даёт никогда.
- Не обещает «обход детекторов» как гарантию.
- Не помогает в запрещённых использованиях (блок `prohibited_uses` в
  contract.v1.json): сдача работ там, где ИИ запрещён, обход
  антиплагиата и атрибуции, сокрытие факта использования ИИ, снятие
  водяных знаков с чужого контента, приписывание машинного текста
  другому лицу.
- Не работает с не-русскими текстами, кодом, юридическими документами,
  художественной прозой и поэзией — для них честный ответ «вне области»,
  но отказ никогда не пустой: минимум типографика и список артефактов.

## Документация

- [README](https://github.com/Vladimir-Human/humanizer-ru/blob/main/README.md)
  — установка и использование (рус).
- [README (English entry)](https://github.com/Vladimir-Human/humanizer-ru/blob/main/README.en.md)
  — документация для не-русских читателей; продукт остаётся русскоязычным.
- [Методология проверяемости](https://github.com/Vladimir-Human/humanizer-ru/blob/main/docs/FRAMEWORK.md) и
  [эррата](https://github.com/Vladimir-Human/humanizer-ru/blob/main/ERRATA.md)
  — датированные отзывы опубликованных чисел.
- Границы честности: что проект структурно не ловит и почему — docs/THREAT-MODEL.md; проверенная библиография — research/BIBLIOGRAPHY.md.
- humanizer-report до.md после.md --json: машиночитаемый отчёт правки (токены keep/add/delete, SARI-адаптация, классы правок, сверка фактов); вердиктов об авторстве не выносит.
- Классовая разбивка FP, exploratory, вне предрега F16: класс A: 0 случаев на 12314 текстов-неносителей; класс B: 8 случаев на 12314, то есть 0.00065, Wilson 95% CI от 0.0003 до 0.0013; контрольный набор 40 текстов: флагов 0; тяжёлый домен S4 legal и official, n=381, дефицит объёма зафиксирован в предреге: 18 случаев на 381, то есть 0.0472, Wilson 95% CI от 0.0301 до 0.0734; знаменатели: 12354 полный корпус F16, 12314 validation-страта.
