diff --git a/docs/work-items/ORCH-118/13-test-report.md b/docs/work-items/ORCH-118/13-test-report.md new file mode 100644 index 0000000..7ed8fc2 --- /dev/null +++ b/docs/work-items/ORCH-118/13-test-report.md @@ -0,0 +1,80 @@ +--- +result: PASS +work_item: ORCH-118 +stage: testing +author_agent: tester +status: pass +created_at: 2026-06-16 +model_used: claude-opus-4-8 +type: test-report +work_item_id: ORCH-118 +--- + +# Test Report — ORCH-118 + +> Машинный вердикт читается ТОЛЬКО из `result:` во frontmatter. `PASS` → задача переходит на `deploy-staging`. + +## Окружение +- Python: 3.12.13 +- pytest: 8.3.3 (plugins: cov-5.0.0, anyio-4.13.0, asyncio-0.23.8) +- Worktree: `/repos/_wt/orchestrator/feature_ORCH-118-orch-replace-avoidable-llm-con` (ветка `feature/ORCH-118-orch-replace-avoidable-llm-con`) +- Дата: 2026-06-16 + +## Предусловия +- Review-вердикт (`12-review.md`): **APPROVED** (verdict читается из frontmatter). ✔ +- Скоуп ORCH-118 — inventory-first, docs + tests only: `git diff origin/main...HEAD -- src/` пусто (рантайм не тронут). + +## Smoke API (read-only) +- `GET /health` → `{"status":"ok","service":"orchestrator"}` ✔ +- `GET /status` → активная задача ORCH-118 на стадии `testing` ✔ +- `GET /queue` → присутствует блок `serial_gate` (ORCH-088: `orchestrator.active_task = ORCH-118/testing`, не frozen) ✔; присутствует блок `auto_labels` ✔; breaker `closed`, preflight OK. Смок-регресса нет. + +## Результаты (покрытие 04-test-plan.yaml → 03-acceptance-criteria.md) + +| TC ID | Описание | AC | Результат | +|-------|----------|----|-----------| +| TC-01 | Единственный ТРАНСПОРТ LLM-консультации = `launcher._spawn` (CLAUDE_BIN + `--system-prompt` + Popen) | AC-1/AC-6a | PASS | +| TC-02 | Детерминированные leaf-модули не консультируют LLM (дискриминатор «консультирует LLM», не «спавнит subprocess») | AC-3/AC-6b | PASS | +| TC-03 | Анти-дрейф промптов: карта ↔ `.openclaw/agents/` (6 файлов, двусторонняя сверка) | AC-1/AC-6c | PASS | +| TC-04 | Тотальность классификации (4 класса) + согласованность с осью C/P | AC-2/AC-6d | PASS | +| TC-05 | keep-LLM требует названного суждения; C-keep (reviewer) фиксирует не-деривируемость | AC-2 | PASS | +| TC-06 | Capability ≠ consultation: deploy-finalizer/post-deploy-monitor перехвачены до `_spawn` | AC-3/AC-6e | PASS | +| TC-07 | Полнота roadmap + ровно один `first_slice=yes` (deployer) | AC-4 | PASS | +| TC-08 | Политика LLM нормативна + определение «avoidable LLM control path» | AC-5/AC-10 | PASS | +| TC-09 | Скоуп-гард: снимок ролей `STAGE_TRANSITIONS` и имён `QG_CHECKS` не изменился | AC-7 | PASS | +| TC-10 | Полный регресс `pytest tests/ -q` зелёный | AC-6/AC-7 | PASS (2081 passed) | +| TC-11 | Анти-фабрикация follow-up Plane-ID (кандидаты по роли) | AC-9 | PASS | +| TC-12 | Отсутствие иного LLM-транспорта (нет anthropic/openai SDK, прямого HTTP, второго model-subprocess) | AC-1/AC-6f | PASS | +| TC-13 | Control-path-ось C/P согласована с фактическим потребителем в `src/qg/checks.py` | AC-10/AC-6g | PASS | +| TC-14 | Avoidable-набор зафиксирован = {tester, deployer}; reviewer=C-keep; analyst/architect/developer=P | AC-10/AC-6h | PASS | + +Все 14 TC выполнены и сопоставлены с критериями приёмки. Пропусков нет. + +## Вывод pytest + +Целевые тесты ORCH-118: +``` +tests/test_llm_call_site_inventory.py::test_tc01_single_llm_transport PASSED +tests/test_llm_call_site_inventory.py::test_tc12_no_alternative_llm_transport PASSED +tests/test_llm_call_site_inventory.py::test_tc02_deterministic_modules_no_llm_consultation PASSED +tests/test_llm_call_site_inventory.py::test_tc03_prompt_files_match_map PASSED +tests/test_llm_call_site_inventory.py::test_tc04_classification_total_and_axis_consistent PASSED +tests/test_llm_call_site_inventory.py::test_tc05_keep_llm_named_judgment PASSED +tests/test_llm_call_site_inventory.py::test_tc06_capability_not_consultation PASSED +tests/test_llm_call_site_inventory.py::test_tc09_runtime_contract_snapshot PASSED +tests/test_llm_call_site_inventory.py::test_tc13_control_path_axis_correct PASSED +tests/test_llm_call_site_inventory.py::test_tc14_avoidable_set_fixed PASSED +tests/test_llm_determinization_docs.py::test_tc07_roadmap_completeness_and_first_slice PASSED +tests/test_llm_determinization_docs.py::test_tc08_policy_normative_and_defines_avoidable PASSED +tests/test_llm_determinization_docs.py::test_tc11_no_fabricated_followup_ids PASSED +======================== 13 passed, 1 warning in 0.41s ========================= +``` + +Полный регресс (TC-10): +``` +2081 passed, 1 warning in 89.94s (0:01:29) +``` +(Единственный warning — PydanticDeprecatedSince20 в `src/config.py:8`, предсуществующий, не связан с ORCH-118.) + +## Итог +**PASS** — все 14 тест-кейсов зелёные, полный регресс `tests/` зелёный (2081 passed), smoke API (`/health`, `/status`, `/queue` с блоками `serial_gate` + `auto_labels`) — без регресса. Задача готова к переходу на `deploy-staging`.