5.3 KiB
5.3 KiB
Критерии приёмки — 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 отсутствует или не покрывает эти решения.