ajuste no contas

This commit is contained in:
T3782834
2026-09-01 11:24:03 -03:00
parent 9ed4782f9d
commit 397b831fd3
428 changed files with 2294 additions and 4648 deletions

View File

@@ -0,0 +1,39 @@
# Correção cirúrgica — status transacional e VAS pré-validado
## Escopo
Esta correção parte da versão estável anterior à expansão de `terminal outcomes` e altera apenas dois contratos já existentes.
### 1. `active_transaction` e `transaction_status` não podem divergir
`AgentRuntimeMixin._set_active_transaction()` agora atualiza também `state["transaction_status"]` com o mesmo `status` da transação instalada.
Isso evita que um status terminal da operação anterior (`COMPLETED`, por exemplo) sobreviva à criação de uma nova transação em `AWAITING_CONFIRMATION`. Sem essa invariável, o boundary do turno seguinte pode interpretar a nova confirmação como resíduo da transação encerrada e limpar seus latches antes do roteamento.
Não foi criada regra para a palavra `sim`, nem bypass de roteamento.
### 2. VAS estratégico reutiliza resolução já validada
`validar_vas_subject` já é o resolver autoritativo side-effect-free na fronteira transacional. Quando ele resolve um VAS e redireciona a ação para `tratar_vas_estrategico`, os `resolved_arguments` agora carregam:
- `subject` canônico;
- `_vas_subject_prevalidated=true`;
- `type` quando conhecido (`bundle`/`estrategico`).
Na execução da tool estratégica, `_preflight_subject()` não executa uma segunda resolução por `invoice_evidence` quando esse marcador está presente. Isso evita o caso em que `Aya Audiobooks Premium` era `ELIGIBLE` na pré-validação e depois virava `NEEDS_PARAMETER / subject_not_resolved` ao executar a tool efetiva.
## O que não foi alterado
- `agent_graph` e reset global de contexto;
- route stickiness;
- confirmation classifier;
- estados terminais globais;
- idempotência;
- guardrails;
- fluxo de múltiplos VAS.
## Testes
- testes direcionados novos + relacionados: 16 PASS;
- VAS/transação/cancelamento/conversation policy: 420 PASS;
- suíte `tests/migration`: 833 PASS / 2 FAIL históricos já existentes e não relacionados.