Quando "não definido" significava, em silêncio, "sem restrições" a cada reinício

Ler o original em inglês

guardrailsagent-safetysecurityworkflow-design

Imagem de capa: Quando "não definido" significava, em silêncio, "sem restrições" a cada reinício

Tínhamos uma configuração que decidia quanto uma tarefa podia fazer sozinha. Algumas tarefas precisavam de uma pessoa acompanhando cada passo. Outras tinham sido liberadas para ir mais longe sem ninguém por perto. Essa configuração começou como opcional, o que, na prática, queria dizer que ninguém tinha decidido ainda.

Parecia inofensivo enquanto a gente ligava as peças. Não era. A parte do sistema que transformava a configuração em uma instrução de verdade tratava “ninguém decidiu ainda” como “rode sem nenhuma restrição”. Um nível de acesso que ninguém escolheu virava, em silêncio, o mais amplo disponível. E isso acontecia justamente nas duas situações em que mais importava: uma tarefa começando por conta própria e uma tarefa sendo retomada depois de uma interrupção.

Isso está ao contrário. Uma decisão que ninguém tomou não é uma permissão. Tratá-la como permissão faz da escolha mais arriscada o padrão.

Os reinícios pioravam tudo

Uma tarefa começando do zero normalmente recebia o nível de acesso de quem a configurava. Uma tarefa interrompida e retomada não tinha essa garantia. Ela podia voltar sem nenhum nível de acesso associado, e o sistema recorria de novo à configuração mais ampla, sem que ninguém a escolhesse.

No papel, o sistema de permissões parecia completo. A falha estava nos dois lugares com mais chance de rodar sem ninguém olhando.

Duas correções que resolveriam só pela metade

Nossa primeira ideia foi corrigir o ponto onde o problema apareceu e exigir um nível de acesso ali. Isso fecharia uma porta. Todas as outras formas de uma tarefa começar ou ser retomada continuariam abertas, e a decisão sobre acesso seguiria espalhada por vários lugares, cada um capaz de errar do seu jeito.

A segunda ideia foi manter a configuração “ninguém decidiu ainda”, mas mudar o significado dela: um valor indefinido passaria a cair no acesso mais restrito, e não no mais amplo. É mais seguro, mas ainda deixa uma porta aberta. Alguma mudança futura poderia tratar um valor indefinido como válido e seguir em frente com ele. Queríamos não ter nenhum padrão.

O que resolveu

Tornamos impossível que um valor indefinido chegue ao ponto de decidir qualquer coisa. Agora toda tarefa passa por um único lugar que resolve o acesso, e esse lugar produz apenas dois resultados: uma pessoa está presente e aprovou diretamente, ou a tarefa cumpriu explicitamente os requisitos para rodar sozinha em um nível definido. Não existe um terceiro resultado que signifique “rode totalmente aberto porque nada foi especificado”.

Todo lugar onde uma tarefa pode começar ou voltar depois de uma interrupção agora precisa ter um desses dois resultados antes de poder continuar. Se não tiver, a tarefa não roda. Sem alternativa, sem suposição, sem padrão no lugar de uma decisão que ninguém tomou.

Para que serve um assistente aqui

Um assistente de IA é útil para auditar esse tipo de coisa: encontrar todos os lugares onde uma tarefa pode começar ou ser retomada, verificar se cada um tem a garantia de um nível de acesso explícito e confirmado, e apontar qualquer ponto em que um valor indefinido possa passar por permissão. Ele não deve decidir qual é o nível de acesso certo, nem alterar uma configuração de permissão por conta própria.

Quem decide quanto acesso uma tarefa merece, e quem pode ampliá-lo depois, é uma pessoa. Isso é um julgamento sobre risco e pertence a alguém responsável pelo resultado, não a um valor padrão que ninguém escolheu.

Se o seu processo tem uma configuração que pode ficar indefinida, principalmente uma ligada a acesso ou permissão, verifique o que acontece quando ela está ausente em todos os caminhos, inclusive nos que reiniciam ou retomam. Garanta que “ausente” signifique que a tarefa não roda.

Receba a próxima história de IA no dia a dia

Histórias em linguagem simples sobre usar IA para facilitar o trabalho do dia a dia. Um e-mail curto quando sair uma nova, sem jargão.