1.2 KiB
ADR-004 — Motor seguro de expressões
- Estado: Aceite como restrição para cálculos configuráveis futuros; não existe motor geral aprovado no inventário.
- Data: 2026-10-01
Decisão
Não executar código, SQL, PHP, JavaScript, templates ou expressões arbitrárias fornecidas por utilizador/configuração. Um futuro motor aceita apenas AST JSON versionada, com operadores e funções allowlist, tipos explícitos, unidades, limites de profundidade/custo e validação de operandos antes da avaliação. Sem reflexão, I/O, rede, acesso a relógio aleatório ou estado mutável. Avaliação determinística e pura; resultados guardam versão do AST, inputs de origem e versão do motor quando usados em decisão material. Invalidar entrada fora da gramática; sem fallback silencioso. Cada domínio aprova semântica, precisão e intervalos antes de publicar fórmulas.
Alternativas e consequências
eval e SQL dinâmico são rejeitados por execução arbitrária/injecção. Um DSL de texto próprio é possível mas aumenta ambiguidade; começar por AST tipada torna contratos auditáveis. Este ADR não define fórmulas, taxas, limiares ou interpretação fiscal.