Pular para conteúdo

0034 — Adota a constituição 2.0.0: só native, libs na corrente e mavenLocal filtrado

Status: Aprovado · Responsável: Gustavo Madruga · Atualizado em: 2026-09-15 · Decidido em: 2026-09-15

Contexto

A constituição da casa passou à 2.0.0, com norma e kit versionados à parte (ADR central 0036). Duas decisões centrais alcançam este app: server Micronaut é native por padrão, e jar só com motivo (ADR central 0033); e o app acompanha a versão corrente de cada lib da casa (ADR central 0034).

O app já servia 100% native no domínio principal: o canário 50/50 não estava efetivo, e cada release religava uma perna jar sem tráfego.

Decisão

  • Só native. O build.targets do docs/app.json tem só native, e o pipeline.yml não tem mais o build_jar nem o deploy jar. O Dockerfile JVM fica no repo como fallback, fora do deploy; o recurso jar do Coolify fica parado.
  • Libs na corrente: xadm-seguranca 0.8.0, xadm-comum-web 0.10.0, xadm-comum-storage 0.3.0 e xadm-comum-teste 0.4.0, com a seção Migração de cada uma aplicada.
  • Versão ainda não publicada vem do mavenLocal, filtrado: depois do registro e só para br.com.xadm, conforme Bibliotecas da casa. A versão publicada sempre sai do registro.
  • Credencial do Garage pelo dual-read da lib: o application.yml mantém o par antigo (garage.access-key/garage.secret-key) como fallback, e a xadm-comum-storage lê antes os nomes do broker (GARAGE_ACCESS_KEY_ID/GARAGE_SECRET_ACCESS_KEY).
  • Smoke com rota de cada classe de credencial: m2m na listagem do reset e session em /processamentos, com o seam de sessão da xadm-seguranca ligado por SMOKE_TOKEN.
  • Histórico de execução no volume de /app/data: o log por processamento que a UI exibe é dado do app; app.logs.dir passa a data/execucoes, e a V17 reescreve os caminhos já gravados.

Consequências

  • Uma perna só para operar, verificar e reverter (tag imutável <sha>-native). Voltar ao jar exige decisão nova com o motivo.
  • A /xadm-release recusa enquanto alguma lib declarada não estiver no registro: as quatro versões acima precisam estar publicadas antes da próxima release deste app.
  • O par antigo da credencial sai numa release futura, quando o recurso do Coolify tiver os nomes do broker.
  • O smoke passa a exigir a env SMOKE_TOKEN no recurso e os secrets SMOKE_TOKEN e SMOKE_M2M_TOKEN no GitHub.
  • Detalhe operável: Deploy.

Alternativas consideradas

  • Manter o canário jar + native: duas pernas sem ganho medido (100% native no domínio principal) e o dobro de recurso a manter.
  • Cadeia ${GARAGE_ACCESS_KEY_ID:${GARAGE_ACCESS_KEY:${S3_ACCESS_KEY:…}}} no YAML: o Micronaut não aninha placeholder, e a guarda do pipeline.yml reprova.
  • Nomes novos no YAML com fallback S3_*: o app subiria com a credencial de dev se o recurso só tivesse o nome antigo do broker.