You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
humanizer-ru 3.34.0
Что нового
Числовой контракт сверки фактов: точный строковой канон чисел без
промежуточного float (дробь, знак, целые за границей 2^53, число из 400
цифр — штатный вход); единицы сопоставляются с границей слова; записи
дд.мм без года явно разведены с датами (пометка date_like);
«1.5 кг» и «1,5 кг» — один факт.
Сохранность разметки: сканер HTML-тегов учитывает кавычки атрибутов и
многострочные конструкции; think-блоки и сцепки источника снимаются
только вне fenced/frontmatter/инлайн-кода (граница детектора);
action_fix не перезаписывает файл, который скан считает чистым.
Unicode-паритет Python и JS: класс переноса Python \w исправлен на
[\p{L}\p{N}_] (комбинируемые знаки не входят); регенерированы
demo/markers.js и sw.js; векторы паритета расширены (17 векторов).
Совместимость поставок: сравнение стало полным и типизированным
(все файлы и вложенные поля конвертов; 1 и True — разные типы;
удалённые поля ловятся; явный список нормализуемых нестабильных
значений).
Приёмка блокирует публикацию: pypi-publish выполняет полный строгий
прогон, факты strict-publication, совместимость и живой интервал
публикаций перед необратимым шагом; release-check работает в --strict,
принимает явный тег через input и проверяет криптоподпись и интервал
после публикации между двумя конкретными релизами.
Живые агентные входы: scripts/check_live_distribution.py сверяет
локальные server.json/пакет/контракт с PyPI, официальным реестром MCP
и Pages; публикация записи реестра без секретов (GitHub OIDC,
workflow publish-mcp.yml); запись реестра обновлена до 3.33.0 и
перечитана обратно (status active).
Внешняя обратная связь без слепых зон: тела discussions, комментариев
и ответов с курсорной пагинацией каждого уровня; GraphQL errors/
partial/RATE_LIMITED обработаны; доказательность KPI —
scripts/check_feedback_evidence.py и журнал
research/external-feedback/evidence.v1.json; регулярный сбор в CI
(feedback-collect.yml) без публичных сообщений.
Исполняемые пользовательские входы: самодостаточный рецепт
«Попробовать за 30 секунд» (вход создаётся командой; вывод и код
возврата получены фактическим исполнением рецепта); матрица
проверенных возможностей и границ без заявлений о лидерстве;
tests/test_installed_user_journeys.py — четыре пути на установленном
артефакте вне исходного дерева.
Демо: один результат на весь интерфейс; точные координаты подсветки в
исходном тексте (NFC и тень отображаются обратно); mergedRanges
сортирует интервалы; копирование отчёта согласовано с результатом
(пересчёт при изменении текста до debounce); браузерная проверка
scripts/check_demo_browser.py.
Формулировки приведены в соответствие границам: снято обещание
«естественность без искажения смысла», вердиктное «крайне маловероятен
ИИ» заменено фактом о периоде, «текст целиком машинный» уточнено до
«покрыт артефактами машинного слоя»; формула позиционирования укорочена
до 98 символов синхронно во всех поверхностях (требование реестра MCP).
Breaking changes
Нет. Контракт аддитивен: новые поля (date_like), новые скрипты и гейты,
новые векторы; команды, коды выхода и существующие поля не изменены.
Изменения поведения безопасных режимов и очистителя описаны выше и
покрыты тестами сохранности.
python3 scripts/check_release.py --release-contract — тег подписан
существующим ключом проекта, подпись проверена (в т.ч. во временной
связке из docs/release-signing-key.asc).
python3 scripts/check_release.py --pre-release-interval и --post-publication-interval — интервал ≥ 86400 с по published_at.
python3 scripts/check_pypi_metadata.py --sdist … --wheel … и --live
— metadata публикуемых артефактов и живого PyPI.
python3 scripts/check_live_distribution.py --json — PyPI, реестр MCP
и Pages согласованы с деревом.