From 6bbd530caaee969107eab285464bdd2e0e7d1215 Mon Sep 17 00:00:00 2001 From: claude-bot Date: Mon, 8 Jun 2026 05:14:35 +0000 Subject: [PATCH] tester(ET): auto-commit from tester run_id=351 --- docs/work-items/ORCH-068/13-test-report.md | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 docs/work-items/ORCH-068/13-test-report.md diff --git a/docs/work-items/ORCH-068/13-test-report.md b/docs/work-items/ORCH-068/13-test-report.md new file mode 100644 index 0000000..a576693 --- /dev/null +++ b/docs/work-items/ORCH-068/13-test-report.md @@ -0,0 +1,64 @@ +--- +type: test-report +work_item_id: ORCH-068 +result: PASS +--- + +# Test Report — ORCH-068 + +Фикс livelock reconciler F-2 (спам `_note_unblock` по синхронизированной +done-задаче) + связанный баг устаревшего `_STATES_CACHE`. + +## Окружение +- Python: 3.12.13 +- pytest: 8.3.3 (plugins: anyio-4.13.0, asyncio-0.23.8) +- Среда исполнения: worktree `feature/ORCH-068-bug-reconciler-livelock-unbloc` +- Prod health (8500): `{"status":"ok","service":"orchestrator"}` — OK (read-only smoke) +- Дата: 2026-06-08T05:13:59Z + +## Smoke test API (read-only, прод 8500 не трогался деструктивно) +| Endpoint | Результат | +|----------|-----------| +| `GET /health` | `{"status":"ok",...}` — OK | +| `GET /status` | 200, активные задачи отданы — OK | +| `GET /queue` | 200, counts + блок `reconcile` (enabled/plane_enabled/unblocked_total) — OK | + +## Результаты + +| TC ID | Описание | Тест | Результат | +|-------|----------|------|-----------| +| TC-01 | Синхронизированная done → тишина (AC-1, AC-7) | `test_tc01_synced_done_is_silent` | PASS | +| TC-02 | Терминал «схлопнут» с approved по UUID исключён (AC-2) | `test_tc02_terminal_aliased_to_approved_excluded` | PASS | +| TC-03 | Cancelled терминал исключён (AC-2) | `test_tc03_cancelled_excluded` | PASS | +| TC-04 | `_note_unblock` не вызван после no-op dispatch (AC-3) | `test_tc04_noop_dispatch_no_unblock` | PASS | +| TC-05 | Дедуп: 0 повторных уведомлений (AC-4) | `test_tc05_dedup_no_repeat_notification` | PASS | +| TC-06 | Легитимный approved → unblock ровно один раз (AC-5) | `test_tc06_legit_approved_unblock_once` | PASS | +| TC-07 | in_progress-старт и rejected-откат, каждый 1 unblock (AC-6) | `test_tc07_in_progress_start_and_rejected_each_one_unblock` | PASS | +| TC-08 | never-raise: изоляция ошибок (AC-8) | `test_tc08_never_raise_isolation` | PASS | +| TC-09 | Kill-switch'и F-2 (AC-9) | `test_tc09_kill_switches` | PASS | +| TC-10 | done→silence на enduro И orchestrator (headline-регресс, AC-1/AC-2) | `test_tc10_done_silent_on_all_projects` | PASS | +| TC-11 | Устаревший `_STATES_CACHE` self-heal по TTL (AC-12) | `test_tc11_stale_cache_refreshes_after_ttl` + accessor/zero-ttl тесты | PASS | +| TC-12 | Совместимость кэша по умолчанию + fallback (AC-13) | `test_tc12_enduro_uuids_unchanged`, `test_tc12_api_error_falls_back_to_defaults`, `test_tc12_stale_served_when_refresh_fails` | PASS | +| TC-13 | Полный прогон `pytest tests/` зелёный (AC-15) | весь набор | PASS | + +## Соответствие критериям приёмки +AC-1…AC-15 — все PASS. Целевые регресс-тесты (TC-01..TC-12) проходят; +полный набор без регрессий в reconciler / plane / qg / stage_engine / webhooks. + +## Вывод pytest + +### Целевые файлы (tests/test_reconciler_plane.py + tests/test_plane_states_cache.py) +``` +collected 26 items +... (все 26 PASSED, включая tc01..tc17 reconciler + tc11/tc12 cache) +======================== 26 passed, 1 warning in 0.82s ========================= +``` + +### Полный набор +``` +======================= 764 passed, 1 warning in 13.66s ======================== +``` +(1 warning — PydanticDeprecatedSince20 в src/config.py, не относится к ORCH-068, предсуществующий.) + +## Итог +PASS