82 lines
5.3 KiB
Markdown
82 lines
5.3 KiB
Markdown
# Критерии приёмки — ORCH-074
|
||
|
||
Work Item ID: ORCH-074
|
||
Скоп (Слава 08.06): G1 + G2 + опц. G4. **G3 routing снят — AC-4 не применяется.**
|
||
|
||
Каждый критерий: чёткое условие PASS/FAIL.
|
||
|
||
---
|
||
|
||
## AC-1 — frontmatter `model:` убран из всех 6 промптов (G1)
|
||
|
||
- **PASS:** ни один файл `.openclaw/agents/*.md` не содержит строки `^model:` в
|
||
frontmatter. Команда `grep -L "^model:" .openclaw/agents/*.md` возвращает все 6
|
||
файлов (analyst, architect, developer, reviewer, tester, deployer).
|
||
- **FAIL:** хотя бы в одном файле осталась строка `model:`.
|
||
- Доп. инвариант: frontmatter остаётся валидным YAML; ключи `name`/`description`/`tools`
|
||
сохранены.
|
||
|
||
## AC-2 — валидация имени модели, never-break (G2)
|
||
|
||
- **PASS:** при невалидном `agent_model_*` / project-override (мусорное имя)
|
||
`resolve_agent_model` возвращает откат на default (или `""`), пишет
|
||
`logger.warning`, и мусор **никогда** не попадает в `--model`. Покрыто
|
||
unit-тестом с мусорным именем (см. `04-test-plan.yaml`, TC-03..TC-05).
|
||
- **FAIL:** мусорное имя проходит насквозь в `--model`, или валидация роняет
|
||
запуск агента (исключение вместо graceful-деградации).
|
||
|
||
## AC-3 — resolve_agent_model осмыслен для всех 6 агентов
|
||
|
||
- **PASS:** для каждого из 6 агентов `resolve_agent_model(agent)` (без
|
||
project_id) возвращает `claude-opus-4-8` (routing G3 выключен → intelligence-
|
||
модель для всех). Значение документировано в README (таблица env) и `.env.example`.
|
||
- **FAIL:** хотя бы один агент резолвится в пустую/невалидную/устаревшую модель,
|
||
либо документация не отражает фактическую модель.
|
||
|
||
## AC-4 — routing (G3) — **СНЯТ (N/A)**
|
||
|
||
- Routing НЕ включается в этой задаче. Критерий не применяется. ADR фиксирует
|
||
отказ от G3 как осознанное решение Славы (08.06).
|
||
|
||
## AC-5 — fallback_model (G4, опционально)
|
||
|
||
- **PASS (если G4 включён):** `agent_fallback_model` задан каноничным именем,
|
||
проходит валидацию G2, прокидывается в `--fallback-model` (launcher 374-375).
|
||
Доп. инвариант never-break: МУСОРНЫЙ fallback НЕ попадает в `--fallback-model`
|
||
(валидируется тем же предикатом G2; учтено, что fallback читается напрямую на
|
||
`launcher.py:374`, минуя `resolve_agent_model` — см. TRZ §4). Задокументирован.
|
||
- **PASS (если G4 НЕ включён):** `agent_fallback_model = ""`, ADR явно фиксирует
|
||
отказ; AC-5 помечен N/A.
|
||
- **FAIL:** fallback задан невалидным именем, ИЛИ невалидный fallback проходит в
|
||
`--fallback-model`, ИЛИ включён без документации/ADR.
|
||
|
||
## AC-6 — синхронизация документации
|
||
|
||
- **PASS:** `docs/architecture/README.md`, `CLAUDE.md`, `.env.example`
|
||
синхронизированы — таблица «модель по ролям» актуальна (все = `claude-opus-4-8`);
|
||
НЕТ упоминаний `claude-sonnet-4-6` / `claude-opus-4-7` как «модели агента»
|
||
(если они не используются). `.env.example` содержит блок
|
||
`ORCH_AGENT_MODEL_*` / `ORCH_AGENT_EFFORT_*` / `ORCH_AGENT_FALLBACK_MODEL`.
|
||
- **FAIL:** документация противоречит config, или остались мёртвые упоминания
|
||
sonnet/opus-4-7 как модели агента.
|
||
|
||
## AC-7 — pytest зелёный + never-break
|
||
|
||
- **PASS:** `pytest tests/ -q` зелёный. Невалидная модель/эффорт НЕ роняет запуск
|
||
агента (graceful-деградация подтверждена тестами).
|
||
- **FAIL:** падают тесты, или невалидный вход роняет запуск.
|
||
|
||
## AC-8 — enduro per-project override не сломан
|
||
|
||
- **PASS:** валидный per-project override (`projects.py agent_models`) для не-self
|
||
проекта (enduro) резолвится и проходит валидацию без изменения поведения
|
||
(покрыто существующими тестами `test_resolve_agent_model.py`).
|
||
- **FAIL:** валидация ломает корректный per-project override.
|
||
|
||
## AC-9 — ADR зафиксирован
|
||
|
||
- **PASS:** ADR в `06-adr/` фиксирует: (а) выбран вариант G1 «убрать frontmatter»
|
||
(не «читать»); (б) предикат валидации G2 (формат-чек vs allowlist) с обоснованием;
|
||
(в) решение по G4 (вкл/выкл) и по отказу от G3.
|
||
- **FAIL:** ADR отсутствует или не покрывает эти решения.
|