# 01 — BRD: ORCH-081 (ORCH-52h)

**Work Item:** ORCH-081
**Эпик:** ORCH-052 (продолжение ORCH-52a / ORCH-074)
**Тип:** Багфикс (конфигурация эффорта агентов)
**Приоритет:** HIGH
**Repo:** orchestrator (self-hosting)

## 1. Контекст и проблема

При проверке ORCH-074 (08.06) обнаружено: `resolve_agent_effort()` для **всех 6 агентов
в проде** возвращает пустую строку `''`, хотя в `src/config.py` заданы осмысленные
дефолты (`agent_effort_default="high"`, per-agent `high`/`medium`). Итог: флаг
`--effort` **не передаётся** в Claude CLI, и каждый агент бежит на встроенном
CLI-дефолте эффорта, а **не** на заявленном `high`/`medium`.

### Корень (диагностика)
В проде env-переменные `ORCH_AGENT_EFFORT_DEFAULT` и
`ORCH_AGENT_EFFORT_{ANALYST,ARCHITECT,DEVELOPER,REVIEWER,TESTER,DEPLOYER}` выставлены в
**пустую строку** (`VAR=` без значения). Pydantic Settings трактует присутствующую
env-переменную (даже пустую) как явное значение и **перебивает** дефолт класса:
`agent_effort_* = ''`. В цепочке резолва (`launcher._resolve_agent_attr`):
- per-agent `''` → falsy → пропуск (уровень 2);
- default `''` → falsy → пропуск (уровень 3);
- → возврат `''` (уровень 4, «без флага»).

Поскольку **и default тоже пуст**, привычный откат «per-agent пуст → взять default»
не спасает: откатываться не на что. Это ключевой нюанс — фикс обязан давать каждой
роли непустой «пол» (floor) даже когда И per-agent, И default env пусты.

## 2. Бизнес-ценность / зачем важно

Для Opus 4.8 (канон Anthropic) уровень reasoning-эффорта влияет на качество вывода
**сильнее**, чем у прежних моделей. Coding/agentic роли (особенно `developer`) должны
идти минимум на `high`, а `developer` — кандидат на `xhigh`. Сейчас фактически работает
неконтролируемый CLI-дефолт → прямой удар по стратегии надёжности и предсказуемости
качества всего конвейера (включая enduro-trails из общего инстанса).

## 3. Решение (бизнес-уровень)

Принят **вариант (c)** (решение Славы, 08.06): пустая строка эффорта трактуется как
«не задано» и откатывается на осмысленный per-role дефолт (а не на CLI-дефолт),
**устойчиво** к пустым env. Дополнительно — зафиксировать целевые дефолты в `config.py`
и `.env.example`.

### Целевые значения эффорта (единственный апгрейд — `developer`)
| Агент | Эффорт | Обоснование |
|-------|--------|-------------|
| analyst | high | intelligence-роль |
| architect | high | intelligence-роль |
| **developer** | **xhigh** | coding/agentic, канон Opus 4.8 → апгрейд с `high` |
| reviewer | high | intelligence-роль |
| tester | medium | механическая роль |
| deployer | medium | механическая роль |

`developer → xhigh` — единственное изменение относительно текущих config-дефолтов;
остальные значения подтверждают текущий замысел и фиксируются устойчиво.

## 4. Грабли / ограничения (из бизнес-запроса)

- **Хост-репо / env-правки НЕ переживают деплой**, если положены в git-managed файл
  (урок 08.06 про docker-compose + TZ). Источник правды для реальных значений —
  `.env` на хосте (gitignored), канон-шаблон — `.env.example`. Фикс обязан быть
  **code-side robust**: даже если прод-`.env` снова окажется с пустыми
  `ORCH_AGENT_EFFORT_*`, эффорт всё равно резолвится в целевые значения.
- **Self-hosting:** правка касается инструмента, который сейчас в проде обслуживает и
  другие проекты. Прод-контейнер `orchestrator` не ронять в рамках задачи; деплой —
  через штатный `deploy-staging` → `Confirm Deploy`.

## 5. Не-цели

- НЕ трогать model-резолв (`resolve_agent_model` — сделан в ORCH-074).
- НЕ включать G3 model-routing — все 6 агентов остаются на `claude-opus-4-8`.
- НЕ менять значения эффорта сверх согласованных (`high`/`medium`/`xhigh` для
  developer). Иные значения — отдельное взвешенное решение.

## 6. Затронутые стороны

- Все агенты конвейера (analyst → deployer) во всех проектах общего инстанса.
- Операторы (правка прод-`.env`), документация (README таблица, `.env.example`).
</content>
</invoke>
