Prática
Uma decisão automática que você não explica é passivo, não eficiência.
A maioria dos times descobre a diferença entre log e trilha de auditoria na primeira contestação que importa.
Log não é auditabilidade
Logs are written for engineers debugging a system now. Audit trails are read by other people — a customer disputing an outcome, a compliance reviewer, a regulator sampling a file — often years later, and they answer a different question. Not "what went wrong" but "what did you decide, and on what basis".
A diferença aparece na retenção, na estrutura e na completude. Logs são amostrados, rotacionados e moldados pelo código que os emitiu. Se a linha de log não registra qual versão da política estava em vigor, nenhuma retenção transforma isso em trilha de auditoria.
O que precisa ser registrado
Para reproduzir uma decisão em vez de descrevê-la, cinco coisas precisam ser guardadas juntas, com a própria decisão.
- As entradas
- Exatamente o que foi enviado, não um resumo. Um campo ausente precisa ser distinguível de um campo vazio.
- A versão da política
- Qual versão da lógica estava em vigor. Sem isso, todo o resto fica solto — as mesmas entradas produzem outra resposta sob uma política que mudou desde então.
- O que veio de fora
- A resposta do bureau, o sinal do dispositivo, o alerta de sanções. Essas coisas mudam independentemente de você, e não dá para buscá-las de novo para reconstituir uma decisão do passado.
- O caminho percorrido
- Which branches ran and which did not. "Declined" is an outcome; "declined at the affordability rule after the bureau pull returned a thin file" is an explanation.
- A saída
- O veredito e os motivos anexados a ele, na forma em que o sistema que chamou os recebeu.
Se qualquer um dos cinco faltar, você descreve a decisão mas não a reproduz — e é a descrição que acaba contestada.
Por que o versionamento é a parte difícil
Most teams get inputs and outputs right and lose on the version. The reason is structural: when policy lives in application code, its version is the deploy, and the deploy is not recorded with the decision. Answering "what logic was live at 14:20 on the third of March" becomes an archaeology exercise across a deploy log and a git history.
Esse é o argumento prático mais forte para manter a lógica de decisão como um artefato versionado separado. Não é elegância — é conseguir responder a essa pergunta em uma consulta, e não em uma tarde.
Decisões humanas exigem o mesmo tratamento
Toda política real encaminha alguns casos para uma pessoa. São justamente as decisões com mais chance de serem contestadas depois, e as que costumam ser pior registradas — a parte automática deixa um registro limpo e a parte humana deixa uma mudança de status e um horário.
O encaminhamento precisa dos mesmos cinco elementos: o que o revisor viu, o que decidiu, quando, e sob qual política o caso chegou até ele. Um caso que chega carregando seus sinais e seu motivo não é só mais rápido de revisar — é a única versão do evento que pode ser auditada depois.
Como isso funciona na ArboRule
Cada decisão é registrada com a versão do fluxo, a entrada, a saída, a duração e a trilha nó a nó do caminho percorrido, recuperável pelo id da decisão ou filtrada por fluxo, ambiente e grouping id pela API de histórico. Os encaminhamentos mantêm o mesmo registro: um nó de Revisão Manual pausa a execução até alguém responder, e um nó de Criar Caso abre um caso carregando a evidência que o gerou.
O ponto não é o armazenamento. É que a trilha de auditoria é produzida pela própria execução, e não montada depois por um sistema à parte que precisa ser mantido em sincronia com a lógica — porque uma trilha que depende de alguém lembrar de escrevê-la é uma trilha com buracos exatamente onde estão as decisões fora do padrão.
Perguntas
Guardar os logs da aplicação basta como trilha de auditoria?
Raramente. Logs são estruturados para depuração, amostrados e rotacionados por uma política de retenção definida por necessidade operacional, não regulatória. E, o mais importante, em geral não registram qual versão da lógica de decisão estava em vigor — sem isso, não dá para mostrar que as mesmas entradas produzem o mesmo resultado.
O que significa reproduzir uma decisão?
Mostrar, só a partir do registro, o que foi enviado, qual versão da política rodou, quais dados externos voltaram, qual caminho na lógica foi executado e o que foi devolvido — sem rodar nada de novo e sem consultar a versão atual do código, que já mudou.
Como as revisões humanas entram na trilha de auditoria?
Elas precisam do mesmo registro das decisões automáticas: o que o revisor viu, o que decidiu, quando, e por que o caso chegou até ele. Casos encaminhados são desproporcionalmente os que acabam contestados, então registrá-los como uma mudança de status e um horário é exatamente o lugar errado para economizar.