fix(testing): reconcile ORCH-116 with merged ORCH-123 (ADR renumber, CHANGELOG, env parity)
Recovery from the merge-gate rebase-conflict bounce. The feature branch was rebased onto origin/main (which had merged ORCH-123). The single conflicting hunk — docs/architecture/README.md — was resolved during the rebase: kept ORCH-123's host-side staging-runner line AND the ORCH-116 test-runner bullet. This follow-up commit reconciles the remainder: - Renumber the global sweeping ADR adr-0049 -> adr-0050. ORCH-123 took adr-0049 (adr-0049-host-side-docker-execution-boundary.md) on main while ORCH-116 was in flight, so ORCH-116 yields to the merged task and moves to the next free number. Mechanical cross-reference reconciliation only (git mv + title + every test-runner reference across README/internals/CLAUDE/CHANGELOG/config.py + 06-adr/ADR-001 + 12-review). Main's adr-0049 host-side references are left byte-for-byte untouched. No design/verdict content was altered. - Restore the ORCH-116 CHANGELOG entry that the CHANGELOG auto-merge silently dropped (both ORCH-123 and ORCH-116 inserted at the same [Unreleased] anchor; git kept only ORCH-123). - Add the missing ORCH_TEST_RUNNER_* keys to .env.example (parity with the ORCH_STAGING_RUNNER_* block; ORCH-101 canon of start keys). Refs: ORCH-116 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -7,7 +7,7 @@ created_at: 2026-06-16
|
||||
model_used: claude-opus-4-8
|
||||
---
|
||||
|
||||
# adr-0049: Детерминированный test-раннер — второй реализованный срез determinization-roadmap (tester-гибрид)
|
||||
# adr-0050: Детерминированный test-раннер — второй реализованный срез determinization-roadmap (tester-гибрид)
|
||||
|
||||
> **Сквозной (cross-cutting) ADR.** Агрегирует решение ORCH-116, влияющее на **весь**
|
||||
> оркестратор: вводит новый компонент-leaf `src/test_runner.py`, снимает вторую avoidable
|
||||
@@ -109,7 +109,7 @@ LLM). Leaf `src/staging_runner.py` (зеркало `run_deploy_finalizer`) ис
|
||||
`self_deploy.map_exit_code_to_status`, пишет `15-staging-log.md` (тот же machine-key `staging_status:`)
|
||||
и вызывает существующий `advance_stage(finished_agent="deployer")` (см. §5). Так LLM-агент `deployer`
|
||||
на `deploy-staging` исчезает из happy-path; `STAGE_TRANSITIONS`/`QG_CHECKS`/схема БД не тронуты.
|
||||
**ORCH-116 ([adr-0049](adr/adr-0049-deterministic-test-runner.md)):** тем же паттерном (рядом с
|
||||
**ORCH-116 ([adr-0050](adr/adr-0050-deterministic-test-runner.md)):** тем же паттерном (рядом с
|
||||
ORCH-115) перехватывается джоб `tester` на стадии `testing` для in-scope репо с тест-контрактом
|
||||
(дискриминатор — роль `tester` **И** `tasks.stage == "testing"` **И** `test_runner.applies(repo)` под
|
||||
kill-switch `test_runner_enabled`, скоуп `test_runner_repos`, резолв `_has_test_contract`; пусто →
|
||||
|
||||
@@ -13,7 +13,7 @@ Work Item: **ORCH-116** — заменить LLM-агента `tester` на ст
|
||||
(self-hosting `orchestrator`) детерминированным test-раннером (второй срез
|
||||
determinization-roadmap, **rank 2 / tester-гибрид**).
|
||||
Стадия: **architecture**
|
||||
Сквозная регистрация: **`docs/architecture/adr/adr-0049-deterministic-test-runner.md`**
|
||||
Сквозная регистрация: **`docs/architecture/adr/adr-0050-deterministic-test-runner.md`**
|
||||
(решение кросс-каттинговое — вводит новый компонент-leaf `src/test_runner.py` и реализует
|
||||
второй срез determinization-roadmap; влияет на карту LLM-консультаций всего оркестратора).
|
||||
|
||||
@@ -459,7 +459,7 @@ LLM-консультации; политика соблюдена.
|
||||
- Тест-план: `docs/work-items/ORCH-116/04-test-plan.yaml`
|
||||
- Инфра: `docs/work-items/ORCH-116/07-infra-requirements.md`;
|
||||
Данные: `08-data-requirements.md`; Риски: `10-tech-risks.md`
|
||||
- Сквозной ADR: `docs/architecture/adr/adr-0049-deterministic-test-runner.md`
|
||||
- Сквозной ADR: `docs/architecture/adr/adr-0050-deterministic-test-runner.md`
|
||||
- Эталон реализации: `src/staging_runner.py` (ORCH-115),
|
||||
`docs/work-items/ORCH-115/06-adr/ADR-001-deterministic-staging-runner.md`
|
||||
- Сверено по коду: `src/agents/launcher.py:397/404/438`, `src/stages.py:17-18`,
|
||||
|
||||
@@ -23,7 +23,7 @@ leaf `src/test_runner.py`, перехватываемым в `launch_job` **до
|
||||
байт-в-байт: `src/stages.py`, `src/qg/checks.py`, `src/staging_runner.py`, `src/transition_lease.py`,
|
||||
`src/proc_group.py` — **не тронуты** (подтверждено `git diff --stat`); в `src/` изменены только
|
||||
`test_runner.py` (новый), `launcher.py`/`config.py`/`main.py` (аддитивно). Документация = golden
|
||||
source обновлена в том же PR (8 doc-файлов + CHANGELOG + ADR-001/adr-0049). Полный регресс
|
||||
source обновлена в том же PR (8 doc-файлов + CHANGELOG + ADR-001/adr-0050). Полный регресс
|
||||
**проверен лично**: `pytest tests/ -q` → **2137 passed**; ORCH-116 + LLM-анти-дрейф + system-docs →
|
||||
**74 passed**. **P0/P1/P2 findings отсутствуют → `APPROVED`.**
|
||||
|
||||
@@ -68,7 +68,7 @@ source обновлена в том же PR (8 doc-файлов + CHANGELOG + AD
|
||||
|
||||
### 2. Соответствие ADR — PASS
|
||||
|
||||
Реализация дословно следует ADR-001 (D1–D12) и сквозному adr-0049. Сверено критическое:
|
||||
Реализация дословно следует ADR-001 (D1–D12) и сквозному adr-0050. Сверено критическое:
|
||||
- **D6.1 (анти-коллизия 52c-`status:` ↔ `_parse_tests_verdict`)** — самая тонкая мина задачи.
|
||||
Сверено по **неизменённому** парсеру (`src/qg/checks.py:226-282`): он читает вердикт из ТРЁХ
|
||||
равноранговых полей `verdict:`/`status:`/`result:` c negative-token-priority. `build_test_report`
|
||||
@@ -124,7 +124,7 @@ source обновлена в том же PR (8 doc-файлов + CHANGELOG + AD
|
||||
fallback под выключенным флагом / для репо без контракта»; канон 52d (5 секций, ключ `result:`) цел.
|
||||
- **`CHANGELOG.md`** — развёрнутая запись `[Unreleased]`.
|
||||
- **ADR** заведён (`06-adr/ADR-001-deterministic-test-runner.md` + сквозной
|
||||
`adr/adr-0049-deterministic-test-runner.md`).
|
||||
`adr/adr-0050-deterministic-test-runner.md`).
|
||||
|
||||
Обзорные доки / README «Известные ограничения» (ORCH-079): раннер — **новая способность**, не
|
||||
закрытие документированного ограничения → дополнительных правок README не требуется.
|
||||
@@ -163,7 +163,7 @@ source обновлена в том же PR (8 doc-файлов + CHANGELOG + AD
|
||||
Обновлена в полном объёме в том же PR (см. ось 4): `CLAUDE.md`, `docs/architecture/README.md`,
|
||||
`internals.md`, `llm-call-sites.md`, `llm-determinization-roadmap.md`, `llm-usage-policy.md`,
|
||||
`docs/overview/{tech-pipeline,tech-agents,tech-quality-security}.md`, `.openclaw/agents/tester.md`,
|
||||
`CHANGELOG.md`, ADR-001 + сквозной adr-0049. Анти-дрейф-тесты документации
|
||||
`CHANGELOG.md`, ADR-001 + сквозной adr-0050. Анти-дрейф-тесты документации
|
||||
(`test_llm_call_site_inventory.py`, `test_llm_determinization_docs.py`, `test_system_docs.py`) —
|
||||
зелёные (лично прогнаны). Невыполненных требований к обновлению документации **нет**.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user