tester(ET): auto-commit from tester run_id=433
This commit is contained in:
88
docs/work-items/ORCH-087/13-test-report.md
Normal file
88
docs/work-items/ORCH-087/13-test-report.md
Normal file
@@ -0,0 +1,88 @@
|
||||
---
|
||||
type: test-report
|
||||
work_item_id: ORCH-087
|
||||
result: 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 (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.
|
||||
Reference in New Issue
Block a user