analyst(ET): auto-commit from analyst run_id=723
All checks were successful
CI / test (push) Successful in 1m10s
All checks were successful
CI / test (push) Successful in 1m10s
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) |
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user