Files
orchestrator/docs/work-items/ORCH-113/13-test-report.md
claude-bot 7523b843a5
All checks were successful
CI / test (push) Successful in 4m41s
CI / test (pull_request) Successful in 4m1s
tester(ET): auto-commit from tester run_id=696
2026-06-15 13:08:41 +03:00

5.2 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-113 testing tester pass 2026-06-15 claude-opus-4-8 test-report ORCH-113

Test Report — ORCH-113

BUG: job-reaper не должен повторно запускать финализацию deploy-staging, пока жив исходный finalizer.

Окружение

  • Worktree: /repos/_wt/orchestrator/feature_ORCH-113-bug-job-reaper-must-not-re-run (ветка feature/ORCH-113-bug-job-reaper-must-not-re-run)
  • Python: 3.12.13
  • pytest: 8.3.3 (plugins: cov-5.0.0, anyio-4.13.0, asyncio-0.23.8)
  • Дата: 2026-06-15
  • Review verdict (12-review.md): APPROVED

Smoke API (read-only)

Endpoint Результат
GET /health {"status":"ok","service":"orchestrator"} — PASS
GET /status Отвечает; ORCH-113 (task 101) виден на стадии testing — PASS
GET /queue Блоки serial_gate (ORCH-088) и auto_labels (ORCH-089) присутствуют — PASS

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

Все TC реализованы в tests/test_orch113_reaper_finalizer_liveness.py (13 тест-функций на 8 TC).

TC ID Описание AC / FR Тест-функция Результат
TC-01 Живой finalizer на deploy-staging (exit=0, age≥grace) → reaper НЕ вызывает _gate_driven_advance/advance_stage, логирует defer AC-1/FR-1 test_tc01_live_finalizer_deploy_staging_not_reaped PASS
TC-02 Строгое владение: актор без владения НЕ исполняет merge-gate/re-test/advance (ноль побочных эффектов) AC-2/FR-2 test_tc02_non_owner_runs_no_edge_gates PASS
TC-03 Мёртвый finalizer → reaper по-прежнему добивает job (Tier-2 retry + Tier-3 backstop игнорирует маркер); reaper не no-op AC-3/FR-4 test_tc03_dead_finalizer_still_reaped_tier2, test_tc03_tier3_backstop_ignores_marker PASS
TC-04 Идемпотентность под гонкой: тяжёлый прогон edge-гейтов исполняется ровно один раз для (job, stage), нет второго re-test/ложного rollback AC-2/AC-4/FR-2/FR-5 test_tc04_idempotent_no_second_advance_under_race PASS
TC-05 ОБЯЗАТЕЛЬНЫЙ регресс ORCH-111: долгая (>grace) финализация при staging_status=SUCCESS → нет отката deploy-staging → development, нет ложного developer-retry; единственное консистентное состояние (красный до фикса, зелёный после) AC-4/FR-5 test_tc05_orch111_no_false_rollback_no_retry_increment PASS
TC-06 Регресс-гард совместимости: kill-switch off ИЛИ не-deploy-staging → поведение reaper байт-в-байт прежнее NFR-4/AC-5 test_tc06_killswitch_off_byte_for_byte_prior, test_tc06_non_deploy_staging_stage_not_consulted, test_tc06_within_grace_unchanged PASS
TC-07 Сквозной инвариант бюджета: reaper_max_running_s (5400) > Σ(deploy-staging gate-work) + grace (ORCH-065/109/110) NFR-6/AC-5 test_tc07_budget_invariant_preserved PASS
TC-08 never-raise: сбой пути живости/владения деградирует безопасно — reaper-тик не падает, прочие job обрабатываются NFR-1/NFR-3/AC-5 test_tc08_liveness_error_never_breaks_tick, test_tc08_reap_once_isolates_and_never_raises, test_tc08_finalizer_liveness_leaf_never_raises PASS

Сопоставление с 03-acceptance-criteria.md: AC-1…AC-6 покрыты (AC-1→TC-01, AC-2→TC-02/TC-04, AC-3→TC-03, AC-4→TC-04/TC-05, AC-5→TC-06/TC-07/TC-08, AC-6→полный зелёный прогон + TC-05 как регресс-доказательство). Каждый TC из тест-плана выполнен и сопоставлен.

Вывод pytest

Целевой файл:

tests/test_orch113_reaper_finalizer_liveness.py ... 13 passed, 1 warning in 3.60s

Полный регресс:

$ python -m pytest tests/ -q
........................................................................ [ 39%]
... (snip) ...
.........................................................                [100%]
2001 passed, 1 warning in 316.72s (0:05:16)

(единственный warning — PydanticDeprecatedSince20 в src/config.py:8, не относится к задаче, присутствует исторически)

Итог

PASS — целевой файл 13/13 PASS, полный регресс tests/ 2001 passed / 0 failed, smoke API (/health, /status, /queue с блоками serial_gate + auto_labels) зелёный, каждый TC тест-плана выполнен и сопоставлен с критериями приёмки. Задача переходит на deploy-staging.