From c7bed448452d349fa59e8ccc6ee88ed16c6b6f13 Mon Sep 17 00:00:00 2001 From: claude-bot Date: Mon, 15 Jun 2026 23:01:03 +0300 Subject: [PATCH] analyst(ET): auto-commit from analyst run_id=723 --- docs/work-items/ORCH-118/01-brd.md | 30 +++++++++++++++---- docs/work-items/ORCH-118/02-trz.md | 19 ++++++++---- .../ORCH-118/03-acceptance-criteria.md | 16 ++++++++++ docs/work-items/ORCH-118/04-test-plan.yaml | 11 +++++-- 4 files changed, 63 insertions(+), 13 deletions(-) diff --git a/docs/work-items/ORCH-118/01-brd.md b/docs/work-items/ORCH-118/01-brd.md index f4d1773..13dc8ca 100644 --- a/docs/work-items/ORCH-118/01-brd.md +++ b/docs/work-items/ORCH-118/01-brd.md @@ -14,9 +14,27 @@ Work Item: **ORCH-118** · Repo: **orchestrator** · Стадия: analysis > ⚠️ **Inventory-first.** Это **зонтичная inventory/architecture-задача**, а НЕ реализация > детерминированных раннеров. Её результат — **карта** всех мест вызова LLM + классификация + > упорядоченный roadmap + нормативная политика использования LLM, защищённая структурными тестами. -> Реализация конкретных замен (tester — ORCH-115, deployer — ORCH-116 и др.) — **последующие +> Реализация конкретных замен (deployer — **ORCH-115**, tester — **ORCH-116** и др.) — **последующие > задачи**, запускаемые ПОСЛЕ утверждения карты. Их код в ORCH-118 **не вносится** (см. §2 «Вне объёма»). +> 📌 **Канонический маппинг follow-up'ов (источник истины — live Plane backlog).** Во всех +> артефактах ORCH-118 ID привязаны к ролям строго так — НЕ путать порядок: +> +> | Follow-up | Роль-кандидат | Класс замены (ожидаемый) | +> |-----------|---------------|--------------------------| +> | **ORCH-115** | **deployer** (детерминированный деплой/staging) | `replace-deterministic-now` / `replace-later-risky` | +> | **ORCH-116** | **tester** (детерминированный `pytest`+smoke) | `needs-hybrid-fallback` | +> +> Этот маппинг — нормативный для всего пакета (BRD/TRZ/AC/test-plan и будущего roadmap/ADR); +> анти-дрейф маппинга закреплён тест-кейсом **TC-11** (`04-test-plan.yaml`). Расхождение роль↔ID с +> этой таблицей = баг маршрутизации follow-up'ов (P1). + +> 🔁 **Revision R2 (2026-06-15).** Исправлен P1-блокер ревью: в R1 маппинг ORCH-115/ORCH-116 был +> **реверснут** (tester→115, deployer→116). Приведено к live backlog: **ORCH-115 = deployer**, +> **ORCH-116 = tester** во всех местах BRD/TRZ; добавлены канонический-маппинг-callout и анти-дрейф +> TC-11. Содержательная классификация ролей (deployer = replace-now, tester = hybrid) не менялась — +> сменились только привязанные ID. + --- ## 1. Бизнес-контекст и проблема @@ -65,10 +83,11 @@ ORCH-118 даёт **доказательную карту** «где LLM дей суждение») как durable-документ. - **BR-6** Структурные regression-тесты, **прибивающие инварианты карты к коду** (единственная точка запуска; детерминированные модули не несут запуска LLM; карта покрывает все промпты) — анти-дрейф. -- **BR-7** Явно позиционировать ORCH-115 (tester) и ORCH-116 (deployer) как **кандидаты-follow-up**. +- **BR-7** Явно позиционировать **ORCH-115 (deployer)** и **ORCH-116 (tester)** как **кандидаты-follow-up** + (канонический маппинг — врезка выше). ### Вне объёма -- ❌ **Реализация** детерминированных раннеров tester/deployer (ORCH-115/116) и любых других замен — +- ❌ **Реализация** детерминированных раннеров deployer (ORCH-115) / tester (ORCH-116) и любых других замен — это отдельные задачи ПОСЛЕ утверждения карты (явное требование заказчика в business request). - ❌ Изменение `STAGE_TRANSITIONS` / реестра `QG_CHECKS` / семантики и имён `check_*` / machine-verdict-ключей (`verdict:`/`result:`/`staging_status:`/`deploy_status:`/`security_status:`/ @@ -112,8 +131,9 @@ ORCH-118 даёт **доказательную карту** «где LLM дей единственная точка запуска LLM; перечисленные детерминированные модули/job-роли не несут запуска; карта перечисляет ровно те 6 промптов, что лежат в `.openclaw/agents/`; классификация покрывает все call-site'ы по одному разу. Тесты — offline (без сети/LLM/subprocess-к-модели). -- **BR-7 — Позиционирование follow-up'ов.** Карта/roadmap явно отмечают ORCH-115 (tester) и ORCH-116 - (deployer) как кандидаты-замены, **не** реализуемые в ORCH-118; их старт гейтится утверждением карты. +- **BR-7 — Позиционирование follow-up'ов.** Карта/roadmap явно отмечают **ORCH-115 (deployer)** и + **ORCH-116 (tester)** (канонический маппинг — врезка в шапке) как кандидаты-замены, **не** + реализуемые в ORCH-118; их старт гейтится утверждением карты. ## 5. Нефункциональные требования (NFR) diff --git a/docs/work-items/ORCH-118/02-trz.md b/docs/work-items/ORCH-118/02-trz.md index a2bd34a..3b7c12c 100644 --- a/docs/work-items/ORCH-118/02-trz.md +++ b/docs/work-items/ORCH-118/02-trz.md @@ -86,12 +86,17 @@ Work Item: **ORCH-118** · Repo: **orchestrator** · Стадия: analysis Каждому call-site присвоен **ровно один** класс. Ожидаемое (из инвентаризации; финальное решение фиксирует архитектор в ADR): `analyst/architect/developer/reviewer → keep-LLM`; -`tester → needs-hybrid-fallback` (детерминированный прогон `pytest`+smoke, LLM-суждение только на -маппинг TC↔критерии / триаж падений) — кандидат **ORCH-115**; `deployer → replace-deterministic-now` -или `replace-later/risky` (staging = exit-code-маппинг; прод self-hosting уже детерминирован Phase -A/B/C) — кандидат **ORCH-116**; `deploy-finalizer/post-deploy-monitor → already-deterministic` (вне +`deployer → replace-deterministic-now` или `replace-later/risky` (staging = exit-code-маппинг; прод +self-hosting уже детерминирован Phase A/B/C) — кандидат **ORCH-115**; `tester → needs-hybrid-fallback` +(детерминированный прогон `pytest`+smoke, LLM-суждение только на маппинг TC↔критерии / триаж падений) +— кандидат **ORCH-116**; `deploy-finalizer/post-deploy-monitor → already-deterministic` (вне таксономии замен, как эталон). +> 📌 **Канонический маппинг (источник — live Plane backlog, нормативно для всего пакета):** +> **ORCH-115 = deployer** (`replace-deterministic-now`/`replace-later-risky`), **ORCH-116 = tester** +> (`needs-hybrid-fallback`). НЕ путать порядок; анти-дрейф — TC-11 (`04-test-plan.yaml`). +> *(Revision R2: в R1 маппинг был реверснут — исправлено; содержательные классы ролей не менялись.)* + ### FR-3 — Подтверждение детерминизма не-агентских путей (BR-3) Карта отдельным разделом фиксирует, с `file:line`-доказательством, что НЕ вызывают LLM: маршрутизация (`advance_stage`/`STAGE_TRANSITIONS`), все `QG_CHECKS`/`check_*`, парсеры вердиктов @@ -124,10 +129,12 @@ keep vs replace (детерминируемость выхода, наличие без дублей/пропусков). - **(e)** `D1/D2` действительно перехватываются в `launch_job` **до** `_spawn` (детерминированы). -### FR-7 — Скоуп-гард (BR-7) +### FR-7 — Скоуп-гард + канонический маппинг (BR-7) ORCH-115/116 (и любые другие замены) **не реализуются** в ORCH-118. Карта/roadmap явно помечают их как кандидаты-follow-up, старт которых гейтится утверждением карты. Тест/диф не должны содержать новых -детерминированных раннеров tester/deployer. +детерминированных раннеров tester/deployer. **Маппинг роль↔ID — нормативный (источник: live Plane +backlog): ORCH-115 = deployer, ORCH-116 = tester** — одинаков во всех артефактах карты/roadmap/ADR; +анти-дрейф маппинга — структурный тест TC-11 (реверс делает тест красным). ## 4. Изменения API Нет. (Опциональная read-only наблюдаемость в `GET /queue`/`GET /metrics` — **вне скоупа** ORCH-118; diff --git a/docs/work-items/ORCH-118/03-acceptance-criteria.md b/docs/work-items/ORCH-118/03-acceptance-criteria.md index 5d11b9d..d589618 100644 --- a/docs/work-items/ORCH-118/03-acceptance-criteria.md +++ b/docs/work-items/ORCH-118/03-acceptance-criteria.md @@ -111,6 +111,21 @@ Work Item: **ORCH-118** · Repo: **orchestrator** · Стадия: analysis --- +## AC-9 — Канонический маппинг follow-up'ов (роль ↔ ID) корректен и пингуется тестом + +**Условие:** Во всех артефактах привязка роли к follow-up work item совпадает с live Plane backlog. +- **PASS:** Везде, где карта/BRD/TRZ/roadmap/ADR связывают роль с follow-up'ом, выполнено + **ORCH-115 = deployer** и **ORCH-116 = tester**; ни в одном месте нет обратной привязки + (tester→ORCH-115 / deployer→ORCH-116), в т.ч. в позиционных перечислениях вида «tester/deployer + (ORCH-115/116)»; структурный тест **TC-11** проверяет это и краснеет при реверсе. +- **FAIL:** Хотя бы одно место привязывает tester к ORCH-115 или deployer к ORCH-116; маппинг + неоднозначен/противоречив между документами; TC-11 отсутствует или не ловит реверс. + +> Контекст: это исправление **P1-блокера ревью R1** — в первой ревизии маппинг был реверснут. AC-9 + +> TC-11 закрывают класс ошибки на будущее (анти-дрейф), а не только текущий инцидент. + +--- + ## Сводная матрица AC ↔ FR/BR | AC | Покрывает | |----|-----------| @@ -122,3 +137,4 @@ Work Item: **ORCH-118** · Repo: **orchestrator** · Стадия: analysis | AC-6 | BR-6 / FR-6 | | AC-7 | BR-7 / FR-7 / NFR-1 / NFR-3 | | AC-8 | NFR-4 / правила агентов §2,§6 (golden-source) | +| AC-9 | BR-7 / FR-7 (канонический маппинг роль↔ID; анти-дрейф TC-11) | diff --git a/docs/work-items/ORCH-118/04-test-plan.yaml b/docs/work-items/ORCH-118/04-test-plan.yaml index 07ea2cb..06cc035 100644 --- a/docs/work-items/ORCH-118/04-test-plan.yaml +++ b/docs/work-items/ORCH-118/04-test-plan.yaml @@ -8,8 +8,9 @@ title: "LLM call-site inventory + classification + roadmap + usage policy (inven framework: pytest scope: > Покрываются СТРУКТУРНЫЕ инварианты карты вызовов LLM и анти-дрейф (FR-6), плюс скоуп-гард - (рантайм-контракты не тронуты, раннеры не реализованы). ВНЕ покрытия: реализация - детерминированных раннеров tester/deployer (ORCH-115/116) — отдельные follow-up задачи. + (рантайм-контракты не тронуты, раннеры не реализованы) и анти-дрейф канонического маппинга + follow-up'ов (TC-11). ВНЕ покрытия: реализация детерминированных раннеров deployer (ORCH-115) / + tester (ORCH-116) — отдельные follow-up задачи. notes: > Все тесты детерминированы и offline: без сети, без запуска LLM, без subprocess-к-модели. Имена файла теста и документов карты — примерные (финально решает архитектор); тест-кейсы @@ -78,3 +79,9 @@ tests: description: "Полный регресс tests/ остаётся зелёным (pytest tests/ -q) — инвентаризация и тесты не ломают существующий конвейер (NFR-1 / AC-6, AC-7)" module: tests/ expected: PASS + + - id: TC-11 + type: unit + description: "Анти-дрейф канонического маппинга follow-up'ов (источник — live Plane backlog): в карте/roadmap ORCH-115 привязан к роли deployer, ORCH-116 — к роли tester; реверс роль↔ID (например tester→ORCH-115 / deployer→ORCH-116) делает тест красным. Защищает от P1-блокера ревью R1 (FR-7 / BR-7 / AC-9)" + module: tests/test_llm_determinization_docs.py + expected: PASS