# Copia este archivo a lab-agent.env (sin .example) y ajusta valores. # lab-agent.env NO debe contener secretos — API keys y tokens van en # archivos aparte, root-only (ver ANTHROPIC_API_KEY_FILE / GITEA_TOKEN_FILE). # --- Alcance kubectl --- NAMESPACE=ecommerce KUBECONFIG_PATH=/DATA/.kube/config # --- Umbrales (lista blanca aprobada 2026-08-25) --- UNHEALTHY_THRESHOLD_MIN=10 RATE_LIMIT_MIN=30 # Deployment que corresponde a "commerce-backend" en la terminología de # CLAUDE.md. En el cluster real (verificado 2026-08-25) es medusa-deploy, # no un deployment llamado literalmente "commerce-backend". COMMERCE_BACKEND_DEPLOYMENT=medusa-deploy # Ventana horaria (hora LOCAL del host ZimaOS) en la que medusa-deploy # es elegible para auto-restart. Fuera de esta ventana: solo diagnóstico. COMMERCE_BACKEND_WINDOW_START=00:00 COMMERCE_BACKEND_WINDOW_END=06:00 # --- Alcance docker --- # Único contenedor con auto-restart aprobado (incidente 2026-08-16). DOCKER_RESTART_ALLOWLIST=gitea-runner # --- Señal de "runner atascado" vía API de Gitea Actions (mejor esfuerzo) --- # Repos a consultar por runs con status=running que llevan más de # UNHEALTHY_THRESHOLD_MIN minutos sin terminar. Si GITEA_TOKEN_FILE no # existe o la API falla, esta señal se omite (fail-safe: nunca dispara # una acción por una señal que no se pudo verificar) y solo queda la # señal de "contenedor no está running". GITEA_ACTIONS_REPOS="devops/apps-registry" # --- Endpoints públicos a chequear (solo diagnóstico, no gatillan acciones) --- PUBLIC_DOMAINS="shop.cruzcloud.net commerce.cruzcloud.net media.cruzcloud.net gitea.cruzcloud.net docs.cruzcloud.net" # --- Rutas de estado/logs (escribibles por devops, NO root-only) --- STATE_FILE=/DATA/AppData/k3d-lab/lab-agent/state.json LOG_DIR=/DATA/AppData/k3d-lab/lab-agent/logs # --- Secretos root-only (archivos, NO valores — ver README.md) --- ANTHROPIC_API_KEY_FILE=/etc/claude-lab-agent/secrets/anthropic_api_key GITEA_TOKEN_FILE=/etc/claude-lab-agent/secrets/gitea_token # --- Modelo e invocación de Claude Code headless --- CLAUDE_MODEL=claude-sonnet-5 CLAUDE_MAX_BUDGET_USD=0.50 # --- Notificaciones (Paso 3 — dejar vacío hasta tener un canal real) --- # Ej. self-hosted: https://ntfy.cruzcloud.net/lab-agent # ntfy.sh público: https://ntfy.sh/ NTFY_URL= # --- Pruebas controladas (Paso 5) --- # DRY_RUN=1: calcula elegibilidad y decisión igual que en producción, # pero NO ejecuta kubectl/docker de verdad — registra y notifica como si # lo hubiera hecho, marcado [DRY_RUN]. Poner en 0 para el modo real. DRY_RUN=1