work_item: ORCH-074
# Скоп (Слава 08.06): G1 + G2 + опц. G4. G3 routing снят (no routing tests).
# Эффорт не трогаем (no new effort tests beyond never-break regression).

tests:
  # ---- G1: frontmatter `model:` убран из всех 6 промптов (AC-1) ----
  - id: TC-01
    type: integration
    description: >
      Ни один .openclaw/agents/*.md не содержит строки `^model:` во frontmatter.
      Тест итерирует по 6 файлам, ассертит отсутствие model:-строки.
    module: tests/test_agent_frontmatter_no_model.py
    expected: PASS

  - id: TC-02
    type: integration
    description: >
      frontmatter каждого из 6 промптов остаётся валидным YAML и сохраняет ключи
      name/description (парсинг между первыми двумя '---' без ошибок).
    module: tests/test_agent_frontmatter_no_model.py
    expected: PASS

  # ---- G2: валидация имени модели, never-break (AC-2, AC-7) ----
  - id: TC-03
    type: unit
    description: >
      Мусорное имя в agent_model_<agent> (напр. 'gpt-4' или 'claud-opus-typo')
      -> resolve_agent_model откатывается на default (claude-opus-4-8) и НЕ
      возвращает мусор. Проверяется также warning в логах (caplog).
    module: tests/test_resolve_agent_model.py
    expected: PASS

  - id: TC-04
    type: unit
    description: >
      Мусорное имя в project-override (agent_models) -> resolve_agent_model
      откатывается на следующий валидный уровень (default), мусор не передаётся.
    module: tests/test_resolve_agent_model.py
    expected: PASS

  - id: TC-05
    type: unit
    description: >
      Невалиден И override, И default -> resolve_agent_model возвращает ""
      (без флага --model, CLI-дефолт). never-break: исключение НЕ бросается.
    module: tests/test_resolve_agent_model.py
    expected: PASS

  - id: TC-06
    type: unit
    description: >
      Валидное каноничное имя (claude-opus-4-8) проходит валидацию без изменения:
      resolve_agent_model('developer') == 'claude-opus-4-8'. Регрессия ORCH-041.
    module: tests/test_resolve_agent_model.py
    expected: PASS

  # ---- AC-3: все 6 агентов резолвятся в осмысленную модель ----
  - id: TC-07
    type: unit
    description: >
      Для всех 6 агентов (analyst/architect/developer/reviewer/tester/deployer)
      resolve_agent_model(agent) == 'claude-opus-4-8' (routing выключен).
    module: tests/test_resolve_agent_model.py
    expected: PASS

  # ---- AC-8: enduro per-project override не сломан валидацией ----
  - id: TC-08
    type: unit
    description: >
      Валидный per-project override (agent_models у не-self проекта) резолвится и
      проходит валидацию без изменения поведения (регрессия ORCH-041).
    module: tests/test_resolve_agent_model.py
    expected: PASS

  # ---- G4: fallback_model (опц.) — условный тест ----
  - id: TC-09
    type: unit
    description: >
      ЕСЛИ G4 включён архитектором: agent_fallback_model задан валидным именем и
      проходит валидацию G2. ЕСЛИ выключен: agent_fallback_model == "" (тест
      подтверждает дефолт). Финальная форма теста зависит от решения в ADR.
    module: tests/test_resolve_agent_model.py
    expected: PASS

  # ---- G4 never-break: fallback читается напрямую (launcher.py:374), мимо
  #      resolve_agent_model — валидация G2 должна покрыть и его (см. TRZ §4) ----
  - id: TC-11
    type: unit
    description: >
      ЕСЛИ G4 включён: мусорное agent_fallback_model НЕ попадает в --fallback-model
      (валидируется тем же предикатом G2, дропается с warning, never-break).
      ЕСЛИ G4 выключен: кейс помечается N/A в test-report (синхронно с ADR).
    module: tests/test_resolve_agent_model.py
    expected: PASS

  # ---- AC-7: общий зелёный прогон / never-break regression ----
  - id: TC-10
    type: integration
    description: >
      Полный pytest зелёный; невалидная модель/эффорт не роняет запуск агента
      (graceful-деградация). Регрессия resolve_agent_effort (VALID_EFFORTS) цела.
    module: tests/
    expected: PASS
