4.0 KiB
4.0 KiB
type, work_item_id, result
| type | work_item_id | result |
|---|---|---|
| test-report | ORCH-060 | 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.