--- type: test-report work_item_id: ORCH-044 result: PASS --- # Test Report — ORCH-044 Надёжность запуска агента: preflight auth (P1) + пустой лог = провал (P3). **P2 (`--effort`) исключён из scope владельцем** (06.06) — вынесен в ORCH-50; AC-7/AC-8/AC-9 и TC-09/TC-11 (effort) в этой задаче **не применяются (N/A)**. ## Окружение - Python: 3.12.13 - pytest: 8.3.3 - Branch: feature/ORCH-044-preflight-auth-effort - Дата: 2026-06-06T08:39Z - Прод-инстанс (8500): не трогался; smoke — read-only GET. ## Результаты — Quality Gate тесты (04-test-plan.yaml) | TC ID | Описание | Тест(ы) | Результат | |-------|----------|---------|-----------| | TC-01 | Нет `.credentials.json` ⇒ FAIL про auth | `test_missing_credentials_fails` | PASS | | TC-02 | Протухший OAuth `expiresAt` ⇒ FAIL | `test_expired_token_fails` | PASS | | TC-03 | Валидный логин ⇒ OK без регрессии | `test_valid_login_ok` | PASS | | TC-04 | Битый JSON ⇒ FAIL без исключения | `test_broken_json_fails_without_raising` | PASS | | TC-05 | Token-free: нет сетевого вызова | `test_auth_check_makes_no_network_call` | PASS | | TC-06 | Кеширование auth в пределах TTL | `test_auth_result_cached_within_ttl` | PASS | | TC-07 | Путь credentials от HOME агента (/home/slin) | `test_credentials_path_follows_agent_home` | PASS | | TC-08 | Worker не клеймит job при auth-fail | `test_worker_does_not_claim_when_auth_fails` | PASS | | TC-09 | (effort) cmd без `--effort` | `test_effort_flag.py` | N/A — scope исключён владельцем (ORCH-50) | | TC-10 | `resolve_agent_effort` согласован | `test_resolve_agent_effort.py` (11 тестов) | PASS — effort не тронут, тесты зелёные | | TC-11 | (effort) дефолтный путь даёт непустой JSON | `test_effort_flag.py` | N/A — scope исключён владельцем (ORCH-50) | | TC-12 | Пустой лог + exit0 ⇒ failed + алерт | `test_empty_log_exit0_terminal_failed_alerts` | PASS | | TC-13 | Лог без result-JSON ⇒ провал | `test_garbage_log_exit0_not_done` | PASS | | TC-14 | Провал ⇒ нет advance/успешного коммента | `test_empty_result_suppresses_advance_and_comment` | PASS | | TC-15 | Валидный JSON ⇒ done без регрессии | `test_valid_result_done`, `test_success_advances_and_comments` | PASS | | TC-16 | Никогда не вечный `running` | `test_never_running_after_empty_result` | PASS | | TC-17 | Классификация permanent/transient | `test_empty_result_defaults_permanent`, `..._with_transient_marker_goes_transient` | PASS | | TC-18 | Регресс preflight (bin/version) | `test_resilience.py::TestPreflight` | PASS | | TC-19 | Полный `pytest tests/` зелёный | вся сюита | PASS (504 passed) | Дополнительно покрыто (вне нумерации плана): постфактум auth-маркер (`test_is_auth_failure_text_*`, `TestAuthMarkerHandling`), тумблер `ORCH_PREFLIGHT_CHECK_AUTH` (`test_auth_toggle_off_skips_check`), явный путь credentials (`test_explicit_credentials_path_wins`). ## Сопоставление с критериями приёмки - **AC-1…AC-6** (preflight auth): PASS — TC-01…TC-08. - **AC-7/AC-8/AC-9** (effort): N/A — исключены владельцем (см. 02-trz.md, 03-acceptance-criteria.md). - **AC-10…AC-14** (пустой результат ⇒ провал): PASS — TC-12…TC-16. - **AC-15** (документация в том же PR): PASS — подтверждено review (APPROVED): README/internals/INFRA/CHANGELOG/ADR обновлены. - **AC-16** (тесты зелёные): PASS — 504 passed. - **AC-17** (self-hosting): PASS — изменения в слое preflight/launch; прод-контейнер не рестартовался; smoke 8500 read-only. ## Smoke test API (8500, read-only GET) | Endpoint | Код | Замечание | |----------|-----|-----------| | GET /health | 200 | `{"status":"ok","service":"orchestrator"}` | | GET /status | 200 | активна задача ORCH-044 (stage=testing) | | GET /queue | 200 | counts ok (failed=0), `preflight_ok=true`, breaker=closed | > curl в окружении отсутствует — smoke выполнен через `urllib` (эквивалентные GET). ## Вывод pytest ``` ======================= 504 passed, 1 warning in 10.82s ======================== ``` Модули плана (детально): ``` tests/test_preflight_auth.py ......... 18 passed tests/test_resolve_agent_effort.py ... 11 passed tests/test_empty_log_failure.py ...... 18 passed tests/test_resilience.py ............. 31 passed (итого по модулям плана: 78 passed) ``` Warning: `PydanticDeprecatedSince20` в `src/config.py:4` — предсуществующий, вне scope ORCH-044 (зафиксировано в review как P2/опционально). ## Итог **PASS** — все применимые тесты плана зелёные, существующая сюита не сломана, smoke API исправен. TC-09/TC-11 (effort) корректно N/A: P2 исключён владельцем и вынесен в ORCH-50. Задача готова к стадии **deploy-staging**.