Files
orchestrator/docs/work-items/ORCH-114/13-test-report.md
claude-bot 7490f4fac4
All checks were successful
CI / test (push) Successful in 1m18s
CI / test (pull_request) Successful in 1m28s
tester(ET): auto-commit from tester run_id=714
2026-06-15 19:28:38 +03:00

6.0 KiB
Raw Blame History

result, work_item, stage, author_agent, status, created_at, model_used, type, work_item_id
result work_item stage author_agent status created_at model_used type work_item_id
PASS ORCH-114 testing tester pass 2026-06-15 claude-opus-4-8 test-report ORCH-114

Test Report — ORCH-114

Durable transition-ownership lease + expected-stage CAS для side-effectful переходов стадий (закрытие корневого класса инцидент-цепочки ORCH-110/111/112/113).

Окружение

  • Python: 3.12.13
  • pytest: 8.3.3 (plugins: cov-5.0.0, anyio-4.13.0, asyncio-0.23.8)
  • Worktree: /repos/_wt/orchestrator/feature_ORCH-114-bug-pipeline-stage-transitions/
  • Branch: feature/ORCH-114-bug-pipeline-stage-transitions
  • Дата: 2026-06-15

Предусловия

  • Review-вердикт 12-review.md: APPROVED (цикл 2, нет P0/P1/P2; только два P3-наблюдения).
  • Тесты прогнаны в worktree ветки задачи (не в общем /repos/orchestrator) — анти-гонка checkout.

Smoke API (read-only, prod 8500)

  • GET /health{"status":"ok","service":"orchestrator"}OK.
  • GET /status → активная задача 103 (ORCH-114, stage=testing) видна — OK.
  • GET /queue → блок serial_gate присутствует (ORCH-088), блок auto_labels присутствует (ORCH-089) — OK (смок-инвариант соблюдён).
  • Блок transition_lease в /queue прод-инстанса (8500) отсутствует — это ожидаемо, не регресс: новый код ORCH-114 живёт в ветке/worktree и ещё не задеплоен в прод (стадия testing предшествует deploy-staging/deploy). Наблюдаемость блока transition_lease покрыта unit-тестами TC-12 (test_tc12_queue_block_wired).

Результаты — покрытие каждого TC из 04-test-plan.yaml

TC ID Тип Описание (кратко) AC Результат
TC-01 integration ОБЯЗ. РЕГРЕСС: конкурентный вход в advance_stage(deploy-staging) — каждый side-effect ровно раз; красный до фикса, зелёный после AC-1 PASS
TC-02 unit CAS-запись стадии: первый writer rowcount=1, второй lost-race rowcount=0, без мутации AC-2 PASS
TC-03 unit Жизненный цикл владения: acquire/release в try/finally (норм + исключение), durable-видимость AC-3 PASS
TC-04 integration Reaper defer при живом владении за пределами Tier-2/deploy-staging; rowcount-guard сохранён AC-4 PASS
TC-05 unit/integration Reaper добивает мёртвое/устаревшее владение в Tier-3 backstop; бюджет-инвариант сохранён AC-5 PASS
TC-06 integration Умное восстановление при рестарте: сходимость к единственному исходу без повторного эффекта AC-6 PASS
TC-07 integration Reconciler F-1 defer/skip при активном lease; fail-safe консервативный skip AC-7 PASS
TC-08 integration Webhook-путь (Approved/Confirm Deploy) defer при активном lease; поздний сигнал не теряется AC-8 PASS
TC-09 integration Kill-switch off: lease инертен, CAS вырождается в безусловный write — байт-в-байт AC-9 PASS
TC-10 unit never-raise + fail-open (hot-path) / fail-closed (prod-safety) на ошибках БД/lease AC-10 PASS
TC-11 unit Структурный аудит: STAGE_TRANSITIONS/QG_CHECKS/check_*/вердикт-ключи байт-в-байт; хранилище аддитивно AC-11 PASS
TC-12 integration Наблюдаемость: блок /queue, Telegram-алерт на форсированный реклейм AC-12 PASS
TC-13 unit Self-hosting безопасность: нет рестарта прода / push в main / detached-вмешательства AC-13 PASS
TC-14 integration Полный регресс конвейера зелёный; happy-path deploy-staging/finalizer без двойных эффектов BR-8 PASS

Сопоставление с 03-acceptance-criteria.md: все 13 AC покрыты соответствующими TC (см. колонку AC). Каждый TC из 04-test-plan.yaml (TC-01…TC-14) выполнен и совпал с expected: PASS.

Детализация по dedicated-модулю tests/test_orch114_transition_ownership.py (34 теста, разбивка TC-01…TC-13 на под-кейсы) — все PASSED. TC-14 — полный регресс tests/.

Вывод pytest

Dedicated-модуль:

tests/test_orch114_transition_ownership.py — 34 passed, 1 warning in 3.84s

Полный регресс (TC-14 / AC-9 / CI-green):

2052 passed, 1 warning in 106.62s (0:01:46)

(единственный warning — PydanticDeprecatedSince20 в src/config.py:8, преждесуществующий, не связан с ORCH-114.)

Обязательный регресс класса ORCH-111 присутствует и зелёный: test_tc01_concurrent_entry_no_double_effect (PASS с lease) + test_tc01_red_before_fix_demonstration (демонстрация красного при kill-switch off).

Итог

PASS — полный pytest зелёный (2052 passed), все 14 TC выполнены и сопоставлены с 13 AC, smoke read-only (/health//status//queue c блоками serial_gate + auto_labels) OK. Задача готова к переходу на deploy-staging.