From 1f0929838a136f8a25223e24dc05033f48cbeb93 Mon Sep 17 00:00:00 2001 From: claude-bot Date: Mon, 8 Jun 2026 16:27:04 +0300 Subject: [PATCH] tester(ET): auto-commit from tester run_id=384 --- docs/work-items/ORCH-073/13-test-report.md | 83 ++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 docs/work-items/ORCH-073/13-test-report.md diff --git a/docs/work-items/ORCH-073/13-test-report.md b/docs/work-items/ORCH-073/13-test-report.md new file mode 100644 index 0000000..e70cfbc --- /dev/null +++ b/docs/work-items/ORCH-073/13-test-report.md @@ -0,0 +1,83 @@ +--- +type: test-report +work_item_id: ORCH-073 +result: PASS +--- + +# Test Report — ORCH-073 + +CRIT: системный фикс эрозии `main` (фантомный merge ORCH-067/069) + восстановление кода. + +## Окружение +- Python: 3.12.13 +- pytest: 8.3.3 +- Дата: 2026-06-08 +- Worktree: `feature/ORCH-073-crit-main-orch-067-069` +- Prod health (8500): `{"status":"ok","service":"orchestrator"}` — контейнер не тронут + +## Smoke-тесты API (prod 8500, read-only) +| Endpoint | Результат | +|----------|-----------| +| `GET /health` | `{"status":"ok"}` — PASS | +| `GET /status` | active_tasks отдаётся, ORCH-073 на стадии `testing` — PASS | +| `GET /queue` | counts/reconcile/reaper/post_deploy снимок отдаётся, breaker `closed` — PASS | + +## Результаты по тест-плану (04-test-plan.yaml) + +| TC ID | Описание | Тест-функция | Результат | +|-------|----------|--------------|-----------| +| TC-01 | verify_merged_to_main: sha — предок main → True (AC-6) | test_tc01_true_when_sha_is_ancestor | PASS | +| TC-02 | sha НЕ в main + merged docs-PR → False (баг 067/069, AC-2) | test_tc02_false_when_sha_not_in_main_even_with_merged_docs_pr | PASS | +| TC-03 | пустой sha → False (fail-closed) | test_tc03_empty_sha_is_false | PASS | +| TC-04 | git error → False (never-raise, INV-1) | test_tc04_never_raises_on_git_error / _worktree_error | PASS | +| TC-05 | merged docs-PR не засчитан как code-merge (FR-2) | test_tc05_merged_docs_pr_not_counted | PASS | +| TC-06 | merged code-PR распознан (base=main, head=branch) | test_tc06_merged_code_pr_recognised / _onto_non_main_base_not_counted | PASS | +| TC-07 | HTTP-ошибка/не-200 → False (never-raise) | test_tc07_non_200_is_false / _http_exception_is_false | PASS | +| TC-08 | merge_pr выбирает code-PR, не docs/* (FR-3) | test_tc08_merges_code_pr_not_docs_pr / _skips_pr_onto_non_main_base | PASS | +| TC-09 | нет open code-PR → (False,...), без push main (INV-2) | test_tc09_no_open_pr_no_shell_out | PASS | +| TC-10 | merge_pr идемпотентен, без второго POST (AC-7/INV-4) | test_tc10_idempotent_already_merged | PASS | +| TC-11 | .gitattributes: CHANGELOG.md merge=union (AC-4) | test_tc11_gitattributes_declares_union | PASS | +| TC-12 | union-merge сохраняет обе записи Unreleased без конфликта | test_tc12_union_merge_keeps_both_entries | PASS | +| TC-13 | _handle_merge_verify: SHA в main + маркеры → advance (AC-6) | test_tc13_confirmed_and_intact_advances | PASS | +| TC-14 | docs-only merge → HOLD + alert, НЕ done (AC-3) | test_tc14_sha_not_in_main_holds | PASS | +| TC-15 | регресс-гард: маркер ранее-merged задачи пропал → HOLD + alert (AC-5) | test_tc15_marker_missing_holds | PASS | +| TC-16 | внутр. ошибка верификатора → HOLD + alert, never-raise (INV-1) | test_tc16_internal_error_holds_never_raises | PASS | +| TC-17 | conditionality: non-self/kill-switch → под-гейт no-op (AC-6/INV-5) | test_tc17_merge_verify_applies_scope / _under_gate_noop_for_non_self | PASS | +| TC-18 | регресс-гард уважает kill-switch / non-self → no-op (INV-5) | test_tc18_guard_kill_switch_skips_guard / _guard_noop_for_non_self_repo | PASS | +| TC-19 | полный pytest tests/ -q зелёный (AC-8) | весь набор tests/ | PASS | + +Все 19 TC из тест-плана покрыты (24 тест-функции в 6 файлах `tests/test_orch073_*.py`). + +## Проверка критериев приёмки (03-acceptance-criteria.md) + +| AC | Проверка | Результат | +|----|----------|-----------| +| AC-1 | Маркеры в origin/main: plane_issue_link=8, qg0_title_max=3, verify_merged_to_main=4 (все >0) | PASS | +| AC-2 | TC-02: sha не в main + merged docs-PR → False | PASS | +| AC-3 | TC-14: docs-only merge → HOLD + alert, НЕ done | PASS | +| AC-4 | `git check-attr merge CHANGELOG.md` → `merge: union`; TC-11/12 | PASS | +| AC-5 | TC-15: уменьшение набора маркеров → HOLD + alert «main regressed» | PASS | +| AC-6 | TC-01/13/17: happy-path done без ложного alert; enduro no-op | PASS | +| AC-7 | TC-10: re-drive слитой задачи → no-op, без второго merge | PASS | +| AC-8 | 941 passed; доки/ADR/CHANGELOG обновлены (см. 12-review) | PASS | +| AC-9 | G4-аудит в ADR-001 (root cause docs-only merge) — подтверждён reviewer | PASS | +| AC-10 | staging-проверка — стадия deploy-staging (вне scope tester) | — | +| AC-11 | merge только PR-API; прод-контейнер не падал в рамках тестов | PASS | + +## Вывод pytest + +``` +tests/ -q --tb=short: +........................................................................ [100%] +941 passed, 1 warning in 25.37s + +tests/test_orch073_*.py -v: +24 passed, 1 warning in 0.54s +``` +(1 warning — PydanticDeprecatedSince20 в src/config.py, не относится к ORCH-073, не блокирует.) + +## Итог +**PASS** — полный регресс зелёный (941 passed), все 24 теста ORCH-073 PASS, smoke API OK, +маркеры AC-1 присутствуют в `origin/main`, прод-контейнер не затронут. Задача готова к +переходу на стадию `deploy-staging` (где будет проверен AC-10 — воспроизведение «исправлено +навсегда» на двух задачах с правкой CHANGELOG).