# История версий humanizer-ru ## 3.13.0 Скилл ставится в DeepSeek Harness (dsh) двумя способами: копией в `~/.agents/skills/` и бандлом из подкаталога `dsh/`. Бандл — только текст: `cordis.patch.yml` монтирует штатный провайдер `dsh-skill-filesystem` на вендорную копию SKILL.md и `references/`, исполняемого кода в нём нет, сборка при установке не требуется. Побайтовую синхронность вендора держит новый гейт `scripts/check_bundle_sync.py`, он же добавлен в `check_all.py` и в релизный прогон. Десять ссылок на справочники в SKILL.md переведены с голых имён файлов на `references/*`: dsh разрешает пути относительно каталога скилла, и прежняя форма вела в несуществующие файлы. Названы части справочников, которые упоминались только во второй ступени карты, — в том числе оба файла с таблицами регулярных выражений. Внутри `references/` исправлены девять указателей на разделы `A.n`, оставшихся от разбиения справочника, и убран фантомный ID «Раздел I»: он объявлялся существующим, хотя такого заголовка нет ни в одном файле. В разделе о границах безопасности появилась оговорка: ограничение инструментов из `allowed-tools` исполняет Claude Code, dsh этот ключ не интерпретирует. Из таблицы архитектуры убраны шесть строк про Python-скрипты: агент их не запускает, `allowed-tools` такого инструмента не даёт, а описаны они в README. Бюджет тела SKILL.md вернулся с 4911 до 4460 токенов из 5000. Заявление о структуре справочников приведено к правде: полного набора из пяти блоков нет у большинства разделов. Закрыты три дыры в гейтах. Релизный прогон не вызывал `check_bundle_sync`, `check_own_style`, `check_reference_maps` и самопроверку `scan_soft_signals` — тег можно было поставить при рассинхронизированном вендоре. Гейты `no-anglicisms` и `regex-check` не перечисляли себя в `paths`, поэтому правка чёрного списка не запускала собственную проверку. Исключение backticks в `no-anglicisms` работало на строку, а не на вхождение, и одна цитата прикрывала кальку в той же строке. В `test-fixtures-cases.md` добавлен раздел для `invisible_layout`: образцов было 38 на 39 выражений при обещании «на каждое выражение». Раздел про символы нулевой ширины документировал устаревшую форму выражения — приведён к коду. Число CI-гейтов в витрине исправлено с 33 на 36. ## 3.12.0 Главное правило стало строже: мягкие признаки больше не дают вердикта об авторстве ни по отдельности, ни в сочетании. Вердикт «написан ИИ» — только на жёстких основаниях: маркер класса A, подтверждённый подлог источника или сведения автора. Мягкие признаки калибруют объём правки и дают рекомендацию «стоит проверить». Обновлены Главное правило в SKILL.md и false-positives.md, дерево решений (лестница «3–5 выборочно, 6+ целиком» сохранена, с пометкой, что авторство по мягким признакам не определяется), ответ в режиме проверки без правки и примечание счётчика мягких признаков. ## 3.11.1 Патч по итогам внутренней ревизии. Дерево решений в `SKILL.md` в двух местах выводило авторство из счёта мягких признаков: «0–2 признака → текст, вероятно, человеческий» и «стилистическая особенность, а не ИИ». Это противоречило Главному правилу скилла и его же корпусной доктрине: мягкие признаки по отдельности встречаются у живых авторов, и вывод «написан человеком» из их отсутствия политикой не предусмотрен. Теперь дерево говорит прямо: вердикт «написан ИИ» допустим только по Главному правилу (маркер класса A / подлог источника / 3+ признаков из разных категорий), а счёт признаков калибрует объём правки. Заодно поправлен docstring `scripts/scan_soft_signals.py`, который цитировал старые строки дерева. Правила правки не менялись: лестница «3–5 выборочно, 6+ целиком» осталась как была. 34/34 гейта зелёные. ## 3.11.0 Проверяемость становится публичной: методология опубликована в репозитории, на витрине — только механические оси, а главный контрфакт «LLM без скилла» впервые предрегистрирован до генерации и проведён в двух прогонах. **Гигиена репозитория.** check_all больше не зависит от имени каталога клона. Бюджет SKILL.md сокращён с 4603 до 4454 токенов — ниже 90% лимита. Уязвимость Snyk E005 (ложное срабатывание на примете `ppl-ai-file-upload`) разобрана в README на русском и английском; примета сохранена. Предупреждение об одноимённых проектах дополнено таблицей отличий (RU/EN). **Витрина — только механические оси.** По решению владельца LEADERBOARD.md показывает только механические оси, читаемость остаётся внутренним сигналом. Самопрогон (reference): 0 ложных срабатываний на человеческих текстах и 2/2 по граничным контролям. Линтер [smixs/humanizer-ru](https://github.com/smixs/humanizer-ru): 6 ложных срабатываний и 1/2 по граничным контролям. Исходные данные хранятся в research/leaderboard/, всё воспроизводится из репозитория. **Контрфакт: скилл против «LLM без скилла».** Предрегистрация сделана до генерации прогонов, проведено два прогона. Снятие маркеров: 100% против 100% — ось не различает подходы. Доля факт-корректных правок — паритет. На человеческих текстах «LLM без скилла» даёт 3 и 2 ложных правки, скилл — 0 в обоих прогонах. **Невидимая маркировка и файловый слой.** Маркер A.7 расширен управляющими символами двунаправленного письма, прочими невидимыми управляющими символами и межстрочными аннотациями. Новый маркер invisible_layout: мягкий перенос, экзотические пробелы U+1680, U+205F и U+3000, вариационные селекторы вне эмодзи. Наборные пробелы U+2000–U+200A исключены как легитимные в оцифрованных классиках — тонкий пробел U+2009 встречается в тексте Перельмана. Маркеров стало 39, реестр — 37/39. Источник классов — публичный разбор watermarks-remover (MIT) от 2026-08-13. Снятие невидимых меток поставщиков — ценность продукта по решению владельца; это отдельный слой: ось контрфакта измеряла снятие копипаст-маркеров (100/100), невидимые метки контрфакт не покрывал. Полный разбор watermarks-remover перенесён: `scripts/filemarks/` — осмотр и снятие C2PA/EXIF/XMP-метаданных из PNG/JPEG/SVG/PDF/DOCX/ODT/HTML/MD (PDF best-effort, предпочтителен exiftool), хук перезаписи слоя B с русскими промптами, опциональная оценка пиксельного SynthID внешним скорингом (некоммерческая лицензия, в проект не входит). Матрица слоёв — `references/removal-matrix.md`; двухслойная модель и таксономия классов — `llm-fingerprints.md`; рецепт слоя B — `rewrite-guide.md`. Самопроверка filemarks 23/23 (после самоаудита 2026-08-13: проверка значений frontmatter ограничена provenance-ключами, чтобы детектор не помечал собственное самоописание скилла); гейтов стало 34. **Методология опубликована.** В docs/FRAMEWORK.md — принципы честности, нейтральный корпус, реестр доказательств, слепые прогоны, гейты, консилиум, кейс деструктивного ревизора и границы метода. **Исследования в research/.** MAINTENANCE-MODE.md — заранее записанные критерии и порядок перехода в режим поддержки. SELF-RUNS-ANALYSIS.md — публичный разбор самопрогонов: проверяемое против непроверяемого. METRICS.md — еженедельная таблица метрик и цели на 90 дней. REBALANCE.md — срез реестра направлений по состоянию на 2026-08-13. **Метрики и канал.** Канал альянсов и писем вычеркнут решением владельца — остаётся только входящий контакт; заявка в каталог awesome-copilot отправлена (PR #2646, на момент релиза все проверки пройдены). Политика витрины заявлена в README: публично — только механические оси, читаемость — внутренний сигнал. ## 3.10.0 Главное в выпуске — глубокая перезапись: целиком машинный текст скилл теперь переписывает с нуля по фактовому скелету, с жанровыми режимами подачи и самопроверкой результата. Существующие правила выборочной правки, пороги дерева решений, классы маркеров A/B и Главное правило не изменены; детерминированный слой приёмки вырос до 33 гейтов и зелёный. - **Глубокая перезапись и жанровые режимы.** Новая ветка дерева решений: если текст целиком машинный и правка запрошена, выписывается фактовый скелет (числа, имена, даты, термины, причинные связи) и текст пересобирается связной прозой с нуля. Режимы «очерк», «новость», «переписка» и «технический текст» меняют подачу, но не факты; петля самопроверки прогоняет результат по маркерам и чек-листу до сдачи; контрольное упражнение «один скелет — три подачи» ловит расхождения подач в фактах. - **Детерминированная проверка.** `chatbot-artifacts.md` получил таблицы готовых подстрок и grep-выражений: когда текст лежит в файле и доступен Grep, маркеры класса A ищутся точным поиском без мысленного перебора. `quantitative-heuristics.md` дополнен готовыми подстроками мягких признаков из уже задокументированных паттернов. Новых маркеров слой не добавляет — существующие становятся исполнимыми детерминированно. - **Детектор фактов стал полным.** Числительные одиннадцать–девятнадцать, десятки, сотни, тысячи, составные формы и пары «цифра + слово» считаются одним фактом; числа — жёсткий класс (ошибка блокирует), имена собственные — предупреждение. Слепое пятно на числах, выводимых из перечислений, задокументировано; гейт сознательно не ослабляется. - **Мягкие сигналы: точность и границы.** Заборы в списках и вложенные заборы маскируются по CommonMark — блоки кода детекторы не видят; табы раскрыты по таб-стопам, поэтому проза, спрятанная за «\t```», остаётся видимой. Правило трёх считает тройки и не считает четвёрки (включая четвёрки с вводным словом внутри) и перечисления годов; вводное слово перед тройкой её не прячет. Правило жанра «чат» зафиксировано в `false-positives.md` (§16). Самопроверка сканера выросла с 76 до 106 случаев. - **Паттерн #21b: раздел-пересказ в конце текста** — «Вкратце», «Подводя итоги», дублирование уже сказанного; критичность средняя. Паттернов стало 38 (25 базовых + 13 расширений). - **Невидимая маркировка моделей.** В `llm-fingerprints.md` введён уровень «P-заявление»: дословное заявление поставщика без образца знака. Заявление Anthropic о встроенном водяном знаке моделей Claude, выпущенных с 2026-08-02, зафиксировано с источником и датой обращения; текст от модели с заявленной маркировкой всегда переписывается глубоко и целиком: невидимый знак не ловится поиском нулевых ширин. - **Реестр доказательств: 32/38 → 36/38.** Полные записи получили `turn_fetch`, `turn_file`, `sandbox_link` и `think_tag`. Остаток — два маркера (`grok_card`, `attached_file`): публичные образцы не найдены, что зафиксировано как закрытие с фикстурами, а не скрыто. - **Слепое панельное судейство.** Три судьи одной модельной семьи оценивают обезличенные пакеты; сводка большинством, ключи по идентификаторам пар лежат вне пакетов, пара без строгого большинства уходит в ничью. Целостность записей в `eval/results/` охраняется новым гейтом: сверка с манифестами прогонов и пересчёт из сырых вердиктов судей. Самопроверка `blind_eval` — 34 случая. - **Прогоны приёмки.** Глубокая перезапись подтверждена на жанровом (5:0:5 по читаемости, потерь смысла 0) и маркерном (5:0:1) корпусах; пересудейство панелью независимой модельной семьи дало тот же счёт. Жанровые режимы — 6:1:1 в пользу перезаписи; единственная потеря смысла — в ветке без скилла. Снятие маркеров — 100% в обеих ветках, регрессии нет; третья ось, невидимые символы, — 2:0:1. Ложных правок в человеческих контролях у ветки со скиллом — ноль во всех прогонах. Замер позиционного шума панели задокументирован: повторное судейство меняет победителя по читаемости на 5 парах из 8, метки потерь смысла не меняются. - **Корпуса валидации расширены.** Человеческий корпус вырос с 11 до 26 текстов: добавлены драма, сказки, популярная наука, повесть, сатирические рассказы, очерк, мемуары и предисловие к словарю. Корпус сырых ответов моделей — 24 ответа семи семей (GigaChat, Алиса, Le Chat, DeepSeek, Grok, Gemini, Copilot/Bing), каждый с публичным источником и датой обращения; два ответа Grok — транскрипции публичных скриншотов, остальные дословные. - **Гейты и гигиена.** Новые гейты: мягкие сигналы на человеческом корпусе и целостность результатов (31 → 33). В `check_docs.py` — маркеры merge-конфликтов в документах и манифест состава верхнего уровня: новый корневой файл не проходит без осознанного обновления манифеста и деревьев README. `docs/REVIEW.md` удалён по решению владельца: ссылки распутаны, PR-шаблон самодостаточен. Вывод валидаторов переведён на русский, мёртвый код удалён. ## 3.9.0 Реестр доказательств стал первичным: у 32 маркеров из 38 есть неизменяемый источник, дословный образец и класс доказательства. Правила скилла не менялись; тело SKILL.md сжато по формулировкам без потери содержания. - **Реестр доказательств: 14/38 → 32/38.** Восемнадцать новых записей — immutable-ревизии Википедий (EN и разделы fr/es/it) и снимок Wayback Machine; шесть записей базового набора (`ref_name_search`, `grok_card_tag`, `deepseek_line_ref`, `attached_web_bracket`, `placeholder_url`, `perplexity_s3`) усилены со secondary до primary; источники `utm_copilot` и `placeholder_date` зафиксированы на /blob/-снимках коммитов GitHub. Остаток: шесть legacy-маркеров без живых образцов в доступных публичных архивах и две вторичные записи с зафиксированной недостижимостью первоисточников — задокументировано, а не скрыто. - `scripts/check_fixture_sources.py`: снимки Wayback Machine (`web.archive.org/web/<метка времени>/`) признаны неизменяемыми источниками; в самопроверку добавлен один кейс (итого 21). - Справочники разбиты по частям: `references/chatbot-artifacts.md` — индекс и три части, `references/test-fixtures.md` — индекс и две части; предупреждений бюджета ноль. Новый `scripts/check_reference_maps.py` следит за единственностью заголовков и живостью имён частей. - Новый `scripts/check_own_style.py`: порог 90 мягких признаков на прозу поставки; справочники и CHANGELOG вне порога по обоснованию в `research/BACKLOG.md`. Гейтов стало 31 (было 27). - SKILL.md: ~4567 → ~4442 токена, ниже предупреждающего порога 90%; правила изоляции, принцип «не дописывать факты», чек-лист и дерево решений сохранены. - `tests/fixtures/openai-pua.txt`: дословный срез ревизии-источника с живыми PUA-байтами — запись `openai_pua` проверяема без сети. - Второй парный прогон слепой оценки `eval/runs/2026-08-07-second` (6 пар): механика — правки без дописанных фактов 100% со скиллом против 75% без, ложных правок в человеческих текстах 0/0; судейская часть — за человеком. - `research/core-language-split.md`: описание границы между переносимым ядром и языковым слоем скилла — первый шаг к переносу на другой язык; файлы не перемещались. ## 3.8.0 Мягкий слой стал счётным, релизный чек-лист — одной командой. Правила скилла не менялись: категории, пороги и жанровые исключения взяты из дерева решений и `false-positives.md` как есть. - **Новое: `scripts/scan_soft_signals.py`.** Regex-слой ловит артефакты копирования, но русские модели их почти не оставляют: парный прогон 2026-07-26 дал ноль срабатываний на выводах GigaChat и Алисы. Мягкие признаки до сих пор считались только глазами. Сканер находит кандидатов по четырём категориям, считает каждый паттерн один раз на текст и применяет пороги дерева решений; жанр (`--genre`) выключает то, что для жанра норма, юридический выключает мягкий слой целиком. Есть `--json`, `--plain-text`, `--fail-at N`. Вердикта об авторстве нет по построению: печатаются кандидаты с цитатами и рекомендация объёма правки. Самопроверка — 76 случаев, включая мета-тест, что гарнесс замечает мёртвый детектор. На человеческом контроле (11 файлов, нейтральный жанр) — ноль признаков; на выводах GigaChat и Алисы кандидаты появляются там, где regex-слой молчит. - **Новое: `scripts/check_all.py`.** Чек-лист релиза состоял из восьми команд, которые запускались по памяти. Теперь один прогон: 27 гейтов, `--quick` — 23. Исходы честные: PASS, FAIL или SKIP с пояснением — в поставке без research/ и eval/ корпусные гейты пропускаются, а не имитируют успех. Самопроверка доказывает, что раннер умеет падать и что быстрый набор строго уже полного. - `check_markers.py --scan`: вложенные совпадения печатались дважды — `oaicite` внутри `contentReference`, `turn0file0` внутри `citeturn0file0`. Совпадения схлопываются помощником `_line_matches`; пересечения без вложенности (PUA-разделители) сохраняются. `eval/run_eval.py` считает тем же помощником, поэтому числа сканера и гарнесса не расходятся; самопроверка гарнесса 12/12. - `check_perf.py`: неэкранированная последовательность в docstring давала SyntaxWarning на Python 3.12+; строка стала raw. - CI: в `validators.yml` добавлены самопроверки сканера и раннера отдельными шагами (правило класса C из REVIEW.md). Полный прогон `check_all` в CI не дублируется: каждый его гейт уже есть отдельной работой. - Документация: в SECURITY счёт скриптов исправлен с одиннадцати на тринадцать; REVIEW.md указывает запуск чек-листа одной командой; деревья README и архитектура SKILL.md дополнены; строка sandbox-маркера в README приведена к точной форме выражения из CASES; опечатка в research/GAPS.md; BACKLOG перестал утверждать, что режима `--skip-markup` нет, — он существует с 3.7.0. ## 3.7.4 Исправление устаревшего примера в инструкции по установке и отзыв одного неверного утверждения из записи 3.7.3. - **Отзыв утверждения.** Запись 3.7.3 говорила «Заявленное закрытие не работало» про правку 3.7.0, которая запрещает вердикт «ИИ» при трёх и более признаках одной категории. Это неверно. Сплошное прохождение дерева версии 3.7.2 по шагам показало: правило срабатывало. Пустой узел «все маркеры из одной категории?» действительно ни на что не влиял, но ниже него стояла достижимая строка порога «3+ признаков одной категории → вердикт „ИИ“ не выносить», и она давала верный вердикт. При обоих возможных чтениях узла вердикт «ИИ» не выносился; расходились только рекомендуемые действия — «не править» против «можно предложить форматную правку». Дефектом была двусмысленность и дубль, а не неработающее правило. Формулировка записи 3.7.3 исправлена. - Примечание к установке приводило пример распаковки `Source code (zip)` как папки `humanizer-ru-3.7.2`, когда выпущена 3.7.3. Имя больше не привязано к номеру версии. - Гейт 16 в `check_docs.py`: имя каталога вида `humanizer-ru-X.Y.Z` в инструкциях обязано совпадать с версией скилла. Проверяется только шаблон имени каталога: README законно ссылается на прошлые выпуски («новое в v3.2», «с версии 2.3»), и сплошная проверка версий давала бы ложные срабатывания. `CHANGELOG.md` исключён сознательно: журнал по своей природе цитирует прошлые состояния, и запись про исправленный дефект обязана содержать старое имя каталога. Первая версия гейта на этой самой записи и покраснела, прочитав упоминание как употребление. Самопроверка 23 → 27, четыре новых случая: устаревшее имя в русском README, в английском, цитата в журнале не срабатывает, совпадающее имя проходит. Гейт на неверные утверждения о собственной истории добавить нельзя: такое ловится прохождением дерева по шагам, а не проверкой текста. Запись оставлена как след того, что проверять находки нужно и у проверяющего. ## 3.7.3 Цикл аудита: скилл применён к собственным текстам. Десять раундов, шестнадцать находок, девять патчей. Правила скилла не менялись — менялись валидаторы, дерево решений, история коммитов и формулировки документации. - `count_style_markers.py`: третий лживый селфтест. Детекторы длинного тире и эмодзи можно было обнулить полностью, а самопроверка печатала 17/17 PASS. Теперь 19/19: обнуление любого ловится. - Дерево решений: два ответа на один случай. Узел «все маркеры из одной категории?» стоял ниже обеих проверок маркеров, где маркеров уже нет по построению, и ниже него работала строка порога «3+ признаков одной категории → вердикт „ИИ“ не выносить». Дубль убран, узел говорит о признаках и разделён по порогам. Уточнение к этой записи — в 3.7.4. - Главное правило: перечисляло три категории мягких признаков вместо четырёх. Узел даты не покрывал сообщённую свежую дату. - Пять валидаторов роняли traceback вместо кода 2 при сбое чтения. `run_eval` не валидировал запись манифеста. `blind_eval` не защищал чтение вердиктов. - История коммитов перестроена: при по-коммитном применении четыре промежуточных состояния публиковали самопротиворечивый README. Итоговое дерево побайтово то же. - `docs/REVIEW.md`: в чек-лист релиза внесён шаг «приложить архив». - Самоприменение: четырнадцать точечных правок в SKILL.md, PERSONA.md, README.md, справочниках и CHANGELOG 3.7.0. Массовой переделки не было — механические оси (ритм, тире, списки) чисты с самого начала, почти все попадания счётчика — цитируемые образцы. ## 3.7.2 Релиз безопасности: закрыта настоящая уязвимость обхода пути, убран повод для ложного срабатывания сканера, зафиксирована граница доверия в модели угроз. Правила скилла не изменились. - `eval/run_eval.py`: путь записи корпуса внутри манифеста (недоверенный ввод — гарнесс принимает манифест от сторонних скиллов) больше не читается без проверки границы. Отвергаются абсолютный путь, буква диска, обратный слэш, выход через `..`, симлинк вне корня; отказ с кодом 2. Сбой чтения самого манифеста тоже даёт код 2, а не traceback. Самопроверка 4 → 12/12. - Образцы примет в `check_markers.py`, `check_fixture_sources.py` и `references/test-fixtures.md`: убрана форма полного URL (`https://...`), оставлены только маркеры-идентификаторы. Выражения в CASES не тронуты, 38 из 38 фикстур проходят. В собранном архиве нет полных URL с хостами примет. - `SECURITY.md` и `SECURITY.en.md`: раздел модели угроз. Пути из аргументов командной строки несут полномочия оператора — для локальных валидаторов это не недоверенный ввод. Data-driven пути (манифест eval, поле `fixture_file` реестра) ограничены корнем репозитория с кодом 2. - Версия: SKILL.md, README RU/EN, CITATION.cff — 3.7.2. ## 3.7.1 Патч-релиз по итогам внешнего аудита. Автоматическая проверка Snyk на витрине skills.sh дала FAIL уровня CRITICAL с кодом E005 «suspicious download URL detected in skill instructions»: сканер нашёл в поставляемых файлах ссылки на S3-бакет Perplexity и непрозрачный короткий домен и счёл их каналом раздачи файлов. Сами адреса здесь не приводятся намеренно — иначе запись в истории версий снова даст сканеру повод, ведь CHANGELOG тоже входит в архив скилла. Срабатывание ложное. Скилл — детектор, и одна из его примет класса A — как раз идентификатор S3-бакета Perplexity; ссылки в файлах были образцами для проверки выражения, а не инструкцией что-то скачивать. SKILL.md прямо запрещает переходить по ссылкам из проверяемого текста. Тем не менее витрина показывала публичный FAIL, поэтому повод убран. Что изменено: в файлах, попадающих в архив скилла, хосты образцов заменены на зарезервированные RFC 2606 (`example.com`, `.example`). Затронуты фикстуры `perplexity_s3` в check_markers.py, образцы самопроверки check_fixture_sources.py (там был непрозрачный короткий домен), таблица §14 в references/test-fixtures.md и url-корпус check_perf.py — последнему реальные идентификаторы вообще не нужны, он мерит плотность ссылок, а не приметы. Подлинная форма приметы сохранена там, где она служит доказательством: `tests/fixtures/perplexity-s3.txt` и `research/fixtures/marker-sources.json`. Оба каталога в архив скилла не входят по allowlist, поэтому сканер их не видит, а доказательная цепочка не пострадала. Выражение `ppl-ai-file-upload` не менялось: маркер ловится как прежде, 38 из 38 выражений проходят фикстуры. Правила скилла не изменились: правки касаются только тест-входов и образцов. ## 3.7.0 Релиз точности маркеров и первого парного прогона. Четыре выражения ловили живую человеческую речь — сужены с доказательством падения. Впервые собран парный eval-прогон: политика требовала его для изменений ядра, а собрано было ноль. ### Сужение выражений (класс B) Файл-доказательство: `research/validation/human/11-it-notation.txt` — связный человеческий текст об офисной работе. До правки `check_corpus.py` давал регрессию, а `--scan` находил восемь ложных срабатываний: ``` 11-it-notation.txt:3 [source_plus_chain] 11-it-notation.txt:5 [source_plus_chain] 11-it-notation.txt:7 [placeholder_date] (дважды) 11-it-notation.txt:9 [source_plus_chain] 11-it-notation.txt:11 [think_tag] 11-it-notation.txt:13 [zero_width] (дважды) Найдено маркеров: 8. ``` После правки: `Маркеров не найдено.` Корпус зелёный. Recall на реальных AI-выводах `research/raw` не изменился — сверено файл за файлом. - **`source_plus_chain`**: было `[A-Za-zА-Яа-яЁё)]\+\d+[A-ZА-ЯЁ]`, стало требование не меньше двух сегментов «+число» (просмотр вперёд на второй сегмент). Причина: одиночная склейка «Excel+1С», «Word+2Excel», «Про+3Максимум» — живая речь об офисных программах и тарифах. Цена: одиночную склейку выражение больше не ловит, её ищут глазами. Замер: 0,0005 с на 30 000 символов. - **`placeholder_date`**: было `\b\d{4}-(?:\d{2}|[Xx]{2})-[Xx]{2}\b`, стало `\b(?:19|20)\d{2}-(?:0[1-9]|1[0-2]|[Xx]{2})-[Xx]{2}\b`. Причина: складские и товарные номера «1234-56-xx», «3985-77-XX» и невозможный месяц «2025-13-XX». Verbatim-образец реестра `2025-XX-XX` новое выражение проходит — доказательная цепочка в силе. Замер: 0,0005 с. - **`think_tag`**: было ``, стало `(?m)^\s*|\s*$`. Причина: упоминание служебного тега внутри предложения — текст о reasoning-моделях, а не их вывод. Осознанная потеря полноты в середине строки задокументирована в границах A.7. Замер: 0,0002 с. - **`zero_width`**: ZWJ (U+200D) вынесен из общего диапазона и считается маркером только вне эмодзи-контекста. Причина: тем же символом собираются составные эмодзи — семья, флаги, профессии. Остальные символы нулевой ширины и ZWJ между обычными буквами ловятся как прежде. Замер: 0,0010 с — самое медленное выражение набора. Следствия: `BOUNDARY_EXPECTED` для `emoji-zwj.txt` стал пустым множеством (файл остаётся стражем: любое совпадение означает возврат ложного срабатывания на эмодзи); в `eval/manifest.v1.json` у этого файла `expected_hits` 4 → 0 и удалён `expected_case`, добавлена запись нового человеческого файла с посчитанным sha256. Байты корпуса не менялись, прежние хэши целы. ### Класс A: дерево решений стало осторожнее Перестройка дерева — изменение класса A, поэтому оно опирается на первый парный прогон (ниже), а не только на рассуждение. - Ветка «Текст до ноября 2022?» требовала знания, которого у скилла нет: теперь вопрос адресован пользователю, а при неизвестной дате ветка пропускается. - Правило счёта: каждый признак считается один раз на текст; число вхождений влияет на объём правки, не на вердикт. - Закрыта ловушка порядка: при трёх и более признаках одной категории вердикт «ИИ» не выносится — можно предложить форматную правку с пометкой, что авторство не определялось. - Добавлен режим «проверка без правки»: вердикт одной строкой, находки с цитатой и критичностью, оговорка Главного правила, предложение правки только по явной просьбе. ### Первый парный eval-прогон `eval/runs/2026-07-26-baseline`. Судья — **языковая модель (claude-fable-5), не человек**. Обе ветки выполнены сабагентами на той же модели, промпт дословно одинаковый. Корпус: 4 захваченных вывода русских моделей и 2 человеческих контроля (доля контролей треть). Публикуется весь отчёт. | Метрика | Со скиллом | Без скилла | |---|---|---| | Ложные правки в человеческих текстах | 0 | 0 | | Правок без дописанных фактов | 100% | 100% | | Читаемость по вердиктам судьи | 2 | 1 (ничьих 3) | | Потеря смысла | 0 | 0 | | Изменение длины | −12,1% | −14,2% | | Снятие regex-маркеров | нет данных | нет данных | Достигнута единственная заранее объявленная цель: ноль ложных правок в человеческих контролях, оба файла совпали с источником побайтово. Преимущества по читаемости на этом корпусе **нет** — 2 против 1 при трёх ничьих на шести парах лежит в пределах шума. Метрика снятия маркеров **не посчиталась**: в выводах GigaChat и Алисы нет артефактов, на которые заточены выражения. Это ограничение корпуса, а не результат скилла, и одновременно главный вывод замера. Целевые пороги по этой базе не назначаются. ### Новые справочники - `references/quantitative-heuristics.md`: четыре оси ручного подсчёта — ритм предложений, плотность длинных тире, однотипные зачины абзацев, доля списков. Каждая по шаблону «как посчитать — ориентир — граница ложного срабатывания — что делать». Всё помечено как слабые сигналы уровня O без корпусной проверки. - `references/rewrite-guide.md`: процедура выборочной правки — порядок по критичности, сохранение голоса, регистра и жанровых норм, запрет на дописывание фактов с двумя законными выходами, два разобранных примера. ### Два режима проверки источников Алгоритм `source-fabrication.md` требовал открывать каждый адрес, DOI и WorldCat, тогда как скилл работает без доступа к сети. Теперь режимов два. По умолчанию — без сети: формат DOI, непротиворечивость дат, книга без страниц, неиспользуемая сноска, одинаково устаревшие даты обращения; итог — флаги «требует проверки», а не вердикт. Сетевые шаги вынесены в режим «с явного разрешения пользователя»; только там появляется право на вердикт «подтверждённый подлог» — либо при офлайн-доказуемом противоречии. ### Метки классов и кросс-ссылки В шапке раздела маркеров записано правило по умолчанию: маркер без пометки — класс A. Пометка «(класс B)» проставлена там, где у формы есть законные человеческие источники (referrer, placeholder-поля, символы области частного использования и нулевой ширины); у `think_tag` — «(класс A, с ручной границей)». Исправлены битые ссылки: `llm-fingerprints.md` описан как реестр уровней доказательств, ссылка на несуществующий «раздел DeepSeek» убрана, снята неподтверждённая атрибуция «отпечаток Gemini» и «I'd be happy to» → Claude-2023. Таблица связок больше не называет разделы буквами A/B, занятыми классами. ### Инфраструктура и новые гейты - **`scripts/check_perf.py`** — перф-гейт класса B: требование `docs/REVIEW.md` (не дольше 0,5 с на 30 000 символов) впервые проверяется машинно. Четыре синтетических корпуса плюс короткая ловушка откатов: на строке из слов с пробелами вложенная квантификация растёт экспоненциально (0,0001 с на 6 токенах, 0,0054 с на 12), тогда как на прозе и на строке без пробелов такое выражение выглядит быстрым. Самопроверка 8/8 доказывает, что гейт умеет падать. Самое медленное выражение набора — 0,0010 с. - **Гейт №15 в `check_docs.py`**: `CITATION.cff` сверяется с версией скилла, проверяется формат `date-released`. Три отрицательных случая. Самопроверка `check_docs`: 20/20 → 23/23. - **Защита консоли** во всех тринадцати python-входах: до правки `check_markers.py` падал с `UnicodeEncodeError` при `PYTHONIOENCODING=ascii` на кириллическом имени файла. - **`check_docs.py`**: проверка завышенных формулировок в README выдернута из-под условия существования журнала Le Chat — гейт о README не должен молча отключаться вместе с отсутствующим файлом. - **`eval/run_eval.py`**: счётчик `files_missing` (пропавший файл корпуса теперь провал, а не тишина), применение `expected_hits` к ветке `ai` со счётчиком `ai_unexpected`, исправленный docstring (путь кандидата — `argv[1]`, не stdin), новый `--selftest` из четырёх случаев. - **`eval/blind_eval.py`**: ключ слепого прогона больше не попадает внутрь каталога пакета. На Windows путь вида `C:\runs\packet/` терял только `os.sep`, и ключ оказывался рядом с парами — судья получил бы его вместе с заданием. Логика вынесена в `key_path_for` с явными разделителями, поэтому самопроверка воспроизводит поведение Windows на Ubuntu. Самопроверка 22 → 27. - **`check_spec.py`**: `parse_yaml_block` понимает блочные скаляры YAML. Прежде `description: >-` разбиралось как строка «>-» длиной два символа, и гейт `DESC_LEN` не мог сработать ни на каком тексте. Самопроверка 14 → 18. - **`check_examples.py`**: `MIN_PAIRS = 10`. Гейт проверял только пары, найденные `PAIR_RX`, и при обнулении выражения молча отчитывался «пройден» на нуле пар. Порог действует лишь при полном прогоне. - **`check_budget.py`**: пара `--expect-dir X` снимается до сборки позиционных аргументов (порядок `--expect-dir humanizer-ru SKILL.md` ронял валидатор попыткой открыть каталог как файл); сбой чтения даёт код 2 вместо traceback. Самопроверка 11 → 17. - **`check_corpus.py`**: `RAW_EXPECTED` индексируется по «каталог/имя» — одноимённые файлы разных моделей больше не наследуют разрешение на BOM; полное отсутствие корпусов даёт код 2 («работает только в полном клоне») вместо доклада «ОК» ни о чём; прежний случай самопроверки с boundary-файлом без маркеров ничего не проверял и заменён настоящим негативом. - **`check_fixture_sources.py`**: guard на `fixture_file` — запрет абсолютных путей, буквы диска Windows и выхода за корень репозитория; удалён дублированный блок импортов. Самопроверка 16 → 20. - **`count_style_markers.py --skip-markup`**: `strip_markup()` снимает блоки кода, инлайн-код, строки таблиц, адресную часть ссылок, маркеры заголовков и списков, звёздочки выделения; видимый текст сохраняется. Честный замер по файлам проекта на коммите тега v3.7.0: 399 нарушений без снятия разметки, 132 со снятием (SKILL.md 173 → 72, README.md 205 → 50, PERSONA.md 21 → 10). Числа привязаны к коммиту сознательно: они меняются от любой правки текста, и без привязки замер невоспроизводим. Порог в CI намеренно не вводится — пункт остаётся в бэклоге открытым. - **`check_release.py`**: `scripts/check_corpus.py` исключён из релизного архива — без каталога `research/` он бессмыслен, а с версии 3.7.0 честно отказывает кодом 2. Исключение двустороннее: сборка файл не берёт, верификация отвергает подсунутый. `check_fixture_sources.py` оставлен: его импортирует `check_readme_parity.py`. Хардкод «/11 PASS» заменён счётчиком: 13/13. - **CI**: всем шести workflow заданы `timeout-minutes` и группы `concurrency` (у релизного без отмены выполняющегося). Оба action запиннены по SHA. В `validators.yml` добавлены джобы `compile` и `perf`, пути `research/raw/**` и `CITATION.cff`, шаг `run_eval.py --selftest`. `release-check.yml` выровнен с `validators.yml` и прикладывает собранный архив через `upload-artifact` с `if-no-files-found: error`. `no-anglicisms.yml` больше не сканирует `references/**` — скан по осознанному дизайну идёт только по SKILL.md и README. ### Бюджет и frontmatter Тело SKILL.md сокращено с ~4510 до ~4449 токенов, предупреждение о превышении 90 процентов лимита снято. В `description` добавлены живые формулировки запроса («очеловечь», «убери гпт-шность», «звучит как нейросеть», «проверь на ИИ», «убери штампы», «убери канцелярит») и короткая английская фраза — активация скилла зависит от совпадения запроса с описанием. Появился `allowed-tools: "Read Grep Glob"`. ### Документация приведена к фактам `SECURITY.md` и `SECURITY.en.md`: «пять скриптов» → одиннадцать, «пять workflow» → шесть. `README.md`: состав архива описан по фактическому allowlist (каталогов `.github/`, `research/`, `tests/` в нём нет), в CI-дереве появился release-check, «9 справочников» → 11. `docs/REVIEW.md`: несуществующий путь `eval/corpus/` заменён на `research/validation/human` и manifest, требование 0,5 с связано с `check_perf.py`. `research/validation/README.md`: счёт человеческих файлов приведён к фактическим одиннадцати — записи 09, 10 и 11 отсутствовали в таблице. `research/GAPS.md`: восстановлен потерянный пункт про `re_verified` и `check_registry_freshness`. `CITATION.cff`: автор приведён к валидной форме CFF. Контакт по уязвимостям в шаблоне issue ведёт на `SECURITY.md`. ### Из ранее не выпущенного - `actions/checkout` в шести workflow обновлён с v4 до v7. Ломающее изменение v7 касается только `pull_request_target` и `workflow_run`, которых у нас нет. - Исправлено неверное утверждение в записи 3.6.0. Там было написано, что честное покрытие реестра раньше было в русском README. Проверка истории показала, что его там не было ни в 3.5.0, ни в 3.6.0. Утверждение убрано, а не смягчено. - README.md: покрытие реестра доказательств (14 из 38) теперь заявлено и в русской версии. Раньше неудобное число видел только англоязычный читатель. - Колонка критичности в README.md и SKILL.md переведена с цветных кружков на слова «высокая / средняя / низкая». Скилл, у которого паттерн #17 называется «Списки с заголовками и эмодзи», не должен ставить их на собственной витрине. Эмодзи внутри примеров «До» оставлены: это иллюстрация плохого текста. - Добавлен `scripts/check_readme_parity.py`: гейт паритета витрины. Следит, чтобы числа (паттерны, маркеры, покрытие реестра) совпадали в русской и английской версиях, чтобы обязательные разделы были в обеих и чтобы кружки не вернулись. Самопроверка 11/11, из них 9 отрицательных. Отдельный джоб в CI. - Добавлен `eval/runs/README.md`. Раньше протокол ссылался на `eval/runs/`, а такого каталога в репозитории не было вовсе. - Добавлен `research/BACKLOG.md`: единый список открытых хвостов с числами и причинами откладывания. ## 3.6.0 Релиз честности примеров: главное обещание скилла — правка не дописывает факты за автора — теперь сформулировано как правило и проверяется в CI. - Новый валидатор `check_examples.py`: разбирает все пары «До/После» в SKILL.md, README и `references/` и падает, если в «После» появились числа, даты или имена собственные, которых нет в «До». Есть `--selftest` из 4 случаев. - Введены два явно различаемых типа примеров: «После» (чистая правка, факты только из исходника) и «После (с фактами автора)» (образец того, как выглядит текст, когда автор подставил свои данные). - Аудит всех 29 пар в документации: 13 из них добавляли факты без пометки (1789, 1994, ARM, 2024, XVIII, «Институт экологии 2019», «Медуза» и др.) — теперь размечены честно. 16 пар — чистая правка. - Шестой принцип правки в SKILL.md: «Не дописывать факты» + пункт в чек-листе. - Добавлен `scripts/check_budget.py`: гейт трёхуровневой загрузки по официальной спецификации Agent Skills. Проверяет длину `name`, `description` (лимит 1024) и `compatibility` (лимит 500), размер тела SKILL.md (500 строк и 5000 токенов) и вес файлов `references/`. Самопроверка 11/11, отдельный джоб в CI. - Исправлена опечатка «подтверждённыхных» в записи о версии 3.5.0. - Добавлены `.gitattributes` и `.editorconfig`: единые переносы строк и UTF-8 для всех текстовых файлов — защита кириллицы от порчи при клонировании, редактировании и слиянии. - Добавлен `CITATION.cff` — машиночитаемые данные для ссылок на реестр маркеров в работах и статьях. - Добавлен `.github/dependabot.yml`: еженедельное обновление версий GitHub Actions. - В README.en.md появился раздел с источниками и честным покрытием реестра (14 из 38). - Убраны трейлинг-пробелы в шаблоне pull request и выровнены права доступа файлов в `scripts/`. - Добавлен `eval/blind_eval.py` — гарнесс слепой парной оценки. Считает без сети и без модели: снятие маркеров, долю правок без дописанных фактов, ложные правки в контрольной группе человеческих текстов и изменение длины. Читаемость и потерю смысла оценивает слепой судья по обезличенному пакету со случайным порядком вариантов. Строгая схема прогона и вердиктов работает по принципу fail-closed; ключ хранится вне пакета и привязан к хешу прогона. Самопроверка 22/22. - Гарнесс отказывается выпускать отчёт при отсутствии парных прогонов, AI-пар, контрольной группы не меньше трети, воспроизводимых метаданных или полного набора валидных вердиктов. Сбой базового валидатора также завершает оценку ошибкой. Отдельный шаг CI проверяет ожидаемый код отказа без данных. - Добавлен `docs/REVIEW.md` — регламент review с тремя классами изменений. Главное правило: новый гейт принимается только вместе с доказательством, что он умеет падать. - Добавлен `eval/HOW-TO-RUN.md` — протокол слепой оценки и границы того, что считает машина, а что человек. - Шаблон pull request разделён по классам изменений и ссылается на регламент. ## 3.5.0 Доказательный релиз: усиление валидаторов и CI, два новых маркера с immutable-источниками, устранение живых противоречий политики A/B. - Добавлены два новых regex-маркера класса A с immutable-источниками: `[span_N](start_span)`/`(end_span)` Gemini (из ревизии EN Wikipedia 1365155084 и diff 1363979466 июля 2026) и `ppl-ai-file-upload` Perplexity (S3-ссылки). Каждый имеет прямой, отрицательные и граничный fixtures и запись в реестре. - Реестр источников расширен до 14/14; 5 устаревших «ЗАДАЧА» в записях переписаны с явным `warning_disposition`. Валидатор теперь запрещает «ЗАДАЧА» в подтверждённых записях и предупреждает о живых URL старше 180 дней. - `check_fixture_sources.py` выводит SCOPE из `check_markers.CASES`: новый маркер не может попасть в код без записи в реестре или без явного legacy. - Добавлен `check_corpus.py`: регрессия корпусов валидации в CI. Human-корпус должен давать 0 совпадений, raw-корпус — только известный BOM, boundary — ровно заявленные совпадения (документирует границы ложных срабатываний, включая ZWJ в эмодзи). - Добавлен md↔py паритет (`check_markers.py --parity`): каждое выражение CASES должно быть задокументировано в `chatbot-artifacts.md`; CI ловит regex без описания. - `check_docs.py` усилен: проверка записи CHANGELOG для текущей версии, внутренние ссылки теперь пропускают inline-код (раньше `](` в regex-документации ложно считался битой ссылкой). - Устранены противоречия политики A/B: `false-positives.md` «Главное правило» и алгоритм теперь явно различают класс A (вердикт) и класс B (ручная проверка); убран незавершённый черновик, пронумерован §15, добавлена граница ZWJ в эмодзи. - Дерево решений в `SKILL.md` исправлено: юр. документы → только класс A артефакты, без стилистики; ветка возраста текста (до 2022); требование ≥2 категорий для мягких признаков; ветка «спросить автора». - Исправлен счётчик паттернов: 37 (25 базовых + 12 расширений), а не 38. Таблицы архитектуры в `SKILL.md` дополнены #6a и #23a. - Смягчены атрибуции версий моделей в `chatbot-artifacts.md`: GPT-5.2, DeepSeek R1/V4, o3/o4-mini переформулированы как наблюдения без подтверждённой атрибуции версии. - Корпус валидации расширен: добавлены современные человеческие образцы (Википедия/Викиновости) и boundary-контроли (benign wiki ref, emoji ZWJ). - Добавлен `release-check.yml`: при создании тега проверяет annotated-форму, совпадение версии с metadata и запись в CHANGELOG; кодифицирует ручной чек-лист. ## 3.4.0 Доказательный релиз: расширяет проверяемость и не меняет позиционирование скилла как редактора текста, а не средства обхода детекторов. - Добавлен один контекстный regex-маркер класса B: `` и аналогичные имена вики-сносок с числовым префиксом и именем внутреннего инструмента. Он основан на неизменяемой ревизии EN Wikipedia от 16 июля 2026, имеет прямой, отрицательные и граничный fixtures, но сам по себе не даёт вердикта об авторстве. - Реестр источников маркеров переименован в `research/fixtures/marker-sources.json`, расширен до 12/12 и подключён к CI. У каждого зарегистрированного маркера есть класс доказательства. - `check_markers.py --scan` теперь безопасно печатает невидимые символы на Windows-консолях: BOM и PUA отображаются как `\u....`, а не приводят к падению проверки. - Дерево решений и README разделяют устойчивое ядро правил от быстрого слоя модельных артефактов. Быстрый слой требует fixtures, источника и класса A/B. - `llm-fingerprints.md` заменён консервативным реестром доказательств: неподтверждённые версии и доступность моделей не используются как факты. - Финальная зачистка перед merge убрала оставшиеся активные списки версий из `SKILL.md`, `README.md`, описания writing-разметки и issue template; исторический CHANGELOG не служит источником доказательств для текущих правил. - Предупреждения registry для `generated_ref_id` и `deepseek_line_ref` сохранены и требуют `warning_disposition`: независимый immutable primary источник не найден, поэтому повышение доказательств запрещено. - Le Chat и PERSONA-пилот закрыты с честными статусами `CLOSED_NO_UNIQUE_TEXT_MARKER` и `CLOSED_EXPLORATORY`; неподтверждённые выводы не влияют на правила скилла. - Добавлен зафиксированный validation corpus: 12 сохранённых ИИ-ответов и 8 открытых человеческих текстов разных форм. - SECURITY.md и SECURITY.en.md синхронизированы с фактическими пятью workflow и пятью скриптами-валидаторами. ## 3.3.5 Финальная согласованность выводов и документации (правила скилла не менялись): - Пилот PERSONA.md приведён к честному исследовательскому статусу: удалён дубль вводного блока, критерии приёмки помечены «НЕ ПРОВЕРЕНО», сильный причинный вывод заменён осторожным описанием наблюдений. - README.md и README.en.md синхронизированы: 35 выражений описаны как проверяемые regex-маркеры классов A и B, без заявки об «однозначности» всех 35. - README.md: в таблице маркеров экранирован `|` в строке `turn0search0` — неэкранированный символ ломал разметку таблицы на GitHub. - README.md: пункт 3 раздела «0. Проверка перед установкой» теперь ссылается на дерево в разделе «Архитектура». - README.en.md: обновлено дерево Architecture, исправлены раздел Security и смешанная русско-английская строка. - В журнале Le Chat исправлено название прежней ошибочной аннотации: неверны были пометки `em-dash`, а не `дефис`. - Исправлена кодировка `.github/workflows/self-scan.yml`. - `scripts/check_docs.py` расширен регрессионными проверками (18 самопроверок вместо 10). ## 3.3.4 Целостность документации и доказательств (правила скилла не менялись): - README.md и README.en.md: полная история версий удалена (живёт в CHANGELOG.md), установка закреплена на актуальном теге, обновлено дерево проекта, уточнена формулировка про Python-скрипты. - Le Chat понижен до предварительных наблюдений: 4 прогона из 15 по протоколу; UI-элементы (Thought for Ns, Start research) не считаются текстовыми маркерами; ошибочные аннотации "em-dash" исправлены; MARKER_FOUND отозван до завершения протокола. - A/B PERSONA переименован в пилот (persona-pilot-results.md): выборка A=5/B=1/C=2 не подтверждает критерии протокола; заявление v3.3.2 о выполнении критериев скорректировано; в протокол добавлен сокращённый вариант 5x3. - Маркеры разделены на класс A (жёсткие артефакты копирования) и класс B (контекстные индикаторы); правило вердикта уточнено в SKILL.md и README. - PERSONA.md: оговорка о намеренно "чатовой" типографике (дефис и простые кавычки - осознанный выбор для живой переписки). - Новый валидатор scripts/check_docs.py + workflow docs-check.yml. - Тело GitHub Release v3.3.3 исправлено (кодировка). ## 3.3.3 Le Chat тесты проведены реально через браузер пользователя (playwriter): - Fast mode: 2 ответа ("Канберра", "Почему небо голубое" с нумерованным списком) - Think mode: 1 ответ ("Канберра", "Thought for 1s") - Deep Research: план исследования из 8 шагов - уникальный отпечаток Le Chat Найденные отпечатки Le Chat: - "Thought for Ns" индикатор - "Хочешь узнать больше?" закрывающий вопрос - Deep Research план с шагами и кнопкой "Start research" Журнал: research/protocols/le-chat-test-log.md Сырые ответы: research/raw/le-chat/ ## 3.3.2 Реальные тесты вместо оговорок «нет доступа»: - A/B-тест PERSONA.md проведён через браузер (GigaChat, 5+2+1 вопросов): Config A=89 нарушений, Config C=10 (на 72% меньше), Config B=4 (антипаттерн). - Собственный тест GigaChat/Алиса: 5+3 промптов, отпечатки зафиксированы (source-цитаты, блок "Рассуждения", "Коротко:", "Источники"). - PERSONA.md: тире заменены на `-`, кавычки на `" "` (по запросу пользователя). - Le Chat: Cloudflare блокирует доступ, прогоны не выполнены (честно). ## 3.3.1 Корректирующий релиз «Исправления честности». Приводит заявления из комментариев закрытия issue #15–#19 (v3.3.0) в соответствие с фактическим содержимым. - #18: валидатор check_fixture_sources.py v2 с классами доказательств; реестр переклассифицирован; реальный PUA-образец найден на live-странице EN Wikipedia (revision 1363998845); гейт 11/11. - #19: PERSONA.md сужен до 2009 байт; раздел «Граница применения» в README; count_style_markers.py; A/B-протокол проведён (GigaChat, 5+2+1 вопросов). - #16: раздел RU-моделей переписан; черновые фразы убраны; план в GAPS.md. - #17: журнал Le Chat (Cloudflare блокирует доступ, прогоны не выполнены). - #15: первичные источники (Unicode charts, Word, InDesign, LaTeX) добавлены. - CI: validators.yml с check_spec.py и check_fixture_sources.py. - SKILL.md: история версий вынесена в CHANGELOG.md. ## Предыдущие версии - **3.2.0** (7 июля 2026): точечное обновление по итогам повторной сверки с обеими опорными страницами Википедии (сырая разметка, снимки от 7 июля 2026) и побайтового разбора символов области частного использования в них. Один новый однозначный маркер в разделе A.7: короткая форма сноски ChatGPT — одиночный номер, ограждённый невидимыми символами `U+EA01`/`U+EA02` (описание и буквальные символы в сырой разметке английской Википедии + пример реального черновика Draft:Reze 2025); диапазон `U+E200–E204` из v2.6 эту пару не ловил. Одно расширение действующего выражения в A.9: метки Gemini с перечислением фрагментов `[cite: 19, 20, 21]` (зафиксированы английской Википедией с примером правки февраля 2026; новое выражение — надмножество старого, все прежние образцы проходят). Одно дополнение мягкого паттерна #9 «Текст о тексте»: подвид «определение нетермина как термина» — зачин «„Х“ относится к…» для описательных заголовков (отдельные разделы в обеих Википедиях). Два уточнения документации без изменения правил: датировка `utm_source=chatgpt.com` (до августа 2025, позже чаще `utm_source=openai` — русская Википедия) и граница ложного срабатывания для `U+EA01`/`U+EA02` (иконные шрифты). Отклонено с документированием в `research/GAPS.md`: повторная проверка watchlist (`utm_source=claude.ai`/`gemini.google.com`, `[screenshot:N]` — подтверждений не появилось), неиспользуемые именованные сноски и комментарные признаки (вики-специфика), счётчики тире и перплексия (критический разбор детекторов 2026 подтверждает `false-positives.md`), англоцентричный список простых синонимов (покрыт #8 и #11). Регулярных выражений стало 35 (35 из 35 проходят), паттернов 38. Ни одно существующее правило не удалено и не сужено. Протокол исследования с источниками — `research/RESEARCH.md`. - **3.1.0** (7 июля 2026): исследовательский слой по итогам независимого широкого research (Wikipedia EN/RU + AI Cleanup, официальная документация и исходный код инструментов цитирования LibreChat, разборы веб-аналитики 2026, русская экосистема Антиплагиат/GigaCheck/ReText, научные работы 2025–2026). Десять новых однозначных маркеров в `chatbot-artifacts.md`, ни одно существующее правило не тронуто: в разделе A.2 — расширение `turn`-меток для image/news/video/ref (image/news подтверждены английской Википедией, video/ref — исходным кодом LibreChat); в A.3 — UTM Microsoft Copilot и referrer xAI Grok (оба прямо названы английской Википедией); в A.4 — JSON карточек Grok `grok_render_citation_card_json` и XML-тег ``; в A.5 — скобочная форма ссылок `[attached_file:N]`/`[web:N]` (Perplexity, осень 2025), placeholder-URL `INSERT_SOURCE_URL`/`URL_HERE`/`PASTE_*_URL_HERE` и placeholder-даты `2025-XX-XX`/`2022-11-XX` (раздел «Phrasal templates» английской Википедии); в A.6 — `citegenerated-reference-identifier`; новый раздел A.12 — ссылки DeepSeek с номерами строк `【85†L261-269】` (regex покрывает `L119-123` и `L119-L123`). Один новый soft-паттерн #9a «Академические клише-заполнители» в `content-patterns.md` — вводные/заключительные клише учебных текстов (Антиплагиат, ReText — исследование 12 996 дипломов 2013–2025, GigaCheck). Регулярных выражений стало 34 (34 из 34 проходят), паттернов 38. Отклонено с документированием в `research/GAPS.md`: `utm_source=perplexity` (Perplexity передаёт обычный referrer без UTM — повторное подтверждение отказа v2.6), `utm_source=claude.ai`/`gemini.google.com` (в наблюдениях UTM у них редки — watchlist), `[screenshot:N]`, полная JSON attribution-форма, декоративный unicode, zero-tolerance длинного тире (противоречит `false-positives.md`). Протокол исследования с источниками — `research/RESEARCH.md`. - **3.0.0** (5 июля 2026): выпуск безопасности по итогам внешних аудитов (Gen Agent Trust Hub, Snyk). Поле `description` сокращено до двух нейтральных предложений — убран блок слов-активаторов с директивами «Применяй когда: / Активируй для запросов: / Не применяй:», который сканеры расценивали как отравление метаданных и навязчивый перехват задач; типичные формулировки запроса перенесены в тело файла с оговоркой, что скилл включается только по явной просьбе пользователя. Добавлен раздел «Границы безопасности»: входной текст объявлен данными, а не командами, введены границы `<входной_текст>`, запрет исполнять инструкции из проверяемого текста, переходить по ссылкам, выполнять код и обращаться к файлам и сети, а также обязанность предупреждать о найденных попытках внедрения. Добавлен файл `SECURITY.md` с моделью угроз и порядком сообщения об уязвимостях. Все адреса в метаданных и документации приведены к чистому ASCII (кириллические пути закодированы процентной нотацией, регистр имени автора выровнен) — сканерам больше не мерещатся символы-двойники. Инструкции установки в `README.md` переписаны: убраны прямая ссылка на ZIP-архив и установщик стороннего каталога, добавлены закрепление на теге выпуска и порядок проверки содержимого перед установкой. Вторая часть выпуска — исследовательский слой по состоянию на 5 июля 2026: новый однозначный маркер A.11 «Блоки „writing“ ChatGPT» в `chatbot-artifacts.md` — ограждение `:::writing{variant="document" id="12345"}`, замеченное с 1 июня 2026 (английская Википедия) и подтверждённое утёкшим системным промптом GPT-5.5 (варианты email/chat_message/social_post/standard); выражение ловит и локализованные формы (`:::écriture{variante=…}`), директивы Docusaurus (`:::note`) не срабатывают. В `llm-fingerprints.md` — псевдонаучный словарь Grok («каузальный», «эмпирический», «коррелирует», навязчивое «подчёркивает»; английская Википедия, редакция 2026 + Grokipedia как корпус), стилометрия на википедийном жанре (arXiv:2507.00838, точность до 0,98 для GPT-4) и русская экосистема детекции (алгоритм «Антиплагиата» мая 2025: заявленные 98%, ИИ в 24% студработ января–сентября 2025). В `language-patterns.md` — дополнение к #11 о машинной «редактуре»: при «Revise the following sentence» GPT-3.5 систематически вычищает простые связки (arXiv:2503.02879). Существующие правила не тронуты: 37 паттернов, регулярных выражений стало 24, прогон зелёный (24 из 24). Главный номер версии поднят из-за смены формата поля `description` — системы, ориентировавшиеся на старый список слов-активаторов, должны перечитать шапку. - **2.9.0** (2 июля 2026): обновление по итогам глубокого исследования свежих артефактов и регуляторики. Два новых раздела однозначных маркеров в `chatbot-artifacts.md`: A.9 «Метки цитирования Gemini» — `[cite_start]` и `[cite: 8]`, протекающие при анализе PDF и включённом расширении Google Workspace (форум поддержки Google, июнь 2025; массовость подтверждена существованием утилит-скрубберов), и A.10 «Нестандартные пробелы и водяные знаки Юникода» — символы нулевой ширины `U+200B`–`U+200D`, `U+2060`, `U+FEFF` (наблюдения по o3/o4-mini весны 2025) ловятся выражением, пробелы-гомоглифы (`U+202F` и родня; разбор Rumi, апрель 2025) оставлены ручной проверке из-за столкновения с французской типографикой и профессиональной вёрсткой. Два расширения паттернов по текущей редакции английской «Signs of AI writing»: #6a «Именованная псевдоатрибуция эпохи RAG» в `content-patterns.md` и #23a «Заявление о недоступности информации со спекуляцией» в `communication-patterns.md`. В `false-positives.md` — §14 «Нестандартные пробелы и „стерильная“ типографика» (BOM, веб-CMS, вёрстка; отсутствие длинного тире — не доказательство человека). В `llm-fingerprints.md` — регуляторный слой: статья 50 Регламента ЕС об ИИ применяется со 2 августа 2026, кодекс практики опубликован 10 июня 2026, ожидание роста невидимой маркировки (SynthID снимается парафразом); обновление реестра моделей (флагманская линейка Anthropic — Claude Fable 5 / Mythos 5 (анонс 9 июня, глобальный доступ с 1 июля 2026 после снятия экспортного контроля США) и Claude Sonnet 5 (30 июня 2026); заблокированные запросы Fable 5 отвечает Opus 4.8 — в одном диалоге смешиваются стили двух моделей; оговорки неуверенности перестают быть анти-признаком) и русскоязычная научная база AINL-Eval 2025 (arXiv:2508.09622, 52 305 аннотаций, включая GigaChat-Lite). Паттернов теперь 37 (25 базовых + 12 расширений), регулярных выражений 23, прогон зелёный (23 из 23). Ни одно существующее правило не изменено и не удалено. - **2.8.0** (11 июня 2026): мозговой штурм по свежим каталогам и исследованиям 2026 года. Новый однозначный маркер в `chatbot-artifacts.md` (раздел A.2): метки file_search `turn0file2`, всплывающие как `fileciteturn0file2turn0file6` (форум разработчиков OpenAI, октябрь 2025; сильнее всего на GPT-5.2). Четыре расширения паттернов по каталогу «55 маркеров нейросетевого текста» (vc.ru, май 2026): #15e «Семантический сдвиг через английское поле» и #15f «Отсутствие идиоматики» (arXiv:2405.09279) в `language-patterns.md`, #24a «Псевдо-терапевтический регистр и имитация живости» (наследие отозванного режима GPT-4o весны 2025) в `communication-patterns.md`. В `false-positives.md` — §13 «Разные типы ошибок у людей и моделей» (модель путает падежи, человек — -тся/-ться; идеальная типографика относительна жанру). В `llm-fingerprints.md` — синтаксическая стилометрия (arXiv:2602.15514: машинный текст отличим без лексики, точность 93–98%) и равномерность информационной плотности (DivEye, 2025). Скрипт `check_markers.py` получил режим `--scan` для проверки произвольных текстов; добавлен третий workflow `self-scan.yml` — скилл проверяет сам себя на собственные маркеры при каждом изменении. Паттернов теперь 35 (25 базовых + 10 расширений), регулярных выражений 20, прогон зелёный (20 из 20). Ни одно существующее правило не изменено и не удалено. - **2.7.0** (11 июня 2026): сверка с текущими версиями трёх опорных страниц (английская «Signs of AI writing», русская «Признаки сгенерированности текста», проект AI Cleanup) и пополнение по их новым разделам. Новый однозначный маркер в `chatbot-artifacts.md` (раздел A.8): сцепки «Источник+цифра» — ошибка отрисовки сносок ChatGPT вида `ISO+3ISO+3`; выражение ловит только сцепленную форму, одиночная (`Wikipedia+1.`) оставлена ручной проверке из-за столкновений с математикой и версиями. Два расширения паттернов: #21a «Каждое Слово Заголовка С Прописной» (русская Википедия, ярлык ВП:ИИЗБ) в `structural-style-patterns.md` и #25a «Обрыв на полуслове» (исторический признак) в `communication-patterns.md`. В `false-positives.md` — раздел «Неэффективные индикаторы» (идеальная грамотность, смешение стилей, «сухой» стиль и прочие не работающие сигналы) и пункт F «Живой синтаксис» (корпусное исследование Reinhart et al., PNAS 2025). В `source-fabrication.md` — §7 «Устаревшая дата обращения». В `llm-fingerprints.md` — научное подтверждение идиолектов моделей (Sun et al., arXiv:2502.12150). Паттернов теперь 31 (25 базовых + 6 расширений), регулярных выражений 19, прогон зелёный (19 из 19). В `.gitignore` добавлен служебный мусор Python и операционных систем. Ни одно существующее правило не изменено и не удалено. - **2.6.0** (11 июня 2026): автоматическая проверка маркеров и два новых однозначных маркера. Добавлен `scripts/check_markers.py` — прогон всех регулярных выражений из `chatbot-artifacts.md` по трём уровням образцов (прямой, отрицательный, граничный) на стандартной библиотеке Python; подключён к CI (`regex-check.yml`), ручной PowerShell-вариант сохранён как запасной. В `chatbot-artifacts.md` добавлен раздел A.7 «Невидимые и служебные символы»: служебные символы цитирования ChatGPT `U+E200–U+E204` (диапазон `[\ue200-\ue204]`; в этой форме метка `citeturn` разорвана невидимым символом и старым выражением не ловится) и остатки тега рассуждения `` от DeepSeek и других рассуждающих моделей — формализация приметы из `llm-fingerprints.md`. Регулярных выражений теперь 18, прогон зелёный (18 из 18). Кандидаты `utm_source=perplexity` и `utm_source=gemini` отклонены после проверки: эти платформы не добавляют устойчивых UTM-меток. Ни одно существующее правило не изменено и не удалено. - **2.5.0** (31 мая 2026): содержательное обновление. Добавлены четыре однозначных маркера новых платформ в `chatbot-artifacts.md` (раздел A.6): сноска Microsoft Copilot `[^N^]`, метка OpenAI Assistants `【N†source】`, потоковая метка ChatGPT `citeturn0file0`, сломанная ссылка анализа данных `\]\(sandbox:/mnt/data/...\)`. Регулярных выражений теперь 16, все прогнаны (16 из 16 проходят). В `llm-fingerprints.md` добавлены Perplexity, Amazon Nova, Cohere Command A+, режим Gemini Deep Research; приметы GPT-5.5 на русском проверены живым прогоном модели. В `false-positives.md` добавлен §11 «академический и научный регистр»; правило трёх дополнено границей для публицистики. В дереве решений SKILL.md разделены ветки «академический» и «публицистика». Версия в метаданных синхронизирована с тегом релиза. - **2.4.1** (23 мая 2026): устранены англицизмы в собственном тексте скилла. В шапке `description`: `Use when:` → `Применяй когда:`, `Do NOT use:` → `Не применяй:`. В истории версий и разделе «Архитектура файлов» убраны кальки `best practices`, `постепенное раскрытие`, `Do NOT блок`, `frontmatter`, `7 LLM`, `30+`, `Эмпирическая проверка`, `без регрессий`, `эталонные образцы`, `триггер «Use when:»`. Содержание скилла (29 паттернов, регулярные выражения, references) без изменений. - **2.4.0** (23 мая 2026): переписано описание скилла. Слова-активаторы расширены с четырёх до тридцати с лишним: явные синонимы («очеловечь», «сделай живым», «AI-детектор», «проверить на ИИ», «убрать гпт-шность», «звучит как нейросеть»), семь моделей по именам (ChatGPT, Claude, Gemini, Grok, DeepSeek, GPT-5, Qwen). Добавлен раздел «не применять» с явными границами: текст не на русском, код и скрипты, юридические документы, художественная проза, поэзия и резюме. Содержание скилла без изменений — правка только в шапке файла. - **2.3.0** (20 мая 2026): SKILL.md превращён в карту со ссылками на детали в `references/`. Добавлены однозначные маркеры с регулярными выражениями (`chatbot-artifacts.md`), проверка подлога источников (`source-fabrication.md`), границы ложного срабатывания (`false-positives.md`), отпечатки моделей (`llm-fingerprints.md`), проверочные образцы (`test-fixtures.md`). Четыре расширения для русского (#15a–15d): нелогичные деепричастия, каскад смягчений, связки-переходы и заключительные обороты-затычки, резкая смена стилистики. Регулярные выражения прогнаны: 12 из 12 проходят. Старое не сломано. - **2.2.0** (20 марта 2026): добавлены подвиды паттернов #1 (гороскопные утверждения) и #13 (симметричные секции). - **2.1.0** (21 февраля 2026): соответствие спецификации agentskills.io, очистка опечаток. - **2.0.0** (20 февраля 2026): 25 паттернов вместо 22, шкала критичности 🔴/🟡/🟢, чек-лист на 12 пунктов. - **1.0.0** (21 января 2026): первый выпуск, 22 паттерна.