5.2 KiB
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 перед прод-деплоем.