tester(ET): auto-commit from tester run_id=143
This commit is contained in:
92
docs/work-items/ORCH-046/13-test-report.md
Normal file
92
docs/work-items/ORCH-046/13-test-report.md
Normal file
@@ -0,0 +1,92 @@
|
||||
---
|
||||
type: test-report
|
||||
work_item_id: ORCH-046
|
||||
result: 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 перед прод-деплоем.
|
||||
Reference in New Issue
Block a user