feat(testing): deterministic test-runner replacing LLM tester on the testing stage (ORCH-116) #142
Reference in New Issue
Block a user
Delete Branch "feature/ORCH-116-orch-replace-llm-tester-with-d"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
ORCH-116 — детерминированный test-раннер вместо LLM-тестера на
testingВторой реализованный срез determinization-roadmap (ORCH-118 A5,
needs-hybrid-fallback):на стадии
testingдля self-hostingorchestratorLLM-агентtesterзаменёндетерминированным кодом (
src/test_runner.py), перехватываемым вlaunch_jobдо_spawn(прецедент
deploy-finalizer/post-deploy-monitor/staging-runner).Что делает раннер
python -m pytest <test_runner_target>в worktree ветки черезproc_group(tree-kill, таймаут
test_runner_timeout_s=900) + опц. read-only smoke (/health//status//queue+ блокserial_gate; транзиент → ограниченный ретрай, не-200/нет блока → немедленный FAIL).self_deploy.map_exit_code_to_statusв токенахresult:(
0→PASS/иначе/None→FAIL; smoke-провал AND-ится вFAIL).13-test-report.md(author_agent: test-runner/model_used: n/a, 52c-схема; 52c-status:выровнен по вердикту — D6.1) + best-effort push в фичеветку; вызывает существующий
advance_stage(current_stage="testing", finished_agent="tester")— без новых рёбер/исходов.Инвариант (NFR-1)
Замена продюсера артефакта, не гейта: контракт
13-test-report.md, гейтcheck_tests_passed/_parse_tests_verdict,STAGE_TRANSITIONS, machine-verdictresult:,схема БД — байт-в-байт не тронуты. Аддитивно, под kill-switch, never-raise, fail-closed,
скоуп self-hosting.
Двухуровневый исход (анти-ORCH-110)
Сюита исполнилась → verdict→advance (FAIL → тот же откат
testing → development+ developer-retry).Сюита НЕ исполнилась (tool-error) → bounded DEFER (re-queue
tester-джоба + restart-safe маркер),на исчерпании
test_runner_infra_max_retries→ fail-closed FAIL + alert. Никогда тихий advance/ложный green; не жжёт developer-retry на транзиентной инфре.
Гибрид (BR-8/NFR-7)
LLM строго off-control-path — раннер единственный продюсер
result:; будущий триаж падений невыносит/не переопределяет вердикт и не добавляет ребро в
STAGE_TRANSITIONS(Phase 1 не реализован).Откат
ORCH_TEST_RUNNER_ENABLED=false→ наtestingснова LLM-testerчерез_spawnбайт-в-байт.Документация (ORCH-118 NFR-6, атомарно с кодом)
llm-call-sites.md(A5 реализован),llm-determinization-roadmap.md(rank 2 реализован, инвариант«ровно один
first_slice» цел),llm-usage-policy.md, README/internals/overview,tester.md,CLAUDE.md, CHANGELOG.md.
Тесты
tests/test_orch116_test_runner.py(TC-01…TC-14) + зелёные LLM-анти-дрейф тесты (TC-15).Полный регресс: 2137 passed.
ADR:
docs/work-items/ORCH-116/06-adr/ADR-001-deterministic-test-runner.md,сквозной
docs/architecture/adr/adr-0049-deterministic-test-runner.md.Refs: ORCH-116
🤖 Generated with Claude Code
d1d0fd4418to74fccf3a09