Introdução
Como já dito anteriormente: A restrição: quando o comportamento de uma função depende de estado invisível no momento da leitura (uma variável global, um efeito colateral escondido atrás de uma "consulta", uma flag booleana cujo significado não está no call site), reproduzir um bug exige reconstruir todo esse contexto invisível — e é exatamente por isso que esses bugs consomem tempo desproporcional de debug comparado a bugs em código puro. O caso mais grave documentado na literatura de engenharia de software é o Therac-25 (1985-1987): uma máquina de radioterapia cujo software tinha uma condição de corrida (estado compartilhado mutável, dependente de timing) que, combinada com a remoção dos interlocks de segurança em hardware que existiam nas versões anteriores, liberou doses de radiação até 100x acima do previsto, matando ao menos três pacientes. O relatório de Nancy Leveson e Clark Turner (1993) aponta diretamente para o problema de confiar em estado compartilhado sem isolamento. Num registro bem menos trágico mas igualmente didático, o colapso da Knight Capital em 2012 — perda de US$460 milhões em 45 minutos — aconteceu porque uma flag booleana reaproveitada (que ligava um código morto de 8 anos atrás, chamado "Power Peg") foi ativada acidentalmente num deploy incompleto: ninguém mais conseguia dizer com certeza o que aquela flag realmente controlava. Isso é o princípio #7 na prática: booleanos e nulos acumulam significado ambíguo com o tempo até que ninguém consegue mais raciocinar sobre o que eles realmente ligam ou desligam.






