3.32.1 — совокупный patch-релиз
Один patch-релиз собирает исправления аудита: ложные срабатывания границ маркеров, изоляция плохих запросов MCP, честные состояния батча и демо, статус деплоя из точного SHA, блокирующая приёмка выпуска.
Что нового
- Маркеры: значения
utm_sourceполучили границу конца значения (openairиchatgpt.com.exampleбольше не дают ложных находок класса A); семантика code spans документирована и одинакова в Python и JS (двойной и незакрытый спан, серии другой длины внутри). - MCP: не-строковое имя инструмента отклоняется (-32602), сессия переживает плохой запрос; неожиданный отказ изолируется в -32603 без traceback и входного текста; конверт ребёнка проверяется структурно; схема humanizer-report приведена к фактическому ответу; prohibited_uses возвращён как честно помеченный withdrawn-шим (политика не восстановлена).
- Батч: scan_folder различает проверенное и непроверенное (коды 0/1/2, прочерки вместо ложного нуля, таймаут дочернего процесса 120 с, --selftest с негативами).
- Демо и статус: отсутствие движка или правил — явный отказ, а не чистый результат; предупреждение о тексте в ссылке предшествует изменению URL; «свой текст» очищает share-state; лимит ссылки в байтах после кодирования; футер различает «сведений о релизе нет» и нулевой лаг; status.json генерируется в деплой-артефакт из точного SHA деплоя (гонка исключена).
- Артефакты: мастер маркера компилирует сгенерированный фрагмент до записи в дерево; outward-витрина охватывает RELEASE.md и CONTRIBUTING.md; команды в llms/README сверяются программно с pyproject и контрактом.
- Доказательства позиционирования: benchmark-страница и лидерборд несут датированный снимок одноимённого проекта с пометкой «не измерено, несопоставимо»; таблица с одним сопоставителем не объявляется лидерством.
- Путь пользователя: шаблон issue «Проблема в поставке» (версия, команда, ожидание, факт, безопасный пример); smoke-тесты четырёх сценариев; журнал распространения с URL и статусами; два материала до/после в Discussions (#112, #113).
- Приёмка выпуска: metadata сверяются у тех же sdist/wheel, что уходят на PyPI (блокирующий шаг CI); после публикации — сверка живых metadata PyPI; отказ среды помечается SKIP с причиной, а не PASS.
Breaking changes
Нет. Контракт аддитивен; коды выхода батча уточнены документированно (частичная проверка — 1, отказ входа — 2).
Установка
pip install --upgrade humanizer-ruДемо: https://vladimir-human.github.io/humanizer-ru/ · Бенчмарк: https://vladimir-human.github.io/humanizer-ru/benchmark/ · Бандл скилла: dsh/skills/humanizer-ru/ (17 файлов).
Счётчики: 146 гейтов полного check_all, 135 в --quick.
Архив выпуска
- humanizer-ru.zip, 607597 байт, sha256 \�3d8f5bdc3d3307dd1a1339056eb43392ef05aca810e21541816d8c96aa480dc\ (детерминированная сборка из дерева тега v3.32.1).