Гейт цитирования: каждое число в опубликованном тексте должно найтись в доказательствах
Число в статье — это обещание, что оно откуда-то взято. Это обещание мы проверяем небольшой программой до публикации: находим каждое число в тексте и требуем, чтобы оно было в доказательствах. Первая версия выдумывала числа, которых там не было.
🎯 Для Любой, кто публикует числа, написанные людьми или ИИ
- Почему правилу поиска чисел нужна левая граница и осторожность с запятыми
- Как гейт сверяет текст с доказательствами
- Настоящий баг, при котором проверяющий выдумал цитату
🔢 Обещание
Читатели верят числу, потому что оно выглядит измеренным. Если число пришло по памяти, из догадки модели или из старого запуска, страница неверна и выглядит верной. Гейт публикации отвечает на один вопрос: для каждого числа в этом тексте можем ли мы показать место в доказательствах, где оно встречается символ в символ?
🐛 Баг
25 августа 2026 наш проверяющий признал два верных утверждения «недостаточно доказательств», хотя каждое настоящее число в них присутствовало. Причина была в шаблоне, который находит числа. У исходного шаблона было два изъяна.
- Нет левой границы. Цифры внутри идентификатора считались числами:
sha256давало256, а дата вроде2026-07-26давала-07и-26. - Жадные запятые. Запятая принималась внутри числа, даже когда стояла в конце, и фраза вроде «sha256, markers» давала токен
256,, которого нет ни в одном снимке.
Затем проверяющий искал эти выдуманные токены в доказательствах, не находил и отвергал верные утверждения.
🧪 Исправление, запущенное вживую
Мы поставляем исправленный шаблон в небольшом модуле с единственным определением того, что считается цитатой. Он не начинает число внутри слова или точечной цепочки и принимает запятую частью числа, только если за ней идут цифры. Модуль хранит и старый шаблон с одной целью: предсказывать, какие ложные цитаты старый проверяющий выдумал бы для текста.
На 3 ноября 2026, 21:53 UTC мы прогнали оба на одном предложении: «Snapshot sha256, markers 2026-07-26 and 1,234 items, 12.5% up.»
| Шаблон | Найденные числа |
|---|---|
| Старый (как было) | 256,, 2026, -07, -26, 1,234, 12.5% |
| Исправленный | 2026, 07, 26, 1,234, 12.5% |
Исправленный шаблон больше не выдумывает 256, из хэша и не даёт фрагментов даты с минусом, которых нет ни в одном файле доказательств. Дату он по-прежнему режет на 2026, 07 и 26. Это безвредно: каждая часть встречается в доказательствах, если там есть дата. Это же напоминание, что гейт проверяет наличие, а не смысл.
🧰 Как работает гейт
- Извлеките из текста числа и цитаты в кавычках. Модуль знает четыре стиля кавычек.
- Для каждого числа постройте локальные варианты, например с запятой или пробелом для тысяч.
- Найдите литерал в файлах доказательств символ в символ.
- Сообщите о ненайденных числах и ненайденных цитатах. Любой такой пункт блокирует публикацию.
- Отдельно сообщите числа, которые старый шаблон выдумал бы, чтобы рискованное предложение было видно до сбоя.
🛠️ Практика: добавьте гейт в публикацию
- Выберите, где лежат доказательства, например папка выгруженных результатов с датами.
- Напишите поиск чисел с левой границей и правилом, что запятая принадлежит числу только перед цифрами.
- Проверьте его на идентификаторах, датах, номерах версий, хэшах и процентах.
- Напишите проверку: каждое число должно буквально встречаться в файле доказательств. Падайте громко, со списком промахов.
- Заведите место для чисел-определений, а не измерений, например «десять минут» в заголовке, и держите этот список коротким и проверяемым.
- Запускайте гейт на шаге публикации. Сбой блокирует выпуск.
✅ Проверьте себя
- Положите в предложение хэш и дату. Гейт не сообщает фрагмент хэша и части даты с минусом, которых нигде нет.
- Измените одну цифру настоящего числа. Гейт падает и называет его.
- Опубликуйте текст с числом, содержащим запятую. Гейт находит доказательство, если оно записано с той же запятой или её локальным вариантом.
- Новый коллега может объяснить, чего гейт не доказывает.
🚧 Когда это не работает
- Есть — не значит верно. Число может встречаться в доказательствах и быть не тем числом для утверждения. Гейт проверяет наличие, а не смысл.
- Округлённые или производные числа. Процент, посчитанный из двух измерений, в файлах отсутствует. Храните производные числа вместе с их исходными.
- Числа словами. «Три» шаблон по цифрам не найдёт. Для измерений предпочитайте цифры.
- Неверные доказательства. Гейт доверяет своей папке.
- Слишком длинные списки исключений. Если половина чисел — исключения, гейт ничего не значит.
📊 Доказательства
| Что измерено | Вывод старого и исправленного шаблонов чисел на одном тестовом предложении и запись о дефекте от 25 августа 2026 |
| Когда | 3 ноября 2026, 21:53 UTC |
| Артефакт | Модуль цитат в нашем закрытом репозитории с описанием дефекта в заголовке и его гейт публикации |
| Ограничение | Одно предложение показывает разницу. Измеренную долю ошибок гейта мы не публиковали |
➡️ Дальше
Как мы помечаем даты и источники, читайте в Источниках и проверке, а почему заявление об успехе — не доказательство, — в AI judging.
Источники
- Источники, даты и что значит «проверено»: как мы помечаем доказательства.
- AI judging: почему «он говорит, что готово» — не приёмка: проверка утверждений.
- Почему ИИ-агенты выдумывают и как проверить ответ: проверка ответов.
- Как редактируется и публикуется эта wiki: редакционный процесс.
🔗 Связи статьи
Открыть полный граф знаний ↗Связи опубликованных статей. Выберите узел, чтобы открыть статью у заголовка.
Связи статей · клавиатура / текст
Та же тема
- Векторная база — это карта, а не источник: чему нас научил поиск
- Когда неизвестно, сколько стоил вызов модели: заморозка, затем сверка
- Как разбить большую задачу для дешёвой модели: урок 24 000 байт
- Навыки, MCP-инструменты и правила: три способа дать агенту возможности
- Восемь ошибок наших агентов в shell и git и правило на каждую
- Несколько агентов, один репозиторий: правила владения из реальных инцидентов
Следующие шаги
Связанные материалы
Векторная база — это карта, а не источник: чему нас научил поиск
Векторная база находит фрагменты, близкие по смыслу к вашему вопросу. Она не знает, какие из них верны или актуальны. Считайте каждое попадание указателем: откройте названный файл, сверьте хэш, а числа берите из артефакта, а не из найденного абзаца.
ИИ-агенты и MCP простыми словамиКогда неизвестно, сколько стоил вызов модели: заморозка, затем сверка
Иногда вызов модели обрывается по таймауту, и вы не знаете, списал ли провайдер деньги. Никогда не записывайте это как ноль. Пометьте как неопределённое, остановите новые платные вызовы и пусть названный человек сверит это с выпиской провайдера. Отказы до генерации — исключение.
ИИ-агенты и MCP простыми словамиКак разбить большую задачу для дешёвой модели: урок 24 000 байт
Дешёвая модель хорошо справляется с одной небольшой чёткой задачей и плохо — с большой кучей. Мы ограничиваем задачу 24 000 байт и отклоняем большие до вызова любой модели. Режьте по единицам — один файл или одна страна на задачу — и проверяйте размер до запуска.
ИИ-агенты и MCP простыми словамиНавыки, MCP-инструменты и правила: три способа дать агенту возможности
Агенты получают способности по-разному. Правило ограничивает, что они делают, навык говорит, как делать работу, а MCP-инструмент позволяет вызывать функцию. У каждого свой риск, поэтому объявляйте все три в реестре и проверяйте тестом, что ничего не существует вне списка.
💬 Комментарии