The Oracle Lens: три вида истины

В прошлом тексте я сказал, что спецификация заслуживает компилятора — gate, который падает, когда на входе ошибка. Звучит чисто, пока не начнёшь его строить: тут же упираешься в вопрос, который слово «ошибка» прятало. Ошибка — в каком смысле?

Верификация — не одно действие, хотя ощущается именно так. Проверяя спеку, план или кусок сгенерированного кода, ты на самом деле задаёшь до трёх разных вопросов — они кажутся одним и тем же, но одним и тем же не являются.

Их смешение — самая частая ошибка, которую я вижу в AI-инструментах для продуктов, включая инструменты в остальном очень хорошие. Поэтому прежде любого gate — линза. Осей три, и они ортогональны.

Truth, Coherence, Intent

ОсьВопросС чем сверяетсяКак проверить
TruthТак ли это на самом деле?Мир за пределами документа — код, работающая система, данныеПойти и посмотреть: grep, вызов endpoint’а, запрос к базе
CoherenceДержится ли это вместе?Сам документЧитать против себя: противоречия, дыры, термин в двух смыслах
IntentТо ли это самое?Голова человекаМеханической проверки не существует

Truth — заземлённость в реальности. «API возвращает это поле». «В этой таблице есть колонка status». «Консьюмер переживёт лишний параметр».

Каждое утверждение истинно или ложно относительно мира, существующего независимо от документа. У Truth есть внешний референт — именно поэтому из всех трёх осей она механизируется лучше всего.

Coherence — внутренняя согласованность. Не противоречит ли документ сам себе? Нет ли дыр — поведение описано для одних входов и умолчено для других? Не используется ли один термин в двух смыслах?

Coherence не нуждается в мире за пределами документа. Это ось, до которой тулинг спецификаций реально добрался: когда Kiro помечает двусмысленную фразу или два требования, которые не могут выполняться одновременно, или когда чеклист Spec Kit спрашивает, покрыты ли все случаи, — это оракул когерентности. Он действительно полезен, и я не хочу его принижать.

Intent — совпадение с тем, чего на самом деле хотели. Не «согласовано ли» и не «правда ли» — а «то ли это самое».

Спека может быть безупречно когерентной, идеально заземлённой в реальности — и описывать фичу, которая никому не нужна. Или не ту фичу. Или ту, но с чуть неверным дефолтом, который распознает как неверный только тот, кто просил. Intent живёт в голове человека. У него нет внешнего референта, по которому можно сделать grep, и нет внутреннего теста, который документ мог бы пройти.

Называть все три стоит потому, что они расходятся, — в этом вся польза линзы.

Они расходятся — и в этом суть

Спека бывает когерентной и ложной. Она прекрасно держится, каждое требование согласовано с каждым — а построена на утверждении о системе, которое не соответствует действительности. Ничто внутреннее её не поймает: документ в мире с самим собой. Поймает только проверка истины, выходящая за пределы документа.

Спека бывает истинной и некогерентной. Каждое отдельное утверждение сходится с кодовой базой, но два требования тихо противоречат друг другу, или половина пространства входов не описана. Grounding проходит утверждение за утверждением; когерентность рвётся на швах.

И спека бывает истинной, когерентной — и не той. Самый тяжёлый случай. Она ни о чём не врёт, ничему не противоречит и описывает нечто иное, чем то, чего хотели. Никакой механический оракул этого не поймает — потому что проверять механически не с чем.

А вот аккуратное доказательство из реального мира, что эти оси действительно разделимы, а не выдуманы философом: посмотри, где остановилась индустрия.

Все, кто поднялся до слоя спецификации — Kiro, Spec Kit, — построили оракул когерентности и воткнули флаг. Они скажут тебе, что твоя спека противоречит сама себе. Ни один не скажет, что твоя спека врёт про API, — это совсем другая ось, и ей нужна другая машинерия: та, что выходит из документа и идёт смотреть.

Gate когерентности и gate истины — это не один gate разной строгости. Это разные gate. Рынок нечаянно поставил эксперимент и подтвердил линзу.

Живой пример: когерентность без истины

Приведу один случай из работы над этой самой серией — самая чистая иллюстрация, какая у меня есть, и произошла она со мной на прошлой неделе.

Я проверял, не опубликовал ли кто-нибудь уже таксономию оракулов в духе Truth/Coherence/Intent.

Что сообщил агент. Статья 2026 года делит оракулы верификации ровно по этим линиям и объявляет проверку намерения принципиально немеханизируемой — с цитатой. По теме, хорошо сформулировано, и в мой тезис легло так гладко, что я почти это использовал.

Что нашёл второй проход. Слово «intent» встречается в статье дважды, в несвязанных предложениях. Процитированной строки не существует. Цитата сфабрикована.

Coherence — зелёный. Саммари было безупречно: гладко, правдоподобно, внутренне согласованно. Оно прошло бы любую проверку, которую читатель мог бы применить к самому саммари.

Truth — красный. Оно провалило единственную проверку, которая имела значение: пойди и прочитай источник.

Будь у меня gate когерентности, который я принимал бы за gate истины, эта фальшивка сейчас стояла бы цитатой в этой статье.

Это и есть весь аргумент за линзу в одном анекдоте. Опасные ошибки — не бессвязные: те выглядят неправильно. Опасные ошибки — когерентные-но-ложные, потому что они выглядят правильно, и остановит их только оракул, направленный на мир, а не на документ.

Градиент силы — и ось, которую не механизировать

Три оси различаются не только по сути, но и по тому, насколько они поддаются механизации, — и это упорядочение должно определять, куда вкладывать усилия.

Truth механизируется лучше всех. У неё есть внешний референт, значит проверку можно автоматизировать: grep, компиляция, исполнение, запрос. Строй самый жёсткий, самый автоматический gate здесь — тут компилятор спецификаций отрабатывает свой хлеб, и тут же, как показывает рынок, построено меньше всего.

Coherence механизируется частично. Проверки согласованности и полноты автоматизируются в заметной степени, и LLM неплохо ловят противоречия. Отдача убывает, но задача решаемая. Рынок до этой оси уже дошёл.

Intent механическому оракулу не поддаётся — и притворяться, что это не так, — ловушка. Нет ни внешнего референта, ни внутреннего теста. Эталон — намерение в чьей-то голове, часто недоопределённое даже для самого носителя и меняющееся, когда он видит результат.

Его можно приближать: приёмочные тесты кодируют его срез, примеры фиксируют крайние случаи, накопленные человеческие рулинги (об этом отдельный текст — case law) дают слабый дрейфующий прокси. Но приближение — потолок.

Поэтому честный инженерный ход — не подделывать оракул Intent уверенным LLM-судьёй, а назвать Intent осью, требующей человека, поставить человека ровно туда — и механизировать Truth и Coherence настолько жёстко, чтобы дефицитное внимание человека тратилось только на вопрос, на который не может ответить ни одна машина.

Вот что даёт линза. Не новый gate — а понимание, на какой из трёх вопросов на самом деле отвечает каждый твой gate.

Чтобы проверка когерентности больше не караулила дыру, которую способна закрыть только проверка истины, — и чтобы машина не делала вид, будто закрывает тот единственный вопрос, что всегда оставался за человеком.

Дальше в серии — сам gate истины: как заземлять спецификацию против реальности и почему самые интересные провалы не про ложь, а про слои. Об этом — в одном из следующих текстов.