4.1 KiB
4.1 KiB
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"}— OKGET /status→ 200, валидный JSON (active_tasksприсутствует) — OKGET /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.