Pular para o post

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.

Quando você quiser

Monte a decisão que este texto descreve.

Crie um workspace, desenhe o fluxo no Sandbox e leia a trilha de cada execução antes de ele receber tráfego.

Veja quanto custa