Steps 2/4/5 of Phase 3: config plumbing, dispatch wiring, rationale logging.
- config: COLIBRI_MODEL_SELECTION (enable, default off),
COLIBRI_MODEL_SELECTION_WINDOW_HOURS (168), and success/cost weight envs.
- scheduler: available_providers() (providers with creds — resolves "model
the agent can run") + recommend_model() — runs model_success_rates through
select_model, returns None on disabled/cold-start so callers keep default.
- socket: autospawn injects the eval-selected model into the agent env
(COLIBRI_MODEL / DEEPSEEK_MODEL) and logs the rationale.
Integration point note: the daemon runs long-lived agent harnesses, not
per-task model dispatch, so selection is applied at agent spawn (env), not
at the scheduler's per-task pick_agent sites. Gated off by default — zero
behavior change until COLIBRI_MODEL_SELECTION is set.
6 new tests (available_providers, recommend_model gating x3, +). fmt + clippy clean.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>