github Vladimir-Human/humanizer-ru v3.33.0
3.33.0 — проверяемая гигиена вставки: сохранность разметки, паритет, честная приёмка

latest releases: v3.36.4, v3.36.3, v3.36.2...
one month ago

humanizer-ru 3.33.0

Совокупный релиз цикла: сохранность текста и
разметки, согласованные границы детектора и очистителя, честная приёмка
проверок, паритет CLI и демо, воспроизводимость публичных чисел, статус
поставки из реального прогона.

Основные изменения

  • Сохранность разметки. Безопасные режимы polish (--preserve-markup,
    --typographic) сохраняют байт-в-байт защищённые области: инлайн-код
    (серии бэктиков фиксированной длины), fenced-блоки, YAML-frontmatter,
    URL, HTML-теги с кавычками атрибутов, ZWJ-кластеры составных эмодзи.
    Третий инвариант репортит фактические нарушения сохранения в списке
    invariants (--json) и даёт код 1; --in-place пишет атомарно и
    отказывается от записи при нарушении инвариантов. Единый источник
    правил защиты — scripts/protected_regions.py (копия в пакете).
  • Очиститель согласован с детектором. Снятие utm/referrer использует
    границы детектора (lookahead значения отвергает utm_source=openair,
    chatgpt.com.example; хвост останавливается на ), бэктике, <, >,
    кавычках) — markdown-ссылка и инлайн-код не разрушаются. Маркеры не
    снимаются внутри кода, заборов, frontmatter и (не-URL маркеры) внутри
    URL — обнаружение и снятие больше не расходятся. Guard'ы формализованы
    в contract.v1.json (removal_guards).
  • Съём невидимок без видимых артефактов. Зазор схлопывается в точке
    съёма: нет двойных/тройных пробелов после снятия; авторская типографика
    вне точек съёма не трогается; кириллическая диакритика категории Mn
    сохраняется побайтно во всех режимах.
  • Честная приёмка проверок. check_all: допустимый ненулевой код
    засчитывается PASS только со сверкой содержания отказа, иначе SKIP;
    --strict блокирует приёмку при любом FAIL/SKIP. Подпись релизного
    тега проверяется криптографически (git verify-tag);
    --pre-release-interval машинно требует ≥ 86400 с с предыдущей
    публикации (published_at); --acceptance сверяет утверждения
    status.json с результатом прогона и SHA деплоя.
  • Паритет CLI и демо. 12 общих векторов (тень, маскирование URL,
    Unicode-цифры, разделители строк, code spans, fenced, координаты при
    астральных символах); идентичная Unicode-семантика (\d→\p{Nd},
    \w→[\p{L}\p{N}\p{M}_], явный пробельный класс, \b запрещён —
    явные lookaround-классы), splitlines/NFC/тень/маскирование URL по флагу
    реестра; координаты start/end аддитивно в --json. Решения
    задокументированы: research/PARITY-DECISIONS-2026-09-06.md.
  • Машинные грани. --json без файлов печатает конверт с честным
    scope_note; нераспознанный аргумент с --json — код 2 и конверт в
    stdout; после -- значение --version — операнд; MCP-уведомления
    (включая ping) ответа не получают; дочерний конверт с ключами неверных
    типов отвергается (isError без structuredContent).
  • Воспроизводимость фактов. check_facts: скрипты команды
    reproduce обязаны существовать и компилироваться; source_data сверяет
    хеши исходных данных; --strict-publication фактически исполняет
    публичное воспроизведение (reproduce_public). Числа, цепочка которых
    неисполнима из публичных данных (di-control-2026-09), сняты с
    публикации (publication_approved=false) с эрратой; история сохранена.
  • Статус поставки из реального прогона. write_status --run-result
    обязателен: без результата, с чужим SHA или непройденными проверками
    статус не пишется; published_commit — целевой коммит тега.
    demo-pages выполняет тесты и паритет до генерации статуса и сверяет
    приёмку; кэш service worker версионируется хэшем всех исполняемых
    ресурсов (включая engine.js).
  • Наблюдение за обратной связью. Сборщик кандидатов KPI: issues
    state=all, комментарии, discussions с ответами (оболочка GraphQL,
    курсорная пагинация); UNAVAILABLE отделён от нуля; --json; признаки
    конкретного использования и рекрутинга; синтетика помечается и в журнал
    не попадает.
  • Входы согласованы. Шесть MCP-инструментов во всех носителях
    (llms.txt, USAGE, server.json, шапка сервера); самодостаточный
    воспроизводимый пример в llms.txt с фактическим выводом и кодом
    возврата; состав инструментов в selftest выводится из контракта.
  • Автономия. Документы приведены к постоянному поручению от
    2026-09-06 (GOVERNANCE §2 п.5): тег, подпись существующим GPG-ключом
    проекта, Release и поставка через CI выполняются контуром
    сопровождения; барьеры сохранены.

Установка

pip install humanizer-ru==3.33.0

MCP: {"mcpServers": {"humanizer-ru": {"command": "humanizer-mcp"}}}.
Демо без установки: https://vladimir-human.github.io/humanizer-ru/

Совместимость

Breaking changes: нет. Контракт аддитивен (координаты находок,
url_marker, removal_guards, reproduce_public/source_data);
имена команд, существующие поля, типы, коды выхода и режимы сохранены.
Изменения поведения документированы в CHANGELOG (раздел 3.33.0).

Артефакты

  • humanizer-ru-3.33.0.zip — детерминированный архив скилла
    (scripts/check_release.py --build, 125 файлов, 645177 байт);
    sha256: 83afdd18572cc25023c23c5643362bfdb3a2c8679aa508d06989cc9f226232ef.
  • humanizer-ru-3.33.0.zip.asc — отсоединённая GPG-подпись архива
    (ключ проекта 023E1F146B59348F); проверка: gpg --verify humanizer-ru-3.33.0.zip.asc humanizer-ru-3.33.0.zip.

Полный список изменений: CHANGELOG.md, раздел 3.33.0.

Don't miss a new humanizer-ru release

NewReleases is sending notifications on new releases.