Гид SENAR: Чеклист ревью AI-вывода

ПРИМЕЧАНИЕ — Соотношение с SENAR Core

SENAR Core содержит обновлённый Чеклист верификации (26 пунктов, 3 уровня: Standard / High / Critical), который заменяет данный чеклист для команд, использующих Core.

Соответствие уровней: Tier 1 (этот гид) ≈ Standard (Базовая) (Core) | Tier 2 ≈ High | Tier 3 ≈ Critical

Данный чеклист Гида сохраняется для команд, осваивающих SENAR через Standard (командная точка входа) и ещё не перешедших на Core. Если ваша команда использует SENAR Core — применяйте Чеклист верификации из Core.

При ревью AI-сгенерированного вывода проверяйте эти специфичные для AI проблемы.

Чеклист

#ПроверкаНа что обращать внимание
1Область измененийAI изменил файлы за пределами области задачи? (самая частая ошибка AI)
2УдаленияAI молча удалил или подменил существующий рабочий код?
3Фантомные импортыВсе импортированные пакеты указаны в файле зависимостей?
4Версии зависимостейУказанные версии реально существуют и опубликованы?
5Захардкоженные значенияМагические числа, URL-адреса, учётные данные, API-ключи в коде?
6ПереусложнениеНенужные абстракции, паттерны или обобщения?
7ДублированиеНовый код дублирует существующие утилиты?
8Качество тестовТесты проверяют поведение или просто зеркалят реализацию?
9Подмена тестовAI изменил тесты, чтобы они прошли, вместо исправления кода?
10БезопасностьОткрытый CORS, захардкоженные токены, SQL без параметризации?
11Крайние случаиОсновной сценарий работает — а что с null, пустым значением, граничными условиями, конкурентным доступом?
12ИменованиеAI следует конвенциям именования проекта?
13Область коммитаКоммит атомарный и сфокусированный, или свалка всего подряд?
14Null-guard перед сравнениемNone == None — это True в Python (JS: null === null — true; в большинстве языков есть аналогичные ловушки null-равенства) — проверки доступа обходятся, когда обе стороны null?
15Обход через пустой конфигПроверка безопасности пропускается, когда значение конфига — пустая строка? (if secret and ... проваливается в открытое состояние)
16Доверие заголовкамX-Forwarded-For, X-Partner-ID, Content-Length используются для безопасности без валидации прокси?
17IDORРесурс доступен по ID без проверки прав пользователя на этот ресурс? Аутентификация != авторизация.
18Шорткат return TrueФункция контроля доступа возвращает True / предоставляет доступ без явной проверки владения?
19Инъекция через форматирование строкstr.format(**untrusted_dict) — Python format поддерживает доступ к атрибутам, что позволяет инъекцию (JS: шаблонные литералы с eval(); C/C++: форматные строки printf; любой язык: строковая интерполяция с непроверенными данными)
20God-функции/файлыФункции >50 строк, файлы >400 строк — главный признак нерефакторенного AI-вывода
21Недостижимый защитный кодreturn False после исчерпывающей обработки исключений — AI добавил «на всякий случай», но код никогда не выполнится
22Проглоченные исключенияБлоки catch/except, которые отбрасывают ошибки (except Exception: pass, catch(e) {}, или логирование на уровне debug) — скрывают реальные сбои. Проверяйте возврат null/None/nil, маскирующий ошибочные состояния
23Небезопасная десериализацияpickle.loads, yaml.load без SafeLoader, eval/exec на непроверенных данных, JSON prototype pollution? (Java: ObjectInputStream; JS: eval(JSON); любой язык: десериализация непроверенных данных без валидации)

Уровни приоритета

Уровень 1 — Проверять всегда (каждая задача): Пункты 1–3 (область изменений, удаления, фантомные импорты) и 8–9 (качество тестов, подмена тестов). Они отлавливают самые частые и самые опасные дефекты AI. Проверка 5 пунктов занимает менее 2 минут.

Уровень 2 — Задачи, связанные с безопасностью (авторизация, платежи, данные, API): Пункты 10 (безопасность), 14–18 (null-guard, пустой конфиг, доверие заголовкам, IDOR, return True). Они отлавливают латентные дефекты — AI-вывод, который выглядит корректно, но ломается при враждебных условиях. Выявлены через состязательный аудит продакшен-кода, сгенерированного AI.

Уровень 3 — Глубокое ревью (сложные задачи, вывод агентов): Все оставшиеся пункты (4–7, 11–13, 19–23). Применяйте при ревью сложных фич, рефакторингов или любого вывода от диспетчеризованных агентов (Rule 15 L3).

Использование

Распечатайте этот список. Используйте его на QG-2 (шлюз реализации) для каждой задачи. Со временем часть проверок станет автоматической привычкой — но держите список на виду для новых Супервайзеров.