Pular para conteúdo

RFC-005: Processo de Code Review e SLAs

Campo Valor
Status Draft
Author Time de Tecnologia
Created 2026-02-05
Updated 2026-02-05
Reunião A ser agendada
Deciders Todo o time técnico

Status

🟡 Draft - RFC em elaboração, aguardando apresentação

Contexto e Problema

Processo de code review documentado em docs/development/code-review.md, mas falta:

  • SLAs formais para tempo de resposta
  • Número mínimo de aprovadores por tipo de mudança
  • Processo de escalação quando SLA não é cumprido
  • Métricas e tracking de efetividade do processo
  • Quality gates automatizados no GitHub

Por que resolver isso agora?

  • PRs ficam esperando review por dias
  • Bloqueio de trabalho (waiting on review)
  • Inconsistência em quem aprova o quê
  • Falta clareza sobre urgência
  • Time crescendo, necessidade de processo escalável

Impacto de não resolver

  • Frustração do time com wait times
  • Trabalho bloqueado desnecessariamente
  • PRs grandes acumulam (ninguém quer revisar)
  • Qualidade inconsistente de reviews
  • Bottlenecks em pessoas específicas

Documentação relacionada: - docs/development/code-review.md - Processo atual detalhado - docs/development/git-workflow.md - Workflow de PRs - docs/getting-started/team-agreements.md - Acordos do time

Proposta de Solução

Formalizar SLAs de code review com enforcement via métricas e automação.

SLAs por Prioridade

P0 - Crítico (Hotfix): - Primeiro feedback: < 2 horas - Aprovação final: < 4 horas - Aprovadores: 1 senior/lead - Notificação: Slack + menção direta

P1 - Alta (Feature importante, bug crítico): - Primeiro feedback: < 8 horas (mesmo dia útil) - Aprovação final: < 24 horas - Aprovadores: 1 aprovador - Notificação: Slack

P2 - Normal (Feature regular, refactor): - Primeiro feedback: < 24 horas - Aprovação final: < 48 horas - Aprovadores: 1 aprovador - Notificação: GitHub notifications

P3 - Baixa (Docs, typos): - Primeiro feedback: < 48 horas - Aprovação final: < 72 horas - Aprovadores: 1 aprovador - Notificação: GitHub notifications

Número de Aprovadores

1 Aprovador: - Bug fixes - Features normais - Refatorações pequenas/médias - Docs - Testes

2 Aprovadores: - Mudanças arquiteturais - Breaking changes em APIs - Mudanças em segurança (auth, permissions) - Migrations de banco (production) - Mudanças em CI/CD crítico

Todo o time (consenso): - Mudanças em processo (deve passar por RFC) - Escolha de tecnologias principais - Mudanças em infraestrutura core

Tamanho de PR

Pequeno (< 200 linhas): - ✅ Ideal, review rápido - SLA normal

Médio (200-400 linhas): - ⚠️ Ok, pode demorar mais - SLA +50%

Grande (400-600 linhas): - ⚠️ Considere quebrar - SLA +100% - Requer justificativa no PR

Muito Grande (> 600 linhas): - ❌ Deve ser quebrado - Exceções: migrations geradas, código gerado, refactor mecânico - Requer aprovação de lead para merge

Processo de Escalação

Se SLA não cumprido:

  1. +4h após deadline: Bot comenta no PR lembrando reviewers
  2. +8h após deadline: Menção em canal Slack #tech
  3. +24h após deadline: Escalar para Tech Lead
  4. +48h após deadline: Tech Lead faz review ou designa reviewer

Exceções: - Fins de semana não contam - Feriados não contam - Reviewer em férias (auto-assign outro)

Automação GitHub

Required checks:

# Branch protection rules
Required reviews: 1
Dismiss stale reviews: true
Require review from code owners: false (usar CODEOWNERS para áreas específicas)
Require status checks:
  - lint
  - tests
  - coverage-check

CODEOWNERS:

# Áreas críticas requerem review específico
/app/security/**           @tech-lead @security-team
/infrastructure/**         @devops-team
/app/payments/**          @tech-lead @backend-senior
/.github/workflows/**     @devops-team
/migrations/**            @tech-lead

GitHub Actions (SLA monitoring):

name: PR Review SLA Check

on:
  pull_request:
    types: [opened, ready_for_review]
  schedule:
    - cron: '0 */4 * * *'  # Every 4 hours

jobs:
  check-sla:
    runs-on: ubuntu-latest
    steps:
      - name: Check PR age
        run: |
          # Calculate time since PR opened
          # Comment if SLA exceeded
          # Mention reviewers in Slack

Checklist de Review

Funcionalidade: - [ ] Código funciona conforme descrito - [ ] Edge cases cobertos - [ ] Erros tratados apropriadamente

Qualidade: - [ ] Código legível e bem estruturado - [ ] Nomes claros de variáveis/funções - [ ] Sem duplicação desnecessária - [ ] Segue padrões do projeto

Testes: - [ ] Testes adequados adicionados - [ ] Coverage não diminuiu - [ ] Testes são determinísticos

Segurança: - [ ] Sem secrets hardcoded - [ ] Input validado - [ ] Autenticação/autorização ok

Performance: - [ ] Sem N+1 queries óbvias - [ ] Queries otimizadas

Tipos de Comentários

[nit] - Sugestão menor, não bloqueante

[question] - Pergunta para entender

[suggestion] - Sugestão de melhoria

[blocker] - Deve ser resolvido antes do merge

[praise] - Reconhecer código bom!

Métricas

Tracking mensal: - Tempo médio para primeiro feedback - Tempo médio para aprovação final - % de PRs dentro do SLA - Tamanho médio de PR - Número de ciclos de review por PR

Dashboards: - GitHub Insights - Métricas customizadas via GitHub API - Alertas no Slack para SLAs quebrados

Alternativas Consideradas

Opção 1: SLAs mais agressivos (< 4h first response)

Prós: - PRs movem mais rápido - Menos bloqueio

Contras: - Interrupção constante - Difícil de cumprir para time pequeno - Burnout de reviewers

Por que não escolhemos: 24h é mais realista e sustentável.

Opção 2: Sempre 2+ aprovadores

Prós: - Mais olhos, mais qualidade - Conhecimento distribuído

Contras: - Muito lento - Bottleneck - Overhead desnecessário para mudanças simples

Por que não escolhemos: 1 aprovador é suficiente para maioria dos casos.

Opção 3: Aprovação automática após X dias

Prós: - Garante que PR não fica bloqueado indefinidamente

Contras: - Código ruim pode passar - Remove accountability - Não resolve problema real

Por que não escolhemos: Processo de escalação é melhor solução.

Análise de Impacto

Impacto Técnico

  • PRs movem mais rápido (menos bloqueio)
  • Reviewers têm expectativas claras
  • Automação reduz carga manual
  • Métricas permitem melhoria contínua

Impacto em Negócio

  • ✅ Velocity aumentada
  • ✅ Menos frustração do time
  • ✅ Qualidade mantida/melhorada
  • ✅ Onboarding (processo claro)
  • ⚠️ Setup inicial de automação

Riscos

Risco: SLAs criam pressão e reviews apressados

Mitigação: SLAs são para primeiro feedback, não aprovação. Reviews ruins são identificados em métricas.

Plano de Implementação

Fase 1: Configuração (Semana 1)

  • Configurar branch protection rules
  • Criar CODEOWNERS
  • Setup de automação (SLA bot)
  • Documentar processo

Fase 2: Pilot (Semanas 2-3)

  • Aplicar SLAs em modo soft (avisar mas não bloquear)
  • Coletar feedback
  • Ajustar thresholds

Fase 3: Enforcement (Semana 4)

  • Ativar enforcement
  • Monitorar métricas
  • Escalar quando necessário

Fase 4: Otimização (Mês 2-3)

  • Analisar métricas
  • Identificar bottlenecks
  • Ajustar processo conforme dados

Métricas de Sucesso

Após 1 mês: - ✅ 80%+ PRs dentro do SLA - ✅ Tempo médio de review reduzido em 30% - ✅ Zero PRs bloqueados > 72h

Após 3 meses: - ✅ 90%+ PRs dentro do SLA - ✅ Tamanho médio de PR < 300 linhas - ✅ Satisfação do time com processo (+20%)

Referências