fix(effort): per-role floor for --effort + developer→xhigh (ORCH-081) #80

Merged
admin merged 7 commits from feature/ORCH-081-orch-52h-env-config into main 2026-06-08 22:57:11 +03:00
Owner

Summary

Фикс ORCH-081 (ORCH-52h): resolve_agent_effort() в проде возвращал '' для всех 6 агентов — пустые ORCH_AGENT_EFFORT_*= перебивают class-defaults pydantic, и --effort не доходил до Claude CLI.

  • src/agents/launcher.py — добавлен уровень 4 (per-role floor) в resolve_agent_effort: _agent_effort_floor берёт class-default поля agent_effort_<agent> (model_fields[...].default), который пустой env перебить не может. Floor применяется только при пустых уровнях 1–3 и ДО валидации → typo по-прежнему дропается в '' (never-break ORCH-41), явный env/override побеждает floor.
  • src/config.pyagent_effort_developer high → xhigh; floor подтягивает значение автоматически (единый источник правды).
  • .env.exampleORCH_AGENT_EFFORT_DEVELOPER=xhigh + комментарий split/floor.
  • CHANGELOG.md — запись fix:. README таблица эффорта уже синхронизирована (developer xhigh).

Инварианты не менялись: приоритеты/сигнатуры ORCH-41, _resolve_agent_attr, resolve_agent_model (ORCH-074), путь --effort в _spawn, VALID_EFFORTS, API, схема БД.

Test plan

  • pytest tests/test_resolve_agent_effort.py -q — 29 passed (TC-01..08)
  • pytest tests/ -q — 1031 passed (never-break ORCH-41/074)
  • AC-6 (операционный): после деплоя проверить --effort с верным уровнем в логах прод-инстанса → 14-deploy-log.md

Refs: ORCH-081

## Summary Фикс ORCH-081 (ORCH-52h): `resolve_agent_effort()` в проде возвращал `''` для всех 6 агентов — пустые `ORCH_AGENT_EFFORT_*=` перебивают class-defaults pydantic, и `--effort` не доходил до Claude CLI. - **`src/agents/launcher.py`** — добавлен уровень 4 (per-role floor) в `resolve_agent_effort`: `_agent_effort_floor` берёт class-default поля `agent_effort_<agent>` (`model_fields[...].default`), который пустой env перебить не может. Floor применяется только при пустых уровнях 1–3 и ДО валидации → typo по-прежнему дропается в `''` (never-break ORCH-41), явный env/override побеждает floor. - **`src/config.py`** — `agent_effort_developer` `high → xhigh`; floor подтягивает значение автоматически (единый источник правды). - **`.env.example`** — `ORCH_AGENT_EFFORT_DEVELOPER=xhigh` + комментарий split/floor. - **`CHANGELOG.md`** — запись `fix:`. README таблица эффорта уже синхронизирована (developer `xhigh`). Инварианты не менялись: приоритеты/сигнатуры ORCH-41, `_resolve_agent_attr`, `resolve_agent_model` (ORCH-074), путь `--effort` в `_spawn`, `VALID_EFFORTS`, API, схема БД. ## Test plan - [x] `pytest tests/test_resolve_agent_effort.py -q` — 29 passed (TC-01..08) - [x] `pytest tests/ -q` — 1031 passed (never-break ORCH-41/074) - [ ] AC-6 (операционный): после деплоя проверить `--effort` с верным уровнем в логах прод-инстанса → `14-deploy-log.md` Refs: ORCH-081
admin added 6 commits 2026-06-08 22:50:49 +03:00
resolve_agent_effort returned '' for all agents in prod because empty
ORCH_AGENT_EFFORT_*= env vars clobber pydantic class-defaults, leaving no
non-empty floor to fall back to -> --effort never reached the Claude CLI.

Add a level-4 per-role floor in resolve_agent_effort (src/agents/launcher.py):
_agent_effort_floor reads the declared class-default of agent_effort_<agent>
(model_fields[...].default), which a present-but-empty env cannot override.
Floor applies only when levels 1-3 are empty and BEFORE validation, so a typo
(non-empty) still drops to '' (never-break ORCH-41) and explicit env/override
still wins (priority preserved). config.py: agent_effort_developer high->xhigh
(single source of truth; floor follows automatically).

Refs: ORCH-081

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
tester(ET): auto-commit from tester run_id=403
All checks were successful
CI / test (push) Successful in 26s
CI / test (pull_request) Successful in 27s
e9b23d3c04
admin force-pushed feature/ORCH-081-orch-52h-env-config from 915101cffc to e9b23d3c04 2026-06-08 22:50:49 +03:00 Compare
admin added 1 commit 2026-06-08 22:55:38 +03:00
deploy(ORCH-036): finalize SUCCESS for ORCH-081
All checks were successful
CI / test (push) Successful in 24s
CI / test (pull_request) Successful in 24s
6eb9992585
admin merged commit 50434fc2b1 into main 2026-06-08 22:57:11 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: admin/orchestrator#80