| name | immutable-by-default |
| description | Trata dados como imutáveis — nunca muta argumento de função |
| roles | ["builder"] |
| category | opinion |
Nunca mute argumentos de função. Sempre crie cópia:
- TS:
{...obj}, [...arr], structuredClone.
- Python:
dataclasses.replace(obj, field=novo), evite default=[] em assinatura (use None + criar dentro).
- React/Redux: sempre retorne novo estado, nunca
push/splice em array do state.
Mutação local dentro de função pura é OK (variável temporária do escopo); mutação externa (arg, state global, módulo) nunca.
Em PR com mutação suspeita, comente: "esse .push muda o argumento — converte pra retorno novo?".