Files
orchestrator/docs/work-items/ORCH-021/13-test-report.md
claude-bot 1c89ac9df9
All checks were successful
CI / test (push) Successful in 19s
CI / test (pull_request) Successful in 17s
tester(ET): auto-commit from tester run_id=313
2026-06-07 14:40:06 +00:00

6.4 KiB
Raw Permalink Blame History

type, work_item_id, result
type work_item_id result
test-report ORCH-021 PASS

Test Report — ORCH-021

Post-deploy наблюдение прода + реакция на деградацию (reserved-agent job post-deploy-monitor, leaf-модуль src/post_deploy.py).

Окружение

  • Python: 3.12.13
  • pytest: 8.3.3 (asyncio mode=AUTO, anyio 4.13.0)
  • Ветка: feature/ORCH-021-post-deploy-rollback
  • Дата: 2026-06-07

Прогон

  • pytest tests/ -v --tb=short701 passed, 1 warning (Pydantic V2 deprecation, не относится к задаче).
  • Целевые модули tests/test_post_deploy.py + tests/test_post_deploy_integration.py30 passed.

Smoke-test (read-only, прод 8500)

curl в окружении недоступен — опрос через python urllib (read-only, прод-контейнер не трогается).

Эндпоинт Результат
GET /health 200 {"status":"ok","service":"orchestrator"}
GET /status 200, активная задача ORCH-021 на стадии testing
GET /queue 200, counts/resilience/reconcile присутствуют

Примечание: блок post_deploy в живом /queue отсутствует — это ожидаемо: прод сейчас работает на коде ДО ORCH-021 (задача ещё не задеплоена, стадия testing). Наличие блока (AC-14) проверяется интеграционным тестом TC-20 против кода ветки → PASS. Smoke-проверка подтверждает живость окружения, не версию ветки.

Результаты по тест-плану (04-test-plan.yaml)

TC ID Описание Покрывает AC Тест-функция Результат
TC-01 HEALTHY: серия без провалов < порога AC-3 test_tc01_healthy_no_failures PASS
TC-02 DEGRADED: N посл. провалов health == threshold AC-4 test_tc02_degraded_consecutive_health_failures PASS
TC-03 DEGRADED по 5xx при health=200 AC-5 test_tc03_degraded_by_5xx_ratio_even_when_health_200 PASS
TC-04 Нет ложного срабатывания: одиночный глюк + восстановление AC-6 test_tc04_no_false_trip_single_glitch_then_recovery PASS
TC-05 Пороги из Settings меняют вердикт на тех же данных AC-11 test_tc05_thresholds_change_verdict_on_same_data, test_classify_uses_settings_thresholds PASS
TC-06 не-self + auto_rollback=True + DEGRADED → ROLLBACK AC-7 test_tc06_nonself_auto_rollback_degraded_rolls_back PASS
TC-07 self-hosting + DEGRADED → ALERT_ONLY (никогда не авто-rollback) AC-8 test_tc07_self_hosting_degraded_never_rolls_back PASS
TC-08 HEALTHY → NONE для любого репо AC-3 test_tc08_healthy_means_none_for_any_repo, test_nonself_default_policy_alert_only PASS
TC-09 post_deploy_applies: пусто → только orchestrator AC-2 test_tc09_applies_empty_repos_only_self_hosting, test_tc09_applies_explicit_repos_csv PASS
TC-10 kill-switch: monitor_enabled=False → applies()=False для всех AC-10 test_tc10_kill_switch_disables_for_everyone PASS
TC-11 Откат exit 0 → ROLLBACK_OK AC-7 test_tc11_rollback_exit0_is_ok PASS
TC-12 Откат exit 1/2 → ROLLBACK_FAILED + эскалация AC-9 test_tc12_rollback_exit_nonzero_is_failed PASS
TC-13 16-post-deploy-log.md: валидный YAML-frontmatter AC-13 test_tc13_log_frontmatter_parses PASS
TC-14 Опрос при сетевой ошибке → консервативный, не raise AC-16 test_tc14_probe_network_error_is_conservative_not_raise, test_tc14_classify_junk_input_swallowed PASS
TC-15 Ошибка записи артефакта → False, не raise AC-16, AC-13 test_tc15_write_log_no_worktree_returns_false PASS
TC-16 advance_stage deploy→done армит наблюдение (self), не армит (non-self) AC-1, AC-2 test_tc16_arm_for_self_hosting, test_tc16_no_arm_for_nonself, test_tc16_no_arm_when_kill_switch_off PASS
TC-17 Идемпотентность: повторный арм не задваивает AC-15 test_tc17_double_arm_is_noop PASS
TC-18 Полный цикл DEGRADED → не-self откат + лог + уведомление AC-7, AC-13, AC-17 test_tc18_degraded_nonself_rolls_back PASS
TC-19 Self-hosting DEGRADED → НЕ рестарт/откат, алерт+approve AC-8, AC-17 test_tc19_degraded_self_hosting_alert_only PASS
TC-20 GET /queue содержит блок post_deploy AC-14 test_tc20_queue_block_present PASS
TC-21 Регресс: deploy/staging/merge-gate/reconciler зелёные; STAGE_TRANSITIONS/QG_CHECKS не изменены AC-12 tests/test_stages.py (+ полный прогон 701) PASS

Доп. тесты ветки (не из плана, подтверждают контракты): test_series_append_and_read_roundtrip, test_mark_done_idempotency_marker, test_healthy_tick_requeues_without_finishing, test_finished_window_tick_is_noop — все PASS.

Покрытие критериев приёмки

AC-1…AC-18 — все покрыты прошедшими тестами (см. таблицу). AC-12 (реестры/схема БД не изменены) дополнительно подтверждён зелёным полным регрессом 701 теста, включая deploy/staging/merge-gate/reconciler. AC-18 (документация) — вне scope прогона тестов, подтверждён ревью (12-review.md, verdict APPROVED).

Вывод pytest (хвост)

======================= 701 passed, 1 warning in 12.71s ========================
======================== 30 passed, 1 warning in 0.58s =========================

Итог

PASS. Все 21 тест-кейс плана зелёные, полный регресс (701) зелёный, smoke прод-эндпоинтов OK (окружение живо). Существующие контракты не сломаны. Задача готова к стадии deploy-staging.