diff --git a/docs/work-items/ORCH-092/13-test-report.md b/docs/work-items/ORCH-092/13-test-report.md new file mode 100644 index 0000000..b3b139a --- /dev/null +++ b/docs/work-items/ORCH-092/13-test-report.md @@ -0,0 +1,67 @@ +--- +result: PASS +work_item: ORCH-092 +stage: testing +author_agent: tester +status: pass +created_at: 2026-06-09 +model_used: claude-opus-4-8 +type: test-report +work_item_id: ORCH-092 +--- + +# Test Report — ORCH-092 — Промпт-аудит 6 агентов + +## Окружение +- Python: 3.12.13 +- pytest: 8.3.3 +- Worktree: `/repos/_wt/orchestrator/feature_ORCH-092-6-escalation` (ветка `feature/ORCH-092-6-escalation`) +- Дата: 2026-06-09 +- Review-вердикт (`12-review.md`): **APPROVED** — предусловие стадии выполнено. + +## Команды +``` +cd /repos/_wt/orchestrator/feature_ORCH-092-6-escalation && python -m pytest tests/ -q +python -m pytest tests/test_agent_prompts_canon.py tests/test_agent_frontmatter_no_model.py -q +curl -s http://localhost:8500/health → {"status":"ok","service":"orchestrator"} +curl -s http://localhost:8500/status → 200 OK (active_tasks[0] = ORCH-092/testing) +curl -s http://localhost:8500/queue → serial_gate present: True · auto_labels present: True +git diff --stat main -- src/ → пусто (src/ не тронут, docs/prompts-only) +``` + +## Результаты по тест-плану (`04-test-plan.yaml` ↔ `03-acceptance-criteria.md`) + +| TC ID | AC | Описание | Покрывающий тест | Результат | +|-------|----|----------|------------------|-----------| +| TC-01 | AC-1 | `created_at: ` плейсхолдер во всех 6 промптах + инструкция «не копируй буквально» | `test_orch092_created_at_is_placeholder_not_literal` | PASS | +| TC-02 | AC-2 | `model_used: ` плейсхолдер; нет литерала `claude-opus-4-8` в копируемом блоке | `test_orch092_model_used_is_placeholder_not_literal` | PASS | +| TC-03 | AC-3 | каждое имя `check_*` в 6 промптах присутствует ключом в `QG_CHECKS` (импорт `src.qg.checks`) | `test_orch092_gate_names_match_qg_registry` | PASS | +| TC-04 | AC-4 | developer: «разбивай на меньшие PR» удалено → эскалация; маркер «свой PR» сохранён | `test_orch092_developer_pr_oversize_is_escalation_not_split` | PASS | +| TC-05 | AC-5 | `` у developer/reviewer/tester после ``; маршруты ролеспецифичны | `test_orch092_escalation_section_present_after_success` + `..._routes_are_role_specific` | PASS | +| TC-06 | AC-7 | tester: worktree-путь, smoke `serial_gate` в `/queue`, покрытие ТЗ; маркеры pytest//health//status//queue целы | `test_orch092_tester_enriched` | PASS | +| TC-07 | AC-6 | deployer: видная рамка запрета рестарта прод-8500; маркеры `docker exec orchestrator-staging`/`pr_already_merged`/`8500`/`INFRA-WAIVED` целы | `test_orch092_deployer_prominent_ban_frame` | PASS | +| TC-08 | AC-8 | reviewer: «того же экземпляра Developer» удалена; живые маркеры (`REQUEST_CHANGES`/«НЕ обновлена»/`TRACEABILITY.md`/`Известные ограничения`/`ORCH-079`) целы | `test_orch092_reviewer_dead_line_removed` | PASS | +| TC-09 | AC-9 | verdict-ключи байт-в-байт + 5 XML-секций в порядке + 6 полей 52c во всех 6 промптах | `test_machine_verdict_keys_preserved_exact_case` + `test_five_xml_sections_present` + `test_six_schema_field_names_present` | PASS | +| TC-10 | AC-9 | верхний frontmatter определения агента валиден, без ключа `model:` | `tests/test_agent_frontmatter_no_model.py` | PASS | +| TC-11 | AC-9/AC-10 | полный регресс `pytest tests/ -q` зелёный; `git diff` не содержит правок `src/` | `tests/` (1278 passed) + `git diff --stat main -- src/` пуст | PASS | + +**Итог покрытия:** все 11 TC выполнены и сопоставлены с критериями приёмки AC-1…AC-10. Несопоставленных TC нет. + +## Smoke API (read-only) +- `GET /health` → `{"status":"ok","service":"orchestrator"}` — OK. +- `GET /status` → 200; активная задача `ORCH-092` на стадии `testing`. +- `GET /queue` → 200; блок **`serial_gate` присутствует** (ORCH-088, анти-регресс смока пройден), блок `auto_labels` присутствует (ORCH-089). + +## Вывод pytest +``` +tests/test_agent_prompts_canon.py tests/test_agent_frontmatter_no_model.py — 75 passed in 0.45s + +tests/ (полный регресс): +........................................................................ [ 95%] +...................................................... [100%] +1278 passed, 1 warning in 35.24s +``` +> Единственный warning — `PydanticDeprecatedSince20` (class-based config в `src/config.py`), предсуществующий, не относится к ORCH-092, на результат не влияет. + +## Итог +**PASS** — полный регресс (1278 passed) и целевые анти-регресс-тесты (75 passed) зелёные; smoke `/health`/`/status`/`/queue` (включая блок `serial_gate`) — OK; `src/` не тронут (docs/prompts-only). Каждый TC из `04-test-plan.yaml` выполнен и сопоставлен с `03-acceptance-criteria.md`. Задача готова к переходу на `deploy-staging`.