qvib.pro
EN

~4 мин чтения · всем

Гейт 10/10: как движок доводит задачу и не галлюцинирует «готово»

Что это

Главная болезнь AI-агентов — объявить «готово», когда не готово. Гейт 10/10 (engine.doneCriteria) лечит это структурно: он превращает «готовность» из vibe-оценки в набор критериев, каждый из которых закрывается только выполненным доказательством.

VERIFIED 10/10Каждый required-критерий доказанВывод команды / тест / скрин приложенHONEST GAP REPORT±Что осталось и почему — честноРавноправный исход, не провал
Ровно два исхода — сфабрикованное «10/10» запрещено

Статус. Гейт 10/10 — это слой конструктора: он поддержан схемой и экспортёром, но в базовый флагманский сид Quest пока не входит (в разработке для флагмана). То есть купленный пакет Quest не приносит doneCriteria из коробки — это то, что вы собираете поверх, когда описываете свой движок в конфигураторе. Ниже — как этот слой устроен, а не «поведение установленного Quest».

Когда слой включён, в экспортируемый пакет попадает буквальный рецепт с жёстким правилом: ровно два исхода, третьего нет.

  1. VERIFIED 10/10 — по КАЖДОМУ required-критерию есть ВЫПОЛНЕННОЕ доказательство (вставь вывод команды/теста, скрин браузера). Без доказательства критерий НЕ закрыт.
  2. HONEST GAP REPORT — если хоть один required не доказан: честно перечисли, что осталось и почему. Это равноправный исход, а не провал.

BANNED — сфабрикованные 10/10: объявить «10/10» без выполненного доказательства запрещено. Нет вывода команды = нет закрытого критерия.

Честный отчёт о разрыве — не поражение, а легитимный второй исход. Именно это убирает стимул врать: модели не нужно притворяться, у неё есть разрешённый способ сказать «вот это не доказано».

ENFORCED vs ADVISORY критерии

У каждого критерия есть checker, и он делится на два класса:

  • ENFORCED (cmd / test / file / http) — доказывается кодом выхода: команда, тест, наличие файла, HTTP-ответ. Машина проверяет, а не суждение.
  • ADVISORY (behavior / human / rubric / reference) — доказывается суждением и помечается честно как advisory.

Это разделение прямо видно в пакете, так что никто не выдаёт «человек посмотрел, вроде норм» за машинно-проверенный факт.

Пропорциональность

Гейт не давит церемонией на мелочь. proportionality: full (каждый required доказан) или light (для quest-fix — доказывай только required, без церемоний). В режиме auto мелкий фикс (kind: quest-fix) сам уходит в light.

Когда применять

  • Любая задача, где важно не «почти работает», а «доказано работает»: фичи, багфиксы, релизы.
  • Особенно ценно на слабой целевой модели, которая склонна рапортовать успех преждевременно.

Как это выглядит на слое конструктора

Пример ниже иллюстрирует форму слоя doneCriteria — как он был бы описан в конфигураторе. Это не сценарий из базового Quest; это то, во что превращается ваш собственный набор критериев после экспорта.

Вход: «добавь эндпоинт POST /login с rate-limit». Движок с doneCriteria.criteria:

  • [required] «Тесты авторизации зелёные» — checker test, detail npm test -- auth [ENFORCED]
  • [required] «Rate-limit срабатывает после 5 попыток» — checker http, detail curl -X POST /login × 6 [ENFORCED]
  • [required] «Секретов в диффе нет» — checker cmd, detail git diff | grep -E 'SECRET|TOKEN' [ENFORCED]
  • [additional] «Формулировки ошибок понятны новичку» — checker human [ADVISORY]

Что делает движок с таким слоем:

  1. Реализует эндпоинт.
  2. Идёт по required-критериям и исполняет проверки. Прогоняет npm test -- auth → 12 passed. Шлёт 6 запросов curl → 6-й возвращает 429. Грепает дифф → пусто.
  3. К каждому критерию прикрепляет вывод: лог тестов, тело 429-ответа, пустой результат грепа.
  4. Additional-критерий (advisory) отмечает как суждение, честно помеченное.

Результат: «VERIFIED 10/10 — все 3 required доказаны выполненным выводом» с приложенными артефактами.

Альтернативный (честный) исход: если curl-проверка показала, что 6-й запрос всё ещё 200 — движку ЗАПРЕЩЕНО писать «готово». Он выдаёт HONEST GAP REPORT: «2 из 3 required доказаны; rate-limit не срабатывает (6-й запрос вернул 200 вместо 429), критерий не закрыт». Именно этот исход и защищает вас от галлюцинированного «done».

Честная оговорка

Сначала о статусе: гейт 10/10 — слой конструктора, а не встроенное поведение базового Quest. Схема и экспортёр его поддерживают, но во флагманский сид он пока не входит (в разработке). Всё, что описано выше, относится к движку, в который вы этот слой явно добавили.

Дальше о границе гарантии. Сила гейта — ровно там, где критерий ENFORCED (есть код выхода). ADVISORY-критерии держатся на добросовестности модели и помечены как advisory — они не гарантия. Полностью убрать возможность соврать нельзя, но BANNED — сфабрикованные 10/10 плюс равноправный HONEST GAP REPORT снимают у модели мотив это делать: честно признать разрыв — разрешённый и ожидаемый ход.