Eu tinha três pacotes abertos no editor de políticas de Newton: vaults.fyi, RedStone e Chainalysis, verificando se uma ação de vault deveria ser permitida para executar.
A vaults.fyi retornou um risk_score de 0.72. A RedStone retornou uma divergence_bps de 38. A Chainalysis retornou seu próprio risk_score, "low", além de um sinalizador sancionado definido como false.
Dessas três respostas, duas usam exatamente o mesmo nome de campo, risk_score, para coisas completamente diferentes. Uma é uma classificação numérica de saúde do vault. A outra é um rótulo categórico de sanções. Nada no JSON de nenhum dos provedores avisa com antecedência, porque nenhuma das equipes construiu o seu esquema sabendo que a outra existia.
Se uma mesclagem ingênua apenas escrevesse as duas respostas em um único objeto, a segunda escrita venceria. O 0.72 do Vaults.fyi é substituído silenciosamente por "low". A política continua rodando. Sem erro, sem aviso, sem texto vermelho em lugar nenhum. Ela começa comparando um limite com um valor que já não existe.
Eu fui procurar onde Newton realmente para nisso, porque claramente não é algo deixado para quem escreve o arquivo Rego notar.
Cada pacote namespaceia a saída dele sob seu próprio id de pacote antes que qualquer coisa seja mesclada. A pontuação de risco do Vaults.fyi fica em data.wasm.vaultsfyi.risk_score. A da Chainalysis fica em data.wasm.chainalysis.risk_score, um endereço completamente diferente, mesmo com o mesmo nome de campo. O valor de divergência do RedStone fica em data.wasm.redstone.divergence_bps. Executando o Simulate contra os três de uma vez, o painel de dados mesclados mostrou exatamente isso: três caminhos separados, nenhum tocando o outro.
Isso não é uma regra dizendo aos desenvolvedores para terem cuidado com a nomeação. É a própria mesclagem recusando permitir que a colisão aconteça, antes que um autor de política escreva qualquer comparação.
O que ficou comigo não foi o bug que eu não acertei. Foi o quão pouco glamouroso é o conserto, na prática. Ninguém divulga (faz marketing) nomes de chaves JSON com namespace. Mas é exatamente o detalhe que fica entre uma política de vault que bloqueia corretamente uma ação arriscada e outra que a aprova silenciosamente, porque dois provedores não relacionados acabaram concordando em uma palavra.

