From 37a28684f4b6eb3a2b1755bca7e1bcb49badb262 Mon Sep 17 00:00:00 2001 From: claude-bot Date: Tue, 9 Jun 2026 22:05:05 +0300 Subject: [PATCH] tester(ET): auto-commit from tester run_id=509 --- docs/work-items/ORCH-091/13-test-report.md | 98 ++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 docs/work-items/ORCH-091/13-test-report.md diff --git a/docs/work-items/ORCH-091/13-test-report.md b/docs/work-items/ORCH-091/13-test-report.md new file mode 100644 index 0000000..8f92ad4 --- /dev/null +++ b/docs/work-items/ORCH-091/13-test-report.md @@ -0,0 +1,98 @@ +--- +result: PASS # PASS | FAIL — машинный вердикт, UPPERCASE +work_item: ORCH-091 +stage: testing +author_agent: tester +status: pass +created_at: 2026-06-09 +model_used: claude-opus-4-8 +type: test-report +work_item_id: ORCH-091 +--- + +# Test Report — ORCH-091 + +BUG: заголовок-строка live-карточки трекера застревает на «To Analyse» на +`stage=deploy-staging` (нет ключа в `_STAGE_STATUS_LABEL`) + ложные `✅`-строки после +отката + занижение метрик строки стадии (последний прогон вместо суммы попыток). + +## Окружение +- Python: 3.12.13 +- pytest: 8.3.3 +- Worktree: `/repos/_wt/orchestrator/feature_ORCH-091-bug-to-analyse-stage-deploy-st` +- Ветка: `feature/ORCH-091-bug-to-analyse-stage-deploy-st` +- Дата: 2026-06-09 + +## Предусловия +- Вердикт reviewer (`12-review.md`): **APPROVED** (P0=0, P1=0) ✅ +- Тесты прогнаны из worktree ветки задачи (не из общего `/repos/orchestrator`) ✅ + +## Smoke API (read-only) +| Эндпоинт | Результат | +|----------|-----------| +| `GET /health` | `{"status":"ok","service":"orchestrator"}` — OK | +| `GET /status` | 200, активные задачи отдаются (ORCH-091 = `testing`) — OK | +| `GET /queue` | 200; блок `serial_gate` присутствует (ORCH-088) ✅; блок `auto_labels` присутствует (ORCH-089) ✅ | + +`serial_gate.per_repo.orchestrator.active_task = ORCH-091/testing`, регресс смока отсутствует. + +## Покрытие тест-плана (`04-test-plan.yaml`) ↔ критерии приёмки (`03-acceptance-criteria.md`) + +| TC ID | Описание | AC | Тест(ы) | Результат | +|-------|----------|----|---------|-----------| +| TC-01 | Полнота карты: каждый ключ `STAGE_TRANSITIONS` (программная итерация) → непустой лейбл ≠ «To Analyse» (кроме `created`) | AC-1 | `test_tracker_status_line::test_orch091_tc01_every_stage_has_meaningful_label[*]` (9 параметров) + `test_orch091_tc01_created_stays_to_analyse` | PASS | +| TC-02 | `stage='deploy-staging'` → осмысленный staging-лейбл ≠ «To Analyse» и ≠ лейбла `deploy` | AC-2 | `test_tracker_status_line::test_orch091_tc02_deploy_staging_label` | PASS | +| TC-03 | Неизвестная стадия (`__bogus__`) → нейтральный фолбэк (не «To Analyse»); never-raise на битом/None входе | AC-3 | `test_orch091_tc03_unknown_stage_neutral_not_to_analyse` + `test_orch091_tc03_cancelled_offline_label` + `test_tc09c_plane_status_label_never_raises` | PASS | +| TC-04 | Регресс ветвей `plane_status_label`: analysis+brd-clock→In Review; deploy→Awaiting Deploy; done→Done; created→To Analyse | AC-6 | `test_tracker_status_line::test_tc06_stage_to_plane_status[*]` (8) + `test_tc07_in_review_from_brd_clock` + `test_tc08_awaiting_deploy_offline` | PASS | +| TC-05 | Откат `deploy-staging→development`: Разработка активна (`🔄`), Тестирование/Внедрение НЕ `✅`; Анализ/Архитектура остаются `✅` | AC-4 | `test_tracker_rollback_metrics::test_tc05_rollback_suppresses_later_stage_checkmarks` + `test_tc05_forward_progress_keeps_earlier_checkmarks` + `test_tc05_deploy_staging_keeps_deployer_row` | PASS | +| TC-06 | Суммирование метрик: developer с 3 `agent_runs` (фикстура ORCH-069) → строка «Разработка» = Σ стоимости ≈ $3.98, Σ токенов, Σ времени | AC-5 | `test_tracker_rollback_metrics::test_tc06_stage_line_sums_all_developer_runs` | PASS | +| TC-07 | Сходимость тоталов карточки (💰/🔢/⏱ Агенты) с `SUM(agent_runs)` по `task_id` при ретраях | AC-5 | `test_tc07_totals_converge_with_sum_agent_runs` + `test_tc07_sum_of_stage_lines_equals_totals_on_done` | PASS | +| TC-08 | `render_task_tracker` never-raise: NULL timestamps / отсутствующий stage → строка-фолбэк без исключения | AC-7 / NFR-1 | `test_tc08_render_survives_null_timestamps_and_runs` + `test_tc08_render_survives_bogus_stage` | PASS | +| TC-09 | Регресс строк карточки: формат строк стадий, эффорт-суффикс (ORCH-087), «Подтверждение BRD», блок тоталов — без изменений | AC-6 | `test_telegram_tracker.py` + `test_tracker_effort_time.py` (эффорт по ролям, capped review-time, done-time labels) — все зелёные | PASS | + +Каждый TC из `04-test-plan.yaml` выполнен и сопоставлен с критериями `03-acceptance-criteria.md`. + +## Вывод pytest + +``` +$ cd /repos/_wt/orchestrator/feature_ORCH-091-bug-to-analyse-stage-deploy-st +$ pytest tests/ -v --tb=short + +tests/test_tracker_rollback_metrics.py::test_tc05_rollback_suppresses_later_stage_checkmarks PASSED +tests/test_tracker_rollback_metrics.py::test_tc05_forward_progress_keeps_earlier_checkmarks PASSED +tests/test_tracker_rollback_metrics.py::test_tc05_deploy_staging_keeps_deployer_row PASSED +tests/test_tracker_rollback_metrics.py::test_tc06_stage_line_sums_all_developer_runs PASSED +tests/test_tracker_rollback_metrics.py::test_tc07_totals_converge_with_sum_agent_runs PASSED +tests/test_tracker_rollback_metrics.py::test_tc07_sum_of_stage_lines_equals_totals_on_done PASSED +tests/test_tracker_rollback_metrics.py::test_tc08_render_survives_null_timestamps_and_runs PASSED +tests/test_tracker_rollback_metrics.py::test_tc08_render_survives_bogus_stage PASSED +tests/test_tracker_status_line.py::test_orch091_tc01_every_stage_has_meaningful_label[analysis] PASSED +tests/test_tracker_status_line.py::test_orch091_tc01_every_stage_has_meaningful_label[architecture] PASSED +tests/test_tracker_status_line.py::test_orch091_tc01_every_stage_has_meaningful_label[development] PASSED +tests/test_tracker_status_line.py::test_orch091_tc01_every_stage_has_meaningful_label[review] PASSED +tests/test_tracker_status_line.py::test_orch091_tc01_every_stage_has_meaningful_label[testing] PASSED +tests/test_tracker_status_line.py::test_orch091_tc01_every_stage_has_meaningful_label[deploy-staging] PASSED +tests/test_tracker_status_line.py::test_orch091_tc01_every_stage_has_meaningful_label[deploy] PASSED +tests/test_tracker_status_line.py::test_orch091_tc01_every_stage_has_meaningful_label[done] PASSED +tests/test_tracker_status_line.py::test_orch091_tc01_every_stage_has_meaningful_label[cancelled] PASSED +tests/test_tracker_status_line.py::test_orch091_tc01_created_stays_to_analyse PASSED +tests/test_tracker_status_line.py::test_orch091_tc02_deploy_staging_label PASSED +tests/test_tracker_status_line.py::test_orch091_tc03_unknown_stage_neutral_not_to_analyse PASSED +tests/test_tracker_status_line.py::test_orch091_tc03_cancelled_offline_label PASSED +... (полный набор регресса трекера/usage/webhooks/verdict-status зелёный) + +======================= 1370 passed, 1 warning in 39.33s ======================= +``` + +(1 warning — PydanticDeprecatedSince20 в `src/config.py:8`, преэкзистный, не связан с ORCH-091.) + +## Итог + +PASS + +- Все 1370 тестов зелёные; новые тесты ORCH-091 (TC-01…TC-08) присутствуют и проходят. +- Каждый TC из тест-плана выполнен и сопоставлен с AC-1…AC-7. +- Smoke read-only OK; блоки `serial_gate` и `auto_labels` присутствуют в `GET /queue` (без регресса). +- Изменение indication-only / never-раise; регресс существующих меток карточки (AC-6) подтверждён. + +**Вердикт: `result: PASS`** → задача переходит на `deploy-staging`.