Files
orchestrator/docs/work-items/ORCH-087/04-test-plan.yaml
claude-bot 1d6c7663a4
All checks were successful
CI / test (push) Successful in 27s
analyst(ET): auto-commit from analyst run_id=420
2026-06-09 01:54:24 +03:00

116 lines
5.6 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-087
description: >
Тест-план для anti-orphan bump-зачистки live-трекера, корректности заголовка/deploy-статусов
и эффорта в строке стадии. Все тесты автономны (Telegram-примитивы мокаются monkeypatch'ем,
как в существующих tests/test_tracker_bump*.py). Контракт never-raise проверяется явно.
tests:
# --- G1: anti-orphan bump ------------------------------------------------
- id: TC-01
type: unit
description: >
bump: успешный send нового сообщения помечает старые незакрытые карточки на удаление и
delete_telegram вызывается для каждого ранее созданного, не удалённого message_id (sweep).
module: tests/test_tracker_orphan_sweep.py
expected: PASS
- id: TC-02
type: unit
description: >
bump: send вернул None (нет креды/transient) -> tracker_message_id НЕ обнуляется,
реестр прежних message_id не теряется, дубликата не создано (<=1 send за вызов).
module: tests/test_tracker_orphan_sweep.py
expected: PASS
- id: TC-03
type: unit
description: >
Симуляция рассинхрона "рестарт между delete и send": в реестре остаётся незакрытый старый
mid; следующий update_task_tracker подчищает его (delete вызван) -> сироты не накапливаются.
module: tests/test_tracker_orphan_sweep.py
expected: PASS
- id: TC-04
type: unit
description: >
delete старше 48ч (Telegram "message can't be deleted", _DELETE_GONE_MARKERS) -> запись
помечается обработанной (deleted=1), без падения, без бесконечных повторов.
module: tests/test_tracker_orphan_sweep.py
expected: PASS
- id: TC-05
type: unit
description: >
never-raise: delete и send оба бросают/возвращают ошибку -> update_task_tracker не поднимает
исключение; карточка отправляется с disable_notification=True и disable_web_page_preview=True.
module: tests/test_tracker_orphan_sweep.py
expected: PASS
- id: TC-06
type: unit
description: >
Инвариант "одна карточка": за один update_task_tracker отправляется не более одного нового
сообщения; после успешного цикла в реестре ровно один live (deleted=0) message_id.
module: tests/test_tracker_orphan_sweep.py
expected: PASS
# --- G2/G3: заголовок и deploy-статусы -----------------------------------
- id: TC-07
type: unit
description: >
Регресс: при смене tasks.stage статус-строка карточки меняется (created->To Analyse,
analysis->Analysis, deploy->Awaiting Deploy, done->Done); НЕ застывает на To Analyse.
module: tests/test_tracker_status_line.py
expected: PASS
- id: TC-08
type: unit
description: >
plane_status_label покрывает весь deploy-цикл offline: stage=deploy -> "Awaiting Deploy",
stage=done -> "Done"; live-overlay маппит deploying/monitoring/confirm на свои лейблы.
module: tests/test_tracker_status_line.py
expected: PASS
# --- G4: эффорт в строке стадии ------------------------------------------
- id: TC-09
type: unit
description: >
Миграция agent_runs.effort идемпотентна: повторный init_db не падает, колонка присутствует,
существующие колонки/данные не затронуты.
module: tests/test_db_effort_column.py
expected: PASS
- id: TC-10
type: unit
description: >
_spawn стампит фактически применённый effort в agent_runs (то, что ушло в --effort), без
повторного resolve на рендере; пустой effort (omit) -> NULL/"" без падения.
module: tests/test_launcher.py
expected: PASS
- id: TC-11
type: unit
description: >
render_task_tracker: строка стадии показывает эффорт рядом с моделью в компактном формате;
developer-строка -> xhigh, tester/deployer -> medium (по данным agent_runs.effort).
module: tests/test_tracker_effort_line.py
expected: PASS
- id: TC-12
type: unit
description: >
Деградация: agent_runs.effort NULL/пусто -> строка рендерится без эффорт-суффикса (как при
пустой модели), без вывода "None" и без падения.
module: tests/test_tracker_effort_line.py
expected: PASS
# --- Сквозное -------------------------------------------------------------
- id: TC-13
type: integration
description: >
Полный жизненный цикл задачи (created->done) через update_task_tracker на каждой стадии:
в конце ровно одна live-карточка с финальным статусом "Done", сирот нет, never-raise.
module: tests/test_tracker_lifecycle.py
expected: PASS
</content>