Что это за задача
Договориваемся, как агент докладывает о результате: последним действием пишет файл task_result.json со статусом (success/failed/escalate). Обёртка переводит статус в код возврата 0/1/3; если обязательное расширение недоступно — быстрый отказ с кодом 2 до запуска Goose.
Задача из листа «Задачи» проекта (CI-3, СРЕЗ 0, приоритет P0). Срез CI-3: статус — готово.
Тесткейсы
Кейсы, привязанные к этой задаче в листе «Тесткейсы» (колонка «Единица бэклога»):
| TC-ID | Дано | Когда | Тогда |
|---|---|---|---|
TC-CI-3.1-a | функция маппинга status→exit_code вызвана напрямую для success/failed/escalate/файл отсутствует | вызов на всех четырёх входах | возвращает 0/1/3/1 соответственно |
TC-CI-3.2-a | агент завершился, task_result.json содержит status=success | wrapper маппит результат в exit_code | exit_code=0 |
TC-CI-3.2-b | task_result.json содержит status=failed | wrapper маппит результат | exit_code=1 |
TC-CI-3.2-c | агент завершился, task_result.json отсутствует | wrapper определяет исход | результат маппится как failed, не как success |
TC-CI-3.2-d | обязательное расширение недоступно до запуска Goose | entrypoint проверяет доступность fail-fast | exit_code=2 (env_error), Goose не запускается |
TC-CI-3.3-a | пять сценариев (0/1/2/3/файл отсутствует→1) сведены в один регрессионный прогон entrypoint.sh | сьют запускается в CI | все пять зелёные одновременно; закрывает Э1/DA-01 |