Files
orchestrator/docs/work-items/ORCH-061/13-test-report.md
claude-bot 39769bdf23
All checks were successful
CI / test (push) Successful in 17s
CI / test (pull_request) Successful in 17s
tester(ET): auto-commit from tester run_id=300
2026-06-07 13:21:17 +00:00

6.3 KiB
Raw Permalink Blame History

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

Test Report — ORCH-061

BUG: устранение петли deploy-staging → development при self-hosting self-deploy. Реализован Direction (б) из ADR-001: классификация staging-проверок на REAL (fail-closed) и SANDBOX_INFRA (allowlist {C9a, C9b}, waivable) + толерантный, но fail-closed вердикт (src/staging_verdict.py), kill-switch staging_infra_tolerance_enabled (env ORCH_STAGING_INFRA_TOLERANCE_ENABLED).

Окружение

  • Python: 3.12.13
  • pytest: 8.3.3
  • Дата: 2026-06-07T13:19Z
  • Ветка: feature/ORCH-061-bug-deploy-staging-development
  • Review verdict: APPROVED (12-review.md)

Smoke test API (prod 8500, read-only)

Endpoint Результат
GET /health HTTP 200 {"status":"ok","service":"orchestrator"}
GET /status HTTP 200 (ORCH-061 в стадии testing)
GET /queue HTTP 200 (counts/resilience/reconcile present)

Прод-контейнер 8500 не перезапускался и не трогался (self-hosting safety, AC-12).

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

TC ID Описание Тест Результат
TC-01 Корректный self-deploy: staging SUCCESS → advance к deploy, без отката test_stage_engine.py::test_tc01_healthy_self_deploy_advances_no_rollback PASS
TC-02 Страховка ORCH-35: реальный FAIL → откат deploy-staging→development test_stage_engine.py::test_tc02_real_staging_failed_rolls_back PASS
TC-03 Классификация REAL vs SANDBOX_INFRA (C9a/C9b отличимы) test_staging_check_b6.py::test_tc03_classify_infra_checks (+ records/override/strict) PASS
TC-04 Падают только C9a/C9b → итог не-FAILED (нет ложного отката) test_qg_checks.py::test_tc04_only_infra_failures_waived_to_success PASS
TC-05 Падает реальная pipeline-проверка → FAILED (fail-closed) test_qg_checks.py::test_tc05_any_real_failure_fails_closed (+ _even_alone) PASS
TC-06 no-changes на action-стадии (deploy-staging/deploy) не есть недовыполнение test_launcher.py::test_tc06_deploy_staging_self_deploy_returns_note / test_tc06_deploy_self_deploy_returns_note PASS
TC-07 regression-guard: на code-стадии (development) поведение прежнее test_launcher.py::test_tc07_development_stage_returns_none PASS
TC-08 Не-self-hosting репо: check_staging_status остаётся (True, "N/A …") test_qg.py (no-op N/A) PASS
TC-09 Kill-switch выкл → 1:1 прежнее строгое поведение, безопасный дефолт test_qg_checks.py::test_tc09_infra_failure_strict_mode_fails_closed + test_config.py::test_staging_infra_tolerance_* PASS
TC-10 БАГ-8: deploy_status FAILED → откат deploy→development test_deploy_rollback.py PASS
TC-11 Снапшот QG_CHECKS / STAGE_TRANSITIONS не изменён; frontmatter-контракты целы test_qg_registry_snapshot.py PASS
TC-12 never-raise: вердикт-логика при мусоре → безопасный детерминированный FAILED test_qg_checks.py::test_tc12_compute_verdict_never_raises_on_garbage + test_stage_engine.py::test_tc12_retry_and_rollback_behavior_unchanged PASS
TC-13 Сквозной self-deploy: deploy-staging→deploy→done без единого отката test_stage_engine.py::test_tc13_end_to_end_self_deploy_no_single_rollback PASS
TC-14 Наблюдаемость: «зелёный с допущением» отличим от честного зелёного test_stage_engine.py::test_tc14_waived_green_distinguishable_from_honest_green PASS

Все 14 TC присутствуют и зелёные.

Сопоставление с критериями приёмки (03-acceptance-criteria.md)

AC Критерий Покрытие Статус
AC-1 Проход self-deploy без петли TC-01, TC-13 PASS
AC-2 Инфра-FAIL (C9a/C9b) не откатывает TC-03, TC-04 PASS
AC-3 Реальный провал staging откатывает TC-02, TC-05 PASS
AC-4 no-changes на action-стадии ≠ недовыполнение TC-06, TC-07 PASS
AC-5 БАГ-8: провал прод-деплоя откатывает TC-10 PASS
AC-6 Условность self-hosting сохранена TC-08 PASS
AC-7 Kill-switch возвращает прежнее поведение TC-09 PASS
AC-8 Контракты не сломаны (реестр/frontmatter/exit-code) TC-11 PASS
AC-9 Схема БД не меняется миграций нет (флаг — конфиг) PASS
AC-10 never-raise TC-12 PASS
AC-11 Наблюдаемость (INFRA-WAIVED / waived list) TC-14 PASS
AC-12 Безопасность self-hosting (прод 8500 не трогается) smoke + код пути PASS
AC-13 Документация обновлена (golden source) подтверждено в 12-review.md PASS
AC-14 Регрессионные тесты зелёные pytest tests/ -q → 670 passed PASS

Вывод pytest

$ python -m pytest tests/ -v --tb=short
...
======================= 670 passed, 1 warning in 12.15s ========================

Единственный warning — PydanticDeprecatedSince20 (class-based Config в src/config.py), не относится к ORCH-061, существовал ранее.

Итог

PASS — полный регресс зелёный (670 passed, 0 failed), все 14 TC из плана и все 14 критериев приёмки выполнены. Страховка цела (реальный регресс staging и БАГ-8 откатывают), условность self-hosting сохранена, kill-switch работает, never-raise покрыт. Smoke API prod — 200, прод-контейнер не затронут.

Задача готова к переходу на стадию deploy-staging.