Files
orchestrator/docs/work-items/ORCH-046/13-test-report.md
claude-bot be10becae2
All checks were successful
CI / test (push) Successful in 16s
CI / test (pull_request) Successful in 12s
tester(ET): auto-commit from tester run_id=143
2026-06-06 04:46:28 +00:00

5.2 KiB
Raw Blame History

type, work_item_id, result
type work_item_id result
test-report ORCH-046 PASS

Test Report — ORCH-046

Встраивание дословного must-fix текста findings reviewer/tester в task_desc при заворотах на development (новый модуль src/review_parse.py + две rollback-ветки src/stage_engine.py).

Окружение

  • Python: 3.12.13
  • pytest: 8.3.3 (asyncio mode=AUTO)
  • Ветка: feature/ORCH-046-stage-engine-pass-reviewer-tes
  • Дата: 2026-06-06

Результаты

TC ID Описание Покрывает Результат
TC-01 extract_review_findings возвращает дословный P0/P1 текст AC-1, AC-5 PASS
TC-02 extract_review_findings"" при только P2/P3 AC-5 PASS
TC-03 extract_review_findings"" для отсутствующего файла AC-4 PASS
TC-04 extract_review_findings"" для битого/без секции файла AC-4, AC-5 PASS
TC-05 extract_review_findings усекает длинный текст с маркером truncated AC-1 PASS
TC-06 extract_test_failures извлекает фрагмент тела (Вывод pytest/FAIL/Итог) AC-2, AC-5 PASS
TC-07 extract_test_failures"" для отсутствующего файла AC-4 PASS
TC-08 extract_test_failures"" для битого/пустого отчёта AC-4, AC-5 PASS
TC-09 reviewer REQUEST_CHANGES → task_desc содержит P0/P1 + ссылку AC-1, AC-3 PASS
TC-10 tester FAIL → task_desc содержит reason + фрагмент + ссылку AC-2, AC-3 PASS
TC-11 graceful fallback при отсутствующем/битом файле (обе ветки) AC-4, AC-3 PASS
TC-12 rollback/retry поведение неизменно (alert на 4-й заход, поля AdvanceResult) AC-6 PASS
TC-13 Реестр QG_CHECKS не изменён (snapshot), гейты нетронуты AC-7 PASS
TC-14 Полный регресс существующего набора зелёный AC-5, AC-6, AC-7 PASS

Сопоставление TC ↔ тесты:

  • TC-01..08 → tests/test_review_parse.py (TestExtractReviewFindings, TestExtractTestFailures), 14 кейсов, все PASS.
  • TC-09..12 → tests/test_stage_engine.py::TestRollbackTaskDescEmbedding, все PASS.
  • TC-13 → tests/test_qg_registry_snapshot.py (registry/callables/transitions snapshot), все PASS.
  • TC-14 → полный прогон pytest tests/461 passed.

Smoke test API (read-only, прод-инстанс не затронут)

Endpoint HTTP Ответ
GET /health 200 {"status":"ok","service":"orchestrator"}
GET /status 200 active_tasks включает task 37 (ORCH-046, stage=testing)
GET /queue 200 counts: queued=0, running=1, failed=0; breaker=closed; preflight_ok=true

curl в окружении отсутствует — smoke выполнен через urllib. Только GET-запросы, деструктивных операций над прод-контейнером не выполнялось (self-hosting safety).

Вывод pytest

============================= test session starts ==============================
platform linux -- Python 3.12.13, pytest-8.3.3, pluggy-1.6.0
rootdir: .../feature_ORCH-046-stage-engine-pass-reviewer-tes
configfile: pytest.ini
plugins: anyio-4.13.0, asyncio-0.23.8
asyncio: mode=Mode.AUTO
...
======================== 461 passed, 1 warning in 7.59s ========================

Прицельный прогон ORCH-046 (test_review_parse.py + test_stage_engine.py + test_qg_registry_snapshot.py): 53 passed.

Единственный warning — преэкзистентный PydanticDeprecatedSince20 в src/config.py (не связан с ORCH-046).

Покрытие критериев приёмки

AC Критерий Подтверждение Статус
AC-1 Дословные P0/P1 в task_desc TC-01, TC-09 PASS
AC-2 Причина тестера (reason + фрагмент) в task_desc TC-06, TC-10 PASS
AC-3 Ссылка на полный файл сохранена TC-09, TC-10, TC-11 PASS
AC-4 Парсер graceful (never-raise) TC-03, TC-04, TC-07, TC-08, TC-11 PASS
AC-5 Тесты зелёные + новые юнит-тесты TC-14 (461 passed) PASS
AC-6 Retry/rollback не изменены TC-12 PASS
AC-7 Out-of-scope не затронут TC-13 PASS
AC-8 Документация + ADR проверено reviewer (12-review.md, APPROVED) PASS

Итог

PASS — все 14 TC из тест-плана зелёные, полный регресс 461 passed, smoke API 200 по всем эндпоинтам, прод-инстанс здоров. Все критерии приёмки выполнены. Задача готова к стадии deploy-staging (8501) — обязательной страховке self-hosting перед прод-деплоем.