# Changelog — TIA Regional / xAI Pool ## Implementação adicionada - sidecar `xai_pool_proxy` compatível com o protocolo WebSocket xAI usado pelo TIA; - pool pré-aquecido configurável por Pod (`XAI_POOL_SIZE`, default de exemplo 50); - acquire por utterance após `text.clear`; - release automático após `audio.done`; - recuperação de slots desconectados; - refresh escalonado por TTL + jitter; - prewarm em ondas para evitar burst de handshake; - `/healthz`, `/readyz`, `/pool/status`, `/metrics` e `/drain`; - readiness com histerese; - Deployments regionais ORD/IAD usando a mesma imagem; - credencial xAI real isolada no sidecar; - Service único para balancear Pods regionais; - RollingUpdate, PDB e HPA; - scripts de renderização, validação e deployment; - manuais de arquitetura, implantação e testes. ## Compatibilidade O modo anterior permanece disponível. O deployment regional é opcional e não remove `XAI_WEBSOCKET_URL` direto para OCI xAI. ## Validações executadas na geração - `py_compile` / `compileall` do novo sidecar: PASS; - parsing YAML dos templates Kubernetes: PASS; - renderização ORD/IAD via `envsubst`: PASS; - parsing YAML dos manifests renderizados: PASS. Não foi executado teste real contra OCI xAI, pois depende das credenciais/endpoints do ambiente TIM/OCI. O manual descreve smoke, saturação, failover e stress test a executar em FQA. ## Correção — barge-in e capacidade negociada - relay upstream passou a ser assíncrono para que `text.clear` seja processado imediatamente durante `audio.delta`; - barge-in cancela o relay, envia `text.clear` ao xAI e drena mensagens residuais até `audio.clear`; - socket volta ao pool somente após boundary confirmado; timeout/erro força reset e reposição do slot; - adicionadas métricas de barge-in/reuso/reset/descarte; - `XAI_POOL_SIZE` documentado como tamanho configurável por réplica, sem assumir limite público de 50 conexões; - capacidade total passa a ser dimensionada conforme acordo/provisionamento real xAI/OCI.