5.1 KiB
5.1 KiB
result, work_item, stage, author_agent, status, created_at, model_used, type, work_item_id
| result | work_item | stage | author_agent | status | created_at | model_used | type | work_item_id |
|---|---|---|---|---|---|---|---|---|
| PASS | ORCH-116 | testing | tester | pass | 2026-06-16 | claude-opus-4-8 | test-report | ORCH-116 |
Test Report — ORCH-116
Детерминированный test-раннер вместо LLM-тестера (стадия testing).
Окружение
- Python: 3.12.13
- pytest: 8.3.3 (plugins: cov-5.0.0, anyio-4.14.0, asyncio-0.23.8)
- Worktree:
/repos/_wt/orchestrator/feature_ORCH-116-orch-replace-llm-tester-with-d - Ветка:
feature/ORCH-116-orch-replace-llm-tester-with-d - Дата: 2026-06-16
Smoke API (read-only)
GET /health→{"status":"ok","service":"orchestrator"}— OKGET /status→ активные задачи отданы (ORCH-116 наtesting) — OKGET /queue→ отдан; блокserial_gateприсутствует (ORCH-088), блокauto_labelsприсутствует, блокtest_runnerприсутствует (ORCH-116 наблюдаемость) — OK
Результаты по тест-плану (04-test-plan.yaml)
| TC ID | Описание | Тест(ы) | Результат |
|---|---|---|---|
| TC-01 | applies(repo): kill-switch/скоуп/тест-контракт (BR-9), never-raise |
test_tc01_applies_killswitch_scope_and_contract, test_tc01_applies_never_raises |
PASS |
| TC-02 | Маппинг exit-кода 0→PASS / иначе/None→FAIL (fail-closed, единый контракт) | test_tc02_map_exit_code |
PASS |
| TC-03 | Рендер 13-test-report.md: result: UPPERCASE + 52c-схема + хвост stdout/smoke |
test_tc03_report_render_schema_and_status_alignment |
PASS |
| TC-04 | Артефакт читается неизменённым _parse_tests_verdict для PASS/FAIL |
test_tc04_gate_parser_unchanged, test_tc04_status_field_never_false_negatives_a_pass |
PASS |
| TC-05 | launch_job перехватывает tester-джоб до _spawn; agent_runs не создаётся, None |
test_tc05_launch_job_intercepts_before_spawn |
PASS |
| TC-06 | Дискриминатор: не-testing/не-tester/не-self не перехватываются; never-raise→False |
test_tc06_* (4 теста) |
PASS |
| TC-07 | PASS→advance(tester)→deploy-staging; FAIL→откат testing→development + retry |
test_tc07_advance_initiated_like_llm[0-PASS], [1-FAIL] |
PASS |
| TC-08 | Kill-switch test_runner_enabled=False → _spawn (LLM-путь байт-в-байт) |
test_tc08_killswitch_falls_back_to_spawn |
PASS |
| TC-09 | Анти-дрейф NFR-1: STAGE_TRANSITIONS/QG_CHECKS/check_tests_passed/токены/схема БД целы |
test_tc09_pipeline_contract_unchanged |
PASS |
| TC-10 | Two-level (анти-ORCH-110): tool-error→bounded DEFER; исчерпание→fail-closed FAIL+alert | test_tc10_nonzero_exit_is_fail_and_advances, test_tc10_timeout_defers_without_advance, test_tc10_tool_error_budget_exhausted_fails_closed |
PASS |
| TC-11 | never-raise/fail-safe: pytest-бросок/таймаут/worktree-ошибка → FAIL/DEFER, не клинит | test_tc11_run_gate_never_raises, test_tc11_launcher_contains_runner_fault |
PASS |
| TC-12 | Изоляция/таймаут: proc_group tree-kill в worktree; малформ→дефолт 900+WARNING | test_tc12_resolve_timeout_default_on_bad_value, test_tc12_pytest_runs_in_worktree_via_proc_group |
PASS |
| TC-13 | Self-hosting safety: нет опасных литералов; smoke строго read-only GET; push в фичеветку | test_tc13_* (5 тестов) |
PASS |
| TC-14 | Наблюдаемость+гибрид: блок test_runner в /queue; структурный лог; LLM вне control-path |
test_tc14_* (4 теста) |
PASS |
| TC-15 | Анти-дрейф LLM-карты: llm-call-sites/roadmap/policy зелёные после правок |
test_tc15_llm_map_anti_drift_green, test_llm_call_site_inventory.py, test_llm_determinization_docs.py |
PASS |
Каждый TC из 04-test-plan.yaml выполнен и сопоставлен с критериями 03-acceptance-criteria.md.
Вывод pytest
Полный регресс
$ python -m pytest tests/ -q --tb=short
........................................................................ [ 97%]
................................................. [100%]
2137 passed, 1 warning in 84.57s (0:01:24)
(единственный warning — несвязанный Pydantic V2 deprecation в src/config.py:8)
Тесты ORCH-116 (verbose)
$ python -m pytest tests/test_orch116_test_runner.py tests/test_llm_call_site_inventory.py tests/test_llm_determinization_docs.py -v
45 passed, 1 warning in 2.20s
Итог
PASS — полный регресс зелёный (2137 passed), smoke read-only OK (/health//status//queue,
блок serial_gate присутствует), все 15 TC выполнены и сопоставлены с критериями приёмки.
Задача переходит на deploy-staging.