Первый результат без установки. На главной странице сайта появился тот же
сканер на JavaScript: вставил текст, получил оценку чистоты 0-100, подсветку
найденных оборотов и команду установки для своей среды. Считается в браузере,
текст никуда не отправляется, сервера нет. Каталог и баны не менялись.
- Один источник правды.
scripts/export_web_rules.pyпечатает баны,
маркеры, жанровые исключения и константы score изmarkers.py,score.py,
burstiness.py,structure.pyвdocs/scan-rules.js. Регулярки Python
переводятся в JavaScript механически:\bи\wне знают кириллицу в JS и
заменяются на явные Unicode-классы; единственный паттерн с локальным флагом
(«от X до Y») переписан руками с регистрозависимыми флагами. Гейт--check
в CI роняет сборку при дрейфе. - Паритет проверяется, не обещается.
scripts/test_web_parity.pyгоняет
docs/scan.jsчерез Node на всёмeval/corpusплюс синтетика (Markdown,
диапазоны, копипаста, стерильный текст) в двух жанрах: баны и маркеры сходятся
с Python поштучно, score в допуске 10 баллов. Наибольший разрыв сейчас 8
(wiki_baikal): в браузере нет морфологии pymorphy3, это написано под
результатом.docs/scan.jsповторяет разбор Markdown изmarkdown.py. - Первый экран перестроен. Убраны декоративные чипы над заголовком,
карточки-метрики и терминал с примером вывода: их работу делает живой аудит.
Три готовых примера (нейрочерновик из корпуса, «Байкал» из Википедии CC
BY-SA, авторский пост с кодом и цитатой), выбор жанра, подсветка запретов и
маркеров в тексте, вкладки установки для Claude Code, Cursor и других
агентов через skills.sh, Claude.ai, Codex, DeepSeek Harness с кнопкой
копирования. Версия переехала в подвал. - README ru/en: раздел «Проверить текст без установки».
- Везде по репозиторию «мерить/меряет» заменено на «измерять/измеряет».