--- 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`.