Гид SENAR: Сквозной разбор
Пути внедрения
У SENAR два пути внедрения. Начните с Базовой (Core); переходите на Standard, когда потребности перерастут его.
Базовый путь (индивидуально или малая команда)
- Примите 8 правил — Задача перед кодом, Границы области, Проверка по критериям, Тесты проверяют требования, Проверка на латентные дефекты, Нулевая толерантность к незавершённой работе, Устранение причин, а не симптомов, Фиксация знаний.
- Внедрите 2 шлюза — Стартовый шлюз (цель + КП + негативный сценарий + область до реализации) и Финальный шлюз (все КП проверены, чеклист пройден, знания зафиксированы).
- Измеряйте 2 метрики — FPSR (First-Pass Success Rate) и DER (Dead End Rate). Установите базовые значения за 3+ цикла, прежде чем задавать целевые.
Это всё. Никаких ролей, церемоний, управления сессиями. Разбор ниже демонстрирует этот путь.
Путь Standard (команда или организация)
- Начните с Базовой — примите все 8 правил, оба шлюза, обе метрики.
- Добавьте Начальную конфигурацию (Foundation) — 1–3 пары; добавьте дисциплину сессий (Старт/Конец сессии, ежемесячный Обзор качества); Супервайзер совмещает роли Архитектора контекста, Инженера знаний и Инженера верификации. 11 правил, 4 метрики (добавляются Throughput и Lead Time), QG-0 + QG-2.
- Добавьте Командную конфигурацию — введите выделенные роли (Архитектор контекста, Менеджер потока, Инженер верификации), полные церемонии (Планирование инкремента, Обзор качества, Ретроспектива).
- Добавьте Корпоративную конфигурацию — федеративную координацию, кросс-проектные метрики, портфельное управление, аудиторские следы соответствия.
Раздел «Командный разбор» ниже демонстрирует путь Standard в Командной конфигурации.
Базовый разбор (одиночный Супервайзер)
Один человек, один AI-агент, одна сессия. Создаём эндпоинт REST API.
Старт сессии (2 мин): Открываем терминал. Загружаем предыдущую передачу контекста: «Модуль авторизации готов. Далее: эндпоинт профиля пользователя.» Выбираем задачу impl-user-profile.
Проверка стартового шлюза: Цель: «GET /users/me возвращает профиль текущего пользователя.» КП: «1. Возвращает 200 с данными пользователя. 2. Возвращает 401 без токена. 3. Включает информацию о компании.» Связь с историей: user-management. → Проходит.
Исполнение: Направляем AI с ограждением области:
«Реализуй GET /users/me. КП: [выше]. Следуй паттернам из auth/router.py. Измени ТОЛЬКО директорию users/.»
(Этот пример использует Python/FastAPI. Тот же паттерн применим к Java/Spring Boot @RequestMapping, Go/Gin router.GET, TypeScript/NestJS @Get().)
AI генерирует роутер + тест. Ревью по чеклисту: область ✓, импорты ✓, нет захардкоженных значений ✓, тесты проверяют поведение, а не реализацию ✓. Одна проблема: AI не протестировал случай 401.
«Добавь тест для неаутентифицированного запроса → 401.»
AI добавляет тест. Повторное ревью: чисто.
Шлюз реализации: CI зелёный, 6/6 тестов проходят, mypy чисто, КП проверены. → Готово. (Для других стеков: Java — javac + SpotBugs, Go — go vet + staticcheck, TypeScript — tsc —strict.)
Фиксация тупиковых подходов: Нет для этой задачи — всё было прямолинейно.
Конец сессии (3 мин): 4 задачи выполнено, 75 минут. Передача контекста: «Профиль, настройки, загрузка аватара готовы. Далее: смена пароля. Внимание: загрузка аватара требует валидации размера файла.»
Суммарные накладные расходы: 5 минут (старт + конец). Никаких церемоний, ролей, совещаний. Только дисциплина.
Раздел ниже демонстрирует SENAR на командном уровне. Если вы используете только Базовую (Core) — можете остановиться здесь: Базовый разбор выше является вашим полным рабочим процессом.
Командный разбор (3 пары)
Полный цикл SENAR для Командной конфигурации. 3 пары Супервайзер+AI, веб-приложение.
Планирование инкремента
Архитектор контекста ведёт:
- Обзор пула задач: 32 задачи-кандидата в 6 историях
- Применяет WSJF: Аутентификация получает наивысший приоритет (блокирует другую работу, умеренный размер)
- Назначает: Пара A → авторизация (6 задач), Пара B → CRUD заказов (8 задач), Пара C → CI/CD (5 задач)
- Риски: «Выбор библиотеки авторизации может потребовать исследования» → создаёт задачу типа Exploration
- Бюджет: 19 задач отобрано для этого инкремента
Сессия Супервайзера
Старт сессии (2 мин): Загрузка передачи контекста → «Модель авторизации готова. Далее: эндпоинт логина.» Выбрать задачу impl-login-endpoint. Dev-окружение зелёное.
QG-0 (автоматически): Цель ✓, КП ✓ (4 критерия), связь с требованием ✓, тип работы ✓ → проходит.
Исполнение (Планирование-затем-исполнение + Ограждение области):
«Реализуй POST /auth/login. КП: [критерии]. Следуй паттернам из auth/models.py. Используй PyJWT. Конфиг в settings.py. Измени ТОЛЬКО директорию auth/.»
(Этот пример использует Python/FastAPI с PyJWT. Тот же паттерн ограждения области применим к любому стеку: Java/Spring Security с jjwt, Go с golang-jwt, TypeScript/NestJS с @nestjs/jwt.)
AI генерирует роутер, сервис, тесты. Супервайзер проверяет по чеклисту:
- Область: ✓ только файлы auth/
- Фантомные импорты: ⚠ AI импортировал
python-jose, но в проекте используетсяPyJWT - Захардкоженные значения: ✓ секрет токена из env
- Крайние случаи: ⚠ нет теста на просроченный токен
Итеративное уточнение:
«Две проблемы: 1) Используй PyJWT, не python-jose. 2) Добавь тест на просроченный токен.»
AI исправляет. Повторное ревью: чисто.
QG-2 (автоматически): CI ✓, 14/14 тестов ✓, mypy ✓, lint ✓, КП проверены ✓, безопасность ✓ → проходит.
Фиксация знаний: «Подводный камень: AI по умолчанию использует python-jose для JWT, даже когда PyJWT указан в requirements. Всегда указывайте библиотеку в контексте.»
3 задачи выполнено, 110 минут.
Конец сессии (5 мин): Метрики сохранены, передача контекста написана, 1 запись в базу знаний.
Обзор качества
Процедура Обзора качества:
- Выберите 3–5 недавно завершённых задач (случайно или с учётом рисков)
- Для каждой задачи проверьте: (а) КП имеют свидетельства, (б) чеклист применён на правильном уровне, (в) знания зафиксированы
- Зафиксируйте находки как наблюдения в базе знаний
- Если FPSR падает ниже целевого значения, обсудите корневые причины на следующей Синхронизации команды (Team Sync)
После 6 сессий Инженер верификации проводит аудит:
| Находка | Действие |
|---|---|
| Дублирующаяся утилита валидации (есть в shared/) | Задача: рефакторинг |
| 3 TODO-комментария, оставленных AI | Задача: устранить |
| Нулевое покрытие тестами удаления заказов | Задача: добавить тесты |
| Непоследовательный формат ошибок между модулями | Задача: стандартизировать |
Знание: «Паттерн: AI недостаточно тестирует операции удаления — добавить в стандартный шаблон КП.»
Ретроспектива инкремента
| Метрика | Значение |
|---|---|
| Пропускная способность | 7,3 задачи/сессия |
| Lead Time (медиана) | 35 минут |
| FPSR | 74% |
| DER | 5,3% |
| KCR | 0,42 |
| Предсказуемость затрат | 110% |
| MIR | 12% |
Действия: улучшить шаблон контекста (библиотека JWT), добавить «тестировать удаление» в шаблон КП, пересмотреть QG-2 для тестов конкурентности.