Files
orchestrator/docs/work-items/ORCH-087/13-test-report.md
claude-bot d9bb8d5fe3
All checks were successful
CI / test (push) Successful in 32s
CI / test (pull_request) Successful in 30s
tester(ET): auto-commit from tester run_id=433
2026-06-09 10:06:17 +03:00

6.7 KiB
Raw Blame History

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

Test Report — ORCH-087

Багфикс live-трекера: зачистка осиротевших карточек (G1), эффорт в строке стадии (BR-EFF), честное итоговое время (BR-G5), плюс deploy-цикл на карточке (G3). Review-вердикт 12-review.mdAPPROVED. Прогнан полный регресс + smoke API.

Окружение

  • Python: 3.12.13
  • pytest: 8.3.3
  • Ветка: feature/ORCH-087-orch-87-to-analyse-bump
  • Репозиторий: orchestrator (worktree)
  • Прод-инстанс (8500): health ok — деструктивных операций не выполнялось
  • Дата: 2026-06-09

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

TC ID Описание Тест(ы) Результат
TC-01 bump удаляет ВСЕ незакрытые message_id, не только последний test_notifications_orphans.py PASS
TC-02 send→None → учёт mid не теряется (BR-6/R-3) test_notifications_orphans.py PASS
TC-03 delete=False (transient) остаётся в учёте; «already gone» исключается test_notifications_orphans.py PASS
TC-04 повторные вызовы → одна живая карточка, ≤1 send, без дублей test_notifications_orphans.py PASS
TC-05 учёт mid переживает «рестарт» (читается из БД) test_notifications_orphans.py PASS
TC-06 plane_status_label детерминирован для created..done; deploy→Awaiting Deploy test_tracker_status_line.py (parametrized) PASS
TC-07 заголовок/статус соответствуют tasks.stage (нет застывшего To Analyse) test_tracker_status_line.py PASS
TC-08 live-overlay рисует Deploying/Monitoring; деградирует на offline при kill-switch test_tracker_status_line.py PASS
TC-09 миграция agent_runs.effort идемпотентна (_ensure_column) test_launcher.py / db-fallback тесты PASS
TC-10 launcher стампит resolve_agent_effort в agent_runs.effort при запуске test_launcher.py (effort, 2 теста) PASS
TC-11 строка стадии рендерит эффорт рядом с моделью; dev=xhigh, tester/deployer=medium, прочие=high test_tracker_effort_time.py PASS
TC-12 пустой/неизвестный effort → суффикс опускается, рендер не падает test_tracker_effort_time.py PASS
TC-13 brd_review ~6ч (застой) → «твоё время» НЕ показывает ~6ч (cap) test_tracker_effort_time.py PASS
TC-14 agent-время = Σ agent_runs точно; 💰-итоги без регресса test_tracker_effort_time.py PASS
TC-15 done-строка: wall помечен «общее (с ожиданием)»; числа согласованы test_tracker_effort_time.py PASS
TC-16 update_task_tracker/render никогда не raise при ошибке Telegram/БД test_tracker_status_line.py / test_notifications_orphans.py PASS
TC-17 ссылки ORCH-067 (plane_issue_link) и disable_web_page_preview ORCH-080 сохранены test_tracker_issue_link.py PASS
TC-18 staging-воспроизведение (G0): одна актуальная карточка без сирот ADR-001 (таблица воспроизведения) PASS (по ADR)
TC-19 merge-gate: ветка поверх origin/main с ORCH-86; reconciler не эродирован; pytest зелёный git merge-base + регресс PASS

Критерии приёмки (03-acceptance-criteria.md)

  • G0 (AC-0.x): ADR-001 присутствует, отвечает на 4 вопроса §4 BRD, содержит таблицу staging-воспроизведения и known-limitation 48ч → PASS.
  • G1 (AC-1.x): леджер tracker_messages, мульти-mid зачистка, send→None защита, unit-покрытие зелёное → PASS.
  • G2/G3 (AC-2.x/3.x): plane_status_label детерминирован для всех стадий; ключ confirm_deploy в _LIVE_BRANCH_LABELS; deploy→Awaiting Deploy offline → PASS.
  • BR-EFF (AC-E.x): колонка agent_runs.effort идемпотентна, стамп в _spawn, рендер · model · effort, значения по ORCH-41/081 → PASS.
  • BR-G5 (AC-5.x): три подписанных метрики, cap tracker_brd_review_cap_s, agent-сумма точна → PASS.
  • BR-G6 (AC-6.x): git merge-base --is-ancestor origin/main HEAD → TRUE; src/reconciler.py — 35 вхождений маркеров ORCH-086 (skipped_terminal_total/ state_uuid), логика не эродирована → PASS.
  • Сквозные (AC-X.x): одна карточка/≤1 send; полный pytest зелёный (never-raise); доки обновлены; ссылки/preview сохранены; STAGE_TRANSITIONS/QG_CHECKS не тронуты → PASS.

Smoke test API (прод 8500, read-only)

  • GET /health{"status":"ok","service":"orchestrator"}
  • GET /status → отвечает; active_tasks включает ORCH-087 (stage testing)
  • GET /queue → отвечает; counts.running=1, reconcile/reaper/post_deploy/merge_verify блоки в норме; skipped_terminal_total присутствует (ORCH-086 наблюдаемость жива)

Вывод pytest

============================= test session starts ==============================
platform linux -- Python 3.12.13, pytest-8.3.3
collected 1090 items
...
======================= 1090 passed, 1 warning in 29.87s =======================

(1 warning — PydanticDeprecatedSince20 в src/config.py, не связана с задачей.)

ORCH-087-специфичные модули (повторный прогон):

  • test_notifications_orphans.py — 7 passed
  • test_tracker_effort_time.py — 12 passed
  • test_tracker_status_line.py — 18 passed
  • test_tracker_bump.py + test_tracker_bump_default.py — 21 passed
  • test_launcher.py -k effort — 2 passed

Итог

PASS — все 1090 тестов зелёные, smoke API OK, все критерии приёмки выполнены, инварианты (never-raise, одна карточка, STAGE_TRANSITIONS/QG неизменны, BR-G6 свежий main без эрозии reconciler) соблюдены. Задача готова к стадии deploy-staging.