Pular para o conteúdo

7. Padrões · versão 2.0.0

Auditoria de projeto

manifesto/architecture/13-auditoria.md

Diagnóstico periódico do código para revelar dívida técnica. Não é refatoração — é levantamento. O resultado é uma lista priorizada de achados que viram ADRs de refatoração: melhorar o que já existe mexe no código e, como tudo o que mexe no código, é ADR (princípio 2).

Quando rodar:

  • A cada 2–4 semanas em projeto ativo.
  • Antes de uma entrega importante.
  • Quando o código começa a degradar (regressões, lentidão, confusão de pastas).

A auditoria não mexe no código, então ela própria é uma tarefa (no Gestor, quando o projeto o usa): abre-se a tarefa, rodam-se os eixos, o relatório vai anexo a ela, e os achados CRÍTICO e ALTO viram novas ADRs que citam a auditoria. Ela só vira ADR quando o relatório é um estudo que outras ADRs vão seguir (ver Tarefa ou ADR).

Severidade

SeveridadeSignificadoAção
CRÍTICOQuebra produção ou segurançaCorrigir já (nova ADR imediata)
ALTODívida acumulandoADR de refatoração próxima
MÉDIOMelhoria de qualidadePendência priorizada
BAIXOSeria bom terPendência

Os 11 eixos

Cada eixo tem um prompt para copiar e colar. Rode todos (auditoria completa) ou um isolado (auditoria focada).

1. Validade das ADRs

Leia todas as ADRs em .specs/adr/. Para cada uma:
1. A decisão ainda está implementada como descrito no 003-plan?
2. O status no 001-executive está correto (Em planejamento / Em execução / Concluído)?
3. Alguma ADR concluída foi contrariada na prática sem uma ADR nova que a substitua?
4. As alternativas descartadas continuam marcadas com clareza (memória técnica)?
5. Há trabalho no código sem ADR (commits sem `ADR:` no rodapé, numa versão 2.x do Manifesto)?
6. Há ADR que não mexe no código (roadmap, deploy, organização) aberta depois da 2.0.0?
Liste as divergências com severidade.

2. Tipagem total (princípio 6)

Busque em todo o código-fonte:
1. Usos de `any` (explícito ou implícito) — proibidos.
2. Funções exportadas sem tipo de retorno claro.
3. Props de componente sem tipo.
4. Conversões forçadas desnecessárias (`as unknown as X`).
Confirme que os tipos fluem do Prisma e do Zod até a interface, sem buracos.

3. Validação e contrato de API (princípio 7)

Analise as rotas (app/api/**/route.ts ou equivalente):
1. Toda entrada é validada com Zod antes de qualquer processamento?
2. O OpenAPI cobre todos os endpoints e é derivado do Zod (sem contrato escrito à mão)?
3. O Scalar está servido e atualizado?
4. O formato de resposta e os códigos de status são consistentes entre rotas?

4. Autorização por escopo / anti-IDOR (eixo crítico)

Para cada rota que lê ou modifica dados (manifesto/architecture/10-seguranca.md):
1. Há checagem de ESCOPO além da autenticação (esta pessoa pode este recurso)?
2. O filtro do dono está no `where` do Prisma (where: { id, userId }), e não na resposta?
3. As listagens são filtradas no servidor pelo escopo (e não "tudo + esconder na tela")?
4. O papel vem da sessão no servidor, nunca do cliente?
5. As rotas de admin checam o papel explicitamente?
Rota sem checagem de escopo é achado CRÍTICO.

5. Estado do frontend (Zustand)

Analise as stores em stores/ e os componentes:
1. Toda store tem store.ts + sync.tsx?
2. A lógica de negócio mora na store (e não no componente)?
3. Há fetch direto em componente (deveria passar pela store e pelo sync)?
4. lib/ está dividida em server/, client/ e shared/?
5. Há stores sem uso?

6. Componentes

Analise os componentes:
1. Componentes com mais de ~150 linhas, ou misturando lógica de negócio com interface.
2. Componentes duplicados (props, desenho e nomes parecidos) que poderiam ser um só.
3. A fronteira entre a base shadcn/ui (packages/ui) e os componentes próprios está clara?
Para cada achado, sugira a divisão (átomos → moléculas → organismos).

7. Design System e tokens

Busque nos componentes e estilos:
1. Valores escritos na UI que deveriam ser token: cores fora das CSS vars, medidas fora da escala,
raios e sombras literais.
2. Componentes que ignoram o tema (não usam --primary, --destructive etc.).
3. Acessibilidade: foco visível (--ring), contraste, teclado, ARIA, prefers-reduced-motion.
4. Estados de tela (vazio / carregando / erro) e de componente (desabilitado / hover / foco / ativo).
Compare com .specs/design/tokens.md, se existir (manifesto/03-stack/06-design-system.md).

8. Cobertura de testes (princípio 8)

Liste os domínios e as rotas do projeto. Para cada um:
1. A rota tem teste contra o contrato Zod?
2. O domínio tem smoke cobrindo os fluxos críticos de ponta a ponta?
3. O smoke está pronto para rodar?
Priorize por criticidade: acesso > dados sensíveis e pagamentos > cadastro comum.

9. Desempenho

Analise:
1. Consultas do Prisma com risco de N+1 (findMany sem include/select adequado).
2. Componentes que renderizam demais (store sem seletor, falta de memo onde mede diferença).
3. Imports que poderiam ser carregados sob demanda.
4. Imagens e arquivos grandes sem otimização.

10. Pastas e excesso de camadas (princípio 1)

Compare a estrutura com manifesto/architecture/05-backend.md e 03-stack/02-frontend-zustand.md:
1. Pastas e arquivos fora do padrão; imports circulares.
2. Camadas vazias criadas por hábito (service, repository ou controller que só repassam).
3. Regras de negócio espalhadas que deveriam estar num service.
A régua é complexidade real, não estética: nem camada a menos, nem a mais.

11. Documentação

Verifique:
1. ADRs concluídas com status correto e os relatórios (005 e 006) presentes.
2. .specs/design/ (se existir) reflete os tokens, componentes, telas e fluxos reais?
3. .specs/stack/ registra as escolhas técnicas próprias do projeto?
4. O CLAUDE.md está com comandos, setup e portas corretos?
5. As bibliotecas instaladas estão no 004-tasks das ADRs (nome + versão + porquê)?
6. manifesto/VERSION está na versão que o projeto pretende seguir?
7. O .specs/readme.md e o CLAUDE.md estão sem "a próxima ADR é a…" (o número vem da reserva)?
8. Com o Gestor: as ADRs abertas estão vinculadas às tarefas que as implementam?

Saída esperada

  1. Relatório por eixo — achados com severidade.
  2. As 10 ações principais, priorizadas.
  3. ADRs sugeridas para os achados CRÍTICO e ALTO.

O relatório fica anexo à tarefa de auditoria (ou no 005 da ADR, quando ela é um estudo). Os achados que mexem no código abrem novas ADRs que citam a auditoria.