6.7 KiB
6.7 KiB
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.md — APPROVED. Прогнан полный регресс + 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 (stagetesting)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 passedtest_tracker_effort_time.py— 12 passedtest_tracker_status_line.py— 18 passedtest_tracker_bump.py+test_tracker_bump_default.py— 21 passedtest_launcher.py -k effort— 2 passed
Итог
PASS — все 1090 тестов зелёные, smoke API OK, все критерии приёмки выполнены, инварианты (never-raise, одна карточка, STAGE_TRANSITIONS/QG неизменны, BR-G6 свежий main без эрозии reconciler) соблюдены. Задача готова к стадии deploy-staging.