# Correção: precedência de parâmetros sobre semantic intent shift ## Problema Durante uma transação ativa em `COLLECTING_PARAMETERS`, o roteador executava o `semantic_classifier` de mudança de intenção **antes** da extração dos parâmetros quando `ENABLE_LLM_ROUTER=true`. Com isso, respostas referenciais válidas, como `"a de quatorze e noventa e nove"`, podiam ser roubadas por outra intent semanticamente plausível antes de o contrato da transação tentar consumi-las. ## Regra restaurada A ordem agora é: 1. `AWAITING_CONFIRMATION`: confirmação explícita continua com precedência absoluta. 2. `COLLECTING_PARAMETERS`: tentar primeiro extrair pelo menos um parâmetro pendente. 3. Se algum parâmetro for consumido, manter a transação e **não** executar intent shift. 4. Somente quando nenhum parâmetro for consumido, avaliar `semantic_classifier` para `CONTINUE`/`SHIFT`. 5. Um novo objetivo explícito continua podendo mudar a intenção, desde que o extrator corretamente não o converta em parâmetro da transação anterior. ## Resolução contextual O extrator do roteador agora recebe um contexto conversacional recente e limitado, apenas como auxílio não-autoritativo para resolver referências. Exemplo: se o histórico recente contém `Tamboro Mensal = R$ 14,99`, a fala `"a de 14,99"` pode produzir o candidato `subject=Tamboro Mensal`. A validação/pre-validation da transação continua sendo responsável por provar a entidade contra evidência de backend/MCP antes da confirmação ou execução. ## Arquivo principal alterado - `agent_framework_oci/libs/agent_framework/src/agent_framework/routing/enterprise_router.py` ## Testes Foram atualizados/adicionados testes em: - `agent_framework_oci/tests/test_transaction_parameter_llm_precedence.py` Validação executada: - 8/8 testes do arquivo de precedência passaram. - 81/81 testes combinados de transaction routing, state interruption, contextual reentry, expected input semantic classifier e route stickiness passaram.