Атомарная цель. Доказать безопасное поведение 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. Строки после комментария «после подтверждения» не запускаются заранее.
КОМАНДЫ - КОПИРОВАТЬ ПО ПОРЯДКУ
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.