Локальные AI-агенты, Git и DevOps/aka-gst

Эксперимент 13 · 3 мин

Эксперимент 13. Инъекция отказов

Содержание раздела
  1. Что мы делаем и зачем
  2. Что должно быть готово
  3. Где выполнять
  4. Scope
  5. Команды PowerShell
  6. Как действовать при запросе разрешения
  7. Что должно получиться
  8. Типовые ошибки и действия
  9. Артефакты и доказательства
  10. Критерий завершения

Атомарная цель. Доказать безопасное поведение gateway при неверном token, запрещённой модели, недоступном Ollama и timeout.

Что мы делаем и зачем

Happy-path недостаточен для runtime-сервиса. Ошибка upstream не должна превращаться в stack trace, зависание или утечку секретов. Каждый отказ проверяется отдельным автоматическим тестом с ожидаемым HTTP status.

Что должно быть готово

  • Gateway unit/contract tests зелёные.
  • Ошибки можно симулировать mock transport без остановки пользовательских процессов.

Где выполнять

local-agent-gateway, преимущественно tests/. Реальный Ollama останавливать не требуется, если отказ корректно мокируется.

Scope

РазрешеноТолько действия, прямо указанные в prompt и командах этого эксперимента.
ЗапрещеноСекреты, изменение main/upstream, расширение scope и скрытое исправление новых ошибок.
РезультатАртефакты и критерии на третьей странице эксперимента.

Откройте Codex из папки, указанной на предыдущей странице. Для независимого аудита обязательно создайте новую сессию. Скопируйте следующий prompt целиком, не вырезая ограничения.

PROMPT ДЛЯ CODEX - КОПИРОВАТЬ ЦЕЛИКОМ

Работай как инженер в режиме контролируемого агента.
Перед любым изменением покажи карту релевантной части репозитория, одну атомарную цель, файлы чтения и изменения, риски и команды проверки.
Сначала покажи план. Не меняй файлы до моего явного подтверждения.
Не используй sudo, force push, git reset --hard, git clean -fd и опасные команды удаления.
Не переключай и не изменяй main.
Не читай и не печатай .env, токены, SSH-ключи, cookies и keychain.
Не трогай файлы за пределами указанного scope.
Не скрывай ошибки и не подменяй тест словесным утверждением.
После изменения покажи краткий diff, реальный минимальный тест и git status --short.
Если нужен больший scope, остановись и запроси новый атомарный шаг.

Добавь только тесты безопасных отказов gateway: отсутствующий/неверный Bearer -> 401; запрещённый backend/model -> отказ до network call; upstream connection failure -> 502 или 503; timeout -> 504 или документированный нейтральный статус. Проверяй отсутствие token, prompt, traceback и локальных путей в body/log capture.

Сначала покажи план тестов и ожидаемую таблицу status. После подтверждения добавь тесты. Меняй production code только если реальный тест обнаружит несоответствие, и только после отдельного подтверждения. Покажи полный pytest output и git diff.

Команды PowerShell

Команды ниже нужны либо для ручного выполнения, либо для сверки предложения Codex. Строки после комментария «после подтверждения» не запускаются заранее.

КОМАНДЫ - КОПИРОВАТЬ ПО ПОРЯДКУ

powershell
Set-Location C:\dev\agent-lab\local-agent-gateway
uv run pytest -q
git diff --check
git status --short

Как действовать при запросе разрешения

Прочитайте команду и рабочую папку; сразу сверьте их со scope этого эксперимента.

Для одной безопасной команды выберите разовое Yes, proceed.

Если команда читает секреты, пишет за пределами scope или меняет main - нажмите Esc и объясните ограничение.

Что должно получиться

  • Каждый fault имеет отдельный тест.
  • HTTP body нейтрален.
  • После симулированного отказа health endpoint продолжает отвечать.

Типовые ошибки и действия

  • Тест зависит от реальной сети: заменить mock transport.
  • Stack trace попал в body: исправить exception mapping отдельным минимальным diff.
  • Token виден в captured log: добавить redaction и regression test.

Артефакты и доказательства

Критерий завершения

ГОТОВАЯ ЗАПИСЬ В ОТЧЁТ

Эксперимент 13: Инъекция отказов | Статус: PASS / FAIL / NOT PROVEN
Доказательство: <минимальный обезличенный вывод> | Не доказано: <ограничение>
Source tree: unchanged / <известный diff> | Следующий шаг: Описать проверенный операционный runbook.