# Проверки

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

## Ворота: двенадцать проверок

Прогоняются явно. Любой `fail` означает, что ответ не закончен: исправить или сообщить. Результат
сообщается одной строкой: `gate 12/12` либо `gate 10/12 — 6, 9 failed: <причина>`.

| # | Проверка | Проходит, когда |
|---:|---|---|
| 1 | Ясность темы | тема — одно предложение и совпадает с запросом |
| 2 | Карточка задачи полна | каждое поле заполнено либо буквально `unknown` |
| 3 | Карточка домена полна | навыки, факты «надо проверить», определение готовности |
| 4 | Покрытие свидетельствами | каждое фактическое утверждение есть в журнале контекста |
| 5 | Разметка метками | нет утверждений без метки; у допущений названы последствия |
| 6 | Проверка | каждое «работает» несёт команду или наблюдение |
| 7 | Безопасность | нет необратимых действий без согласия; секрет не раскрыт |
| 8 | Рамки | ничего вне карточки домена, кроме обоснованного расширения |
| 9 | Формат | разделы на месте; язык следует за пользователем |
| 10 | Честность | всё непроверенное записано как непроверенное |
| 11 | Использование опыта | поиск был до планирования; у каждой использованной записи есть вердикт и названная адаптация |
| 12 | Доставка | многоразовое окружение существует по названному пути, шаг регистрации назван, передача включена |

Пункты 11 и 12 — те, которые практик чувствует: 11 держит использование опыта честным, 12 не даёт
работе умереть вместе с окном.

## Самопроверка: пять вопросов

По одной строке на каждый, перед отправкой:

1. В какой теме я нахожусь и что я исключил?
2. Какие три факта проверил бы специалист — и проверил ли я?
3. Какое утверждение в ответе самое слабое и помечено ли оно?
4. Что сделало бы этот ответ неверным и проверял ли я это?
5. Какое одно следующее действие?

Если на любой вопрос ответ «не уверен» — соответствующий модуль пропущен; вернитесь к нему вместо
отправки.

## Девятнадцать режимов отказа

| # | Отказ | Как выглядит | Противоядие |
|---:|---|---|---|
| 1 | Дрейф домена | разбор соседней, более лёгкой задачи | переписать карточку домена |
| 2 | Галлюцинация контекста | «как мы обсуждали раньше» про непрочитанный диалог | M3, правило 5 |
| 3 | Шаблон вместо анализа | красивый скелет с выдуманным содержанием | каждое поле со источником |
| 4 | Зелёная проверка над пустотой | «все тесты проходят» после прогона на нуле файлов | M4, правило 5 |
| 5 | Подогнанное ожидание | критерий изменён под результат | M5, шаг 4 |
| 6 | Отмывание допущения | допущение, переодетое фактом | три метки |
| 7 | Молчаливое урезание рамок | половина запроса без предупреждения | M7, правило 6 |
| 8 | Необратимый обход | удаление, чтобы не разбираться со слиянием | сначала песочница |
| 9 | Сбой гигиены секретов | вставка доступа «просто показать форму» | M6, правило 5 |
| 10 | Вода | три страницы на задачу в одну строку | длина следует за содержанием |
| 11 | Театр авторитета | «best practice» без источника | число без источника — допущение |
| 12 | Отказ без альтернативы | «не могу» и больше ничего | назвать путь вперёд |
| 13 | Слепое копирование рецепта | старый рецепт в изменившемся окружении | проверка применимости |
| 14 | Устаревший опыт как истина | прошлогодняя запись без повторной проверки | `last_verified_at` |
| 15 | Хранилище как свалка | записано всё, поиск ничего не находит | записывать только многоразовое и проверенное |
| 16 | Два хранилища | личные заметки рядом с общим | одно хранилище, одна схема |
| 17 | Сделано, но не установлено | файлы есть, следующая сессия ничего не видит | проверка 12 ворот |
| 18 | Подмена окружения персоной | просили окружение, агент сменил тон | результат — каталог плюс передача |
| 19 | Рассуждение по шуму индекса | «мы это обсуждали» на основе вложенного контекста | фильтровать по сообщениям пользователя, цитировать сессию |

Режимы 13–19 — те, ради которых набор расширяли: все они про работу, которая уже была сделана и
потерялась.

## Что отклонит линтер

`python tools/prompt_lint.py` падает, пункт за пунктом, на:

- отсутствующем модуле или модуле не по порядку;
- модуле без строки `**Check:**`;
- переводе без английского двойника либо двойнике с перевёрнутым направлением языка;
- неразрешённом `{{placeholder}}` вне блока кода;
- сломанной относительной ссылке;
- литерале, похожем на учётные данные, или абсолютном машинном пути;
- висячей ссылке на `M<число>`;
- расхождении версии между заголовком промпта и историей изменений;
- неполном разделе M13;
- воротах с неверным числом проверок;
- странице вики, которая неверно пересказывает число из промпта (правило дрейфа: «десять правил» и
  «ворота из двенадцати проверок» сверяются с промптом, а не принимаются на веру).

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

## Перед отправкой

- [ ] результат в начале, а не после предисловия
- [ ] у каждого числа есть источник или метка
- [ ] команды из ответа может повторить другой человек
- [ ] необратимые действия были предварительно показаны и согласованы
- [ ] строка ворот присутствует и заработана
- [ ] если создано окружение — назван его путь и шаг регистрации
- [ ] язык следует за последним сообщением пользователя

Назад к [Home](Home.ru.md) или ещё раз [Зачем](00-Why.ru.md) — чтобы увидеть, ради чего всё это.
