Files
orchestrator/docs/work-items/ORCH-086/04-test-plan.yaml

111 lines
5.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
work_item: ORCH-086
description: >
Терминал-скип и проброс state_uuid на пути F-1 реконсилятора.
Тесты добавляются в tests/test_reconciler.py (рядом с существующими TC-01..TC-21),
переиспользуя фикстуры fresh_db / silence_side_effects / _green_ci /
plane_state_not_blocked и спай send_telegram. Все тесты — pytest, оффлайн
(Plane/Telegram мокаются), детерминированные.
tests:
- id: TC-86-01
type: unit
description: >
AC-1 — задача enduro НЕ-done в БД, но терминальная в Plane (group=completed),
гейт зелёный: F-1 НЕ вызывает _note_unblock и НЕ шлёт Telegram (ни при тике,
ни на первом проходе свежего Reconciler).
module: tests/test_reconciler.py
expected: PASS
- id: TC-86-02
type: unit
description: >
AC-2 — терминал-скип инкрементирует skipped_terminal_total и НЕ вызывает
advance_if_gate_passed для терминальной задачи (advance_stage-спай не дёрнут).
module: tests/test_reconciler.py
expected: PASS
- id: TC-86-03
type: unit
description: >
AC-2/R1 — терминал-детект по ГРУППЕ статуса Plane (completed/cancelled)
срабатывает независимо от проекта (enduro и orchestrator): задача в группе
cancelled тоже скипается.
module: tests/test_reconciler.py
expected: PASS
- id: TC-86-04
type: unit
description: >
AC-2/R1 — fallback терминал-детекта при пустых groups: терминальность по
логическому ключу done/cancelled проекта. Пустой groups + state_uuid ==
states['done'] -> скип.
module: tests/test_reconciler.py
expected: PASS
- id: TC-86-05
type: unit
description: >
AC-2 — терминальность по стадии БД оркестратора: задача со stage='cancelled'
(не отсекается get_active_tasks_for_reconcile, которое фильтрует только 'done')
скипается, не доходит до _note_unblock.
module: tests/test_reconciler.py
expected: PASS
- id: TC-86-06
type: unit
description: >
AC-3 — F-1 вызывает _note_unblock С непустым state_uuid (3 аргумента) на
легитимном unblock; проверяется, что dedup сохраняет ключ issue_id->state_uuid.
module: tests/test_reconciler.py
expected: PASS
- id: TC-86-07
type: unit
description: >
AC-3 — повторный F-1-тик для того же issue+state_uuid подавляется dedup-guard:
deduped_total += 1, второго send_telegram нет.
module: tests/test_reconciler.py
expected: PASS
- id: TC-86-08
type: unit
description: >
AC-4 (анти-регресс) — НЕ-терминальная реально застрявшая задача (рабочий
Plane-статус, прошла grace, нет active-job, гейт зелёный) ПО-ПРЕЖНЕМУ
продвигается и шлёт РОВНО один Telegram; unblocked_total += 1.
module: tests/test_reconciler.py
expected: PASS
- id: TC-86-09
type: unit
description: >
AC-5 — never-raise: исключение в терминал-детекте / fetch_issue_state не
роняет тик (reconcile_gate_once завершается) и НЕ приводит к ложной отправке
Telegram (консервативно: при неопределённости терминальности не уведомляем).
module: tests/test_reconciler.py
expected: PASS
- id: TC-86-10
type: unit
description: >
AC-6 — регресс F-2: существующие TC F-2 (терминал-скип/dedup/счётчики
ORCH-068) остаются зелёными; форма status()/GET-queue не изменилась
(skipped_terminal_total, deduped_total, unblocked_total присутствуют).
module: tests/test_reconciler_plane.py
expected: PASS
- id: TC-86-11
type: unit
description: >
AC-6 — reconcile_skip_blocked_enabled=False (escape hatch Guard 2) НЕ
отключает терминал-скип TR-1: терминальная задача всё равно скипается.
module: tests/test_reconciler.py
expected: PASS
- id: TC-86-12
type: unit
description: >
Полный прогон регрессии пакета reconciler: pytest tests/test_reconciler.py
tests/test_reconciler_plane.py tests/test_config.py -q зелёный.
module: tests/test_reconciler.py
expected: PASS