From 829b914ff71f5943e5ffaf3393ea044fb2b98abf Mon Sep 17 00:00:00 2001 From: claude-bot Date: Sun, 7 Jun 2026 11:54:59 +0000 Subject: [PATCH] tester(ET): auto-commit from tester run_id=292 --- docs/work-items/ORCH-060/13-test-report.md | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 docs/work-items/ORCH-060/13-test-report.md diff --git a/docs/work-items/ORCH-060/13-test-report.md b/docs/work-items/ORCH-060/13-test-report.md new file mode 100644 index 0000000..b063fb9 --- /dev/null +++ b/docs/work-items/ORCH-060/13-test-report.md @@ -0,0 +1,72 @@ +--- +type: test-report +work_item_id: ORCH-060 +result: PASS +--- + +# Test Report — ORCH-060 + +Reconciler F-1 пропускает escalated (retry ≥ MAX_DEVELOPER_RETRIES) и явно +Blocked / Needs-Input задачи; happy-path и no-spam сохранены. + +## Окружение +- Python: 3.12.13 +- pytest: 8.3.3 (plugins: anyio-4.13.0, asyncio-0.23.8) +- Ветка: `feature/ORCH-060-reconciler-escalated-max-retri` @ `55e5e96` + (фикс: `4db8276 fix(reconciler): skip escalated / Blocked / Needs-Input tasks in F-1`) +- Дата: 2026-06-07 +- Review verdict: APPROVED (`12-review.md`) + +## Smoke test API (прод 8500, read-only) +> `curl` отсутствует в окружении тестера — проверка выполнена через `python urllib`. +> Прод-контейнер НЕ перезапускался / не ронялся (self-hosting, CLAUDE.md §⚠️). + +| Endpoint | HTTP | Ответ | +|----------|------|-------| +| `GET /health` | 200 | `{"status":"ok","service":"orchestrator"}` | +| `GET /status` | 200 | активные задачи отданы (в т.ч. ORCH-060 stage=testing) | +| `GET /queue` | 200 | counts/resilience/reconcile-блок отданы | + +## Результаты (test-plan 04-test-plan.yaml → AC) + +| TC ID | AC | Описание | Тест | Результат | +|-------|-----|----------|------|-----------| +| TC-01 | AC-1 | escalated == MAX_DEVELOPER_RETRIES при зелёном CI → skip | `test_tc060_01_escalated_at_limit_skipped` | PASS | +| TC-02 | AC-2 | dev-ранов > MAX → skip | `test_tc060_02_over_limit_skipped` | PASS | +| TC-03 | AC-3 | регресс happy-path: retry < MAX → advance dev→review | `test_tc060_03_under_limit_still_advances` | PASS | +| TC-04 | AC-4 | граница: ровно MAX skip, MAX−1 advance (ровно одна) | `test_tc060_04_boundary_exactly_one_advances` | PASS | +| TC-05 | AC-5 | Plane-статус Blocked → skip | `test_tc060_05_blocked_skipped` | PASS | +| TC-06 | AC-6 | Plane-статус Needs Input → skip | `test_tc060_06_needs_input_skipped` | PASS | +| TC-07 | AC-7 | no spam на escalated (нет _note_unblock/telegram/qg-fail) | `test_tc060_07_escalated_no_spam` | PASS | +| TC-08 | AC-8 | escalated → мок check_ci_green НЕ вызван (skip раньше гейта) | `test_tc060_08_no_gate_call_on_escalated` | PASS | +| TC-09 | AC-9 | регресс F-2: Blocked/Needs Input не доигрывается | `test_tc060_09_f2_does_not_replay_blocked` | PASS | +| TC-10 | AC-10 | never-raise: ошибка guard2 изолирована, сосед обработан | `test_tc060_10_guard2_never_raise` | PASS | +| TC-11 | AC-11 | граница из stage_engine.MAX_DEVELOPER_RETRIES (нет хардкода 3) | `test_tc060_11_limit_from_constant` | PASS | +| — | — | под-флаг `reconcile_skip_blocked_enabled` гасит только guard2 | `test_tc060_subflag_disables_only_guard2` | PASS | +| TC-12 | AC-13 | регресс: полный прогон test_reconciler.py (ORCH-053 кейсы) | `tests/test_reconciler.py` (27 passed) | PASS | +| — | AC-12 | документация (README/ADR/CHANGELOG) — проверено reviewer'ом | — | PASS | + +## Вывод pytest + +Полный регресс: +``` +$ python -m pytest tests/ -q +........................................................................ [ 11%] +... (644 dots) ... +.................................................................... [100%] +644 passed, 1 warning in 15.65s +``` + +Целевой модуль: +``` +$ python -m pytest tests/test_reconciler.py -v +... +27 passed, 1 warning in 1.23s +``` +(1 warning — PydanticDeprecatedSince20 в `src/config.py:4`, не связано с ORCH-060, +существующий технический долг.) + +## Итог +**PASS** — все 13 критериев приёмки покрыты и зелёные, полный регресс 644/644, +целевой модуль 27/27, smoke API 3/3. Регрессий нет. Задача готова к стадии +deploy-staging.