1.6 KiB
1.6 KiB
Teste 24 — contexto AOFERTA e lifecycle do cliente HTTP
Problemas corrigidos
- A resposta terminal de cancelamento parcial era corretamente produzida pelo workflow, porém o TIM_AOFERTA podia receber um contexto JSON enorme truncado antes das evidências relevantes do pedido. Isso fazia a orientação de canal alternativo para o mesmo alvo ser julgada como ação não solicitada.
- O bridge síncrono de guardrails executava um provider temporário dentro de
asyncio.run(). OAsyncOpenAI/httpx associado podia sobreviver ao loop e tentar fechar conexões após o loop ter sido encerrado, gerandoTask exception was never retrieved/RuntimeError: Event loop is closed.
Correções
TimProactiveOfferRailusa contexto compacto e autoritativo com histórico recente, pedido/resolução transacional e resultado atual da execução. Não existe bypass para estadoCOMPLETED: o LLM continua julgando semanticamente e ainda pode bloquear alvo/ação realmente novos.- O prompt AOFERTA explicita que evidência estruturada do alvo solicitado/resolvido e da falha parcial é autoritativa para continuidade no mesmo alvo.
- Providers OpenAI-compatible ganharam
aclose()explícito para todos os clientes cacheados. classify_with_framework_llm()identifica providers temporários criados internamente e os fecha no mesmo event loop, emfinally; providers fornecidos pelo caller continuam sob responsabilidade do caller.
Testes
- lifecycle + TIM_AOFERTA: 22 PASS
- cancelamento/guardrails correlatos: 198 PASS
tests/migration: 830 PASS / 2 FAIL históricos não relacionados.