fix(compose): devuelve scheduler y hub al fichero versionado
Qué pasaba
cmoagent-scheduler-1 y cmoagent-hub-1 llevaban 8 días corriendo sin estar definidos en docker-compose.yml: se lanzaron el 27-jul desde un compose que nunca se commiteó. Conservaban la imagen y el entorno con que nacieron — incluida la master key de LiteLLM, que hacía su gasto inatribuible (agent-cmoagent marcaba $0.00 de $12 mientras el scheduler llamaba al LLM cada hora).
Lo que no está en este fichero queda fuera del alcance de docker compose build: los fixes del !41 (merged)/!42 (merged)/!43 (merged) no llegaban a estos dos.
Por qué las imágenes van pinned
hub-server y schedule-loop ya no existen en el CLI — python -m agents.gaming_cmo --help no los lista. Reconstruir desde el fuente actual mete a ambos contenedores en crash-loop con invalid choice: 'hub-server'; verificado en carne propia al intentarlo. Por eso quedan pinned a la imagen del 27-jul, etiquetada como cmoagent-legacy-{hub,scheduler}:20260727.
El puente de la key
Ese código del 27-jul es anterior a la precedencia de LITELLM_API_KEY y lee solo LITELLM_MASTER_KEY. Se le pasa la misma virtual key bajo el nombre que espera:
- con el valor vacío caería en silencio al planner determinista, perdiendo Claude;
- con la master real volvería a gastar sin dueño.
Así conserva funcionalidad y el gasto queda atribuido a agent-cmoagent. La línea se retira cuando las imágenes se reconstruyan.
Decisión pendiente
Rehacer las imágenes desde el fuente actual (implica devolver los subcomandos al CLI) o retirar los dos servicios. Hoy funcionan, pero corren código congelado hace 9 días.
Test plan
-
docker compose configválido con los 6 servicios -
docker compose up -d scheduler hub→ amboshealthy -
curl http://127.0.0.1:8791/agent-manifest→ HTTP 200 (antes y después) -
docker inspect→ ambos con la VK (sk-04r-…), sin la master (sk-litellm-…) -
Heartbeat del scheduler presente tras el recreate