Pular para conteúdo

ADR-0001 — Sem base instalada, retrocompatibilidade não é obrigação

Contexto

Desde a spec 0028, existe produção (app.garantora.com.br). Isso levanta a pergunta padrão de todo produto em produção: quebrar contrato de API ou rodar migration destrutiva passa a exigir plano de compatibilidade?

Decisão

A pergunta que decide o desenho não é "existe produção?" — é "há base instalada a preservar?". Hoje a resposta é não: o seed de produção criou só o usuário admin, sem cliente, sem dado de negócio, sem usuário fora do time. Por isso:

  • Quebrar contrato de API é barato — o único cliente é o apps/web, versionado junto no monorepo (dispensou aliases de rotas antigas na spec 0007, e autorizou a spec 0027 a extinguir /api/v1/contracts sem alias).
  • Migration destrutiva (DROP, recriar tabela, reseed) se avalia pelo custo de implementação, não pelo risco a dados reais.
  • Retrocompatibilidade só entra quando simplifica o código, nunca por obrigação.

Alternativas consideradas

  • Tratar produção como se já tivesse clientes, exigindo migration não-destrutiva e contrato versionado desde já. Descartada por custo: pagaria a disciplina de retrocompatibilidade sem o risco real que a justifica.

Consequências positivas

  • Specs e fixes seguem rápidas: uma migration errada vira DROP + recriar, não uma cadeia de migrations corretivas.
  • Contrato de API muda sem versionamento paralelo.

Consequências negativas

  • O código carrega menos disciplina de compatibilidade do que carregaria com clientes — isso precisa mudar no dia em que o primeiro cliente entrar, e é fácil esquecer de mudar.

Riscos

Confundir "sem cliente" com "sem risco" depois que o primeiro cliente entrar. Mitigado declarando explicitamente, no CLAUDE.md da raiz, que esta seção precisa ser reescrita nesse momento — não apagada e esquecida.

Status

aceita — revisada em 2026-08-09 (spec 0027) e segue valendo em 2026-08-30. Muda de sinal no dia em que houver base instalada a preservar.

Documentos relacionados

SPEC-0027 (contrato vira garantia, sem alias), SPEC-0028 (ambiente de produção).