Files
orchestrator/docs/work-items/ORCH-086/13-test-report.md
claude-bot 9c19588bcd
All checks were successful
CI / test (push) Successful in 28s
CI / test (pull_request) Successful in 30s
tester(ET): auto-commit from tester run_id=424
2026-06-09 02:26:49 +03:00

4.1 KiB
Raw Blame History

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

Test Report — ORCH-086

Терминал-скип и проброс/dedup state_uuid на пути F-1 реконсилятора (закрытие F-1-пробела ORCH-068: ложное «ET-002 done разблокирована (потерян webhook)»).

Окружение

  • Python: 3.12.13
  • pytest: 8.3.3
  • Repo / ветка: orchestrator @ feature/ORCH-086-orch-86-reconciler-telegram-et (worktree)
  • Prod health (8500): {"status":"ok","service":"orchestrator"} — OK
  • Дата: 2026-06-09

Предусловия

  • Review-вердикт (12-review.md): APPROVED (P0/P1/P2 — нет).

Результаты

TC ID Описание Тест Результат
TC-86-01 AC-1 — терминальная enduro-задача (group=completed), зелёный гейт: нет _note_unblock/Telegram test_tc86_01_terminal_in_plane_not_unblocked PASS
TC-86-02 AC-2 — терминал-скип ++skipped_terminal_total, нет advance_if_gate_passed test_tc86_02_terminal_skip_counter_no_advance PASS
TC-86-03 AC-2/R1 — терминал по ГРУППЕ (cancelled), независимо от проекта test_tc86_03_terminal_by_group_cancelled PASS
TC-86-04 AC-2/R1 — fallback по логическому ключу done/cancelled при пустых groups test_tc86_04_terminal_fallback_logical_key_empty_groups PASS
TC-86-05 AC-2 — терминальность по стадии БД (stage='cancelled') test_tc86_05_terminal_by_db_stage_cancelled PASS
TC-86-06 AC-3 — легитимный unblock зовёт _note_unblock с непустым state_uuid test_tc86_06_legit_unblock_passes_state_uuid PASS
TC-86-07 AC-3 — повторный тик для того же issue+state_uuid подавлен dedup (++deduped_total) test_tc86_07_repeat_tick_deduped PASS
TC-86-08 AC-4 (анти-регресс) — реально застрявшая задача продвигается, ровно один Telegram, ++unblocked_total test_tc86_08_legit_unblock_still_notifies PASS
TC-86-09 AC-5 — never-raise: исключение в детекте не роняет тик и не шлёт ложного Telegram test_tc86_09_never_raise_no_false_notify PASS
TC-86-10 AC-6 — форма status()/GET /queue неизменна (счётчики на месте) test_tc86_10_status_shape_unchanged (test_reconciler_plane.py) PASS
TC-86-11 AC-6 — reconcile_skip_blocked_enabled=False НЕ отключает терминал-скип test_tc86_11_terminal_skip_independent_of_guard2_flag PASS
TC-86-12 Полный регресс пакета reconciler/config зелёный pytest tests/test_reconciler.py tests/test_reconciler_plane.py tests/test_config.py PASS

Smoke test API (prod 8500)

  • GET /health{"status":"ok","service":"orchestrator"} — OK
  • GET /status → 200, валидный JSON (active_tasks присутствует) — OK
  • GET /queue → 200, блок reconcile присутствует (enabled, unblocked_total, last_unblocked, interval) — OK

Вывод pytest

Полный прогон:

1069 passed, 1 warning in 26.16s

Целевой регресс-пакет (TC-86-12):

78 passed, 1 warning in 2.38s

(единственный warning — PydanticDeprecatedSince20 в src/config.py:5, не связан с задачей.)

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

  • AC-1 — TC-86-01 ✓
  • AC-2 — TC-86-02/03/04/05 ✓
  • AC-3 — TC-86-06/07 ✓
  • AC-4 — TC-86-08 ✓
  • AC-5 — TC-86-09 + зелёный полный прогон ✓
  • AC-6 — TC-86-10/11 + контракты (STAGE_TRANSITIONS/QG_CHECKS/схема БД/сигнатуры не тронуты) ✓

Итог

PASS — все 12 тест-кейсов PASS, полный регресс pytest tests/ зелёный (1069 passed), smoke API OK. Задача готова к переходу на стадию deploy-staging.