Análise baseada em evidências do atrito de revisão em getsentry/sentry — 500 PRs ao longo de 90 dias, com análise aprofundada de comentários e propostas de ADRs.
Este estudo mede onde o atrito de revisão de código se concentra em getsentry/sentry e identifica quais Architecture Decision Records (ADRs) poderiam reduzir ciclos repetidos de discussão. Diferentemente de um despejo superficial de métricas, vamos além dos números agregados: lemos as threads reais de comentários de PRs de alto atrito, classificamos os temas recorrentes de discussão com evidências e propomos ADRs fundamentados em exemplos reais.
| Parâmetro | Valor |
|---|---|
| Repositório | getsentry/sentry |
| Janela | 90 dias (encerrando em abril de 2026) |
| PRs mergeados analisados | 500 |
| PRs fechados sem merge analisados | 500 |
| PRs abertos amostrados | 251 |
| Análise aprofundada de comentários | 60 PRs de alto atrito (50 mergeados + 10 fechados sem merge) |
| Total de comentários analisados | 965 (604 não-bot) |
Principais conclusões
Seção intitulada “Principais conclusões”-
A mediana do tempo até o merge é de 4,98 horas, mas o P90 chega a 70,54 horas — um multiplicador de 14x. PRs grandes (≥10 arquivos ou ≥400 de churn) têm uma mediana de tempo até o merge de 22,52 horas contra 1,66 hora para PRs minúsculos.
-
O tamanho do PR é o preditor de atrito mais forte. PRs grandes atingem o quartil de alto atrito 57,4% das vezes. PRs minúsculos atingem apenas 9,8% das vezes. PRs de funcionalidade (
feat) têm a maior taxa de atrito, em 38,6%, quase o dobro dos PRs de correção (17,6%). -
Os 9 principais temas de discussão em PRs de alto atrito, identificados a partir de 604 comentários não-bot em 60 PRs:
- Design de API e valores padrão — 38,3% dos PRs de alto atrito
- Evidência de testes e cobertura — 38,3%
- Padrões de componentes e estilização — 35,0%
- Gerenciamento de estado e fluxo de dados — 35,0%
- Documentação de código — 31,7%
- Segurança de tipos e tratamento de erros — 30,0%
- Follow-up e scope creep — 25,0%
- Segurança e permissões — 20,0%
- Nomenclatura e consistência — 11,7%
-
Revisores automatizados encontram bugs reais — mas as mesmas categorias de bug se repetem entre os PRs. Revisores bot (
sentry[bot],sentry-warden[bot],cursor[bot]) representam 23,7% dos comentários substantivos de revisão e aparecem em 68,3% dos PRs de alto atrito. Ler as conclusões reais revela pelo menos 10 padrões recorrentes (manipuladoresDoesNotExistausentes,.filter().first()com except inalcançável, acesso direto a dict em respostas de API, divergências de chaves de opção, listas companheiras esquecidas etc.) que deveriam ser promovidos da revisão agêntica cara para verificações determinísticas baratas (regras de Ruff/Semgrep, modo strict do mypy, registros tipados). Um PR (#111522) teve o mesmo padrão sinalizado 4 vezes em uma única passagem de revisão — exatamente o caso em que uma única regra de lint compensa para sempre. -
PRs abandonados sinalizam ambiguidade de decisão não resolvida. 12 PRs fechados sem merge (2,4%) tiveram ≥10 itens de discussão. Esses PRs abandonados tiveram 2x a mediana do tempo até o merge e 2,5x a mediana de eventos de revisão em comparação com PRs de alto atrito mergeados.
-
92 PRs abertos estão parados há 14+ dias, sendo 33 parados há 30+ dias. O PR parado mais discutido tem 55 eventos de revisão e está aberto há mais de 760 horas.
Estrutura do estudo
Seção intitulada “Estrutura do estudo”- Metodologia — Coleta de dados, ferramentas, tamanhos de amostra e limitações
- Métricas de baseline — Métricas agregadas, percentis e segmentação por tamanho
- Mapa de atrito — Detalhamento de atrito por domínio e área
- Temas de discussão — Análise de temas embasada em evidências a partir de threads reais de comentários
- Atrito de revisão automatizada — Revisores bot como fonte de atrito de primeira classe
- PRs abandonados — Padrões em PRs fechados sem merge e parados
- Propostas de ADRs — Propostas detalhadas fundamentadas em evidências
Reprodutibilidade
Seção intitulada “Reprodutibilidade”Todos os dados e scripts são publicados para auditoria:
- Pasta do estudo:
studies/sentry-pr-review-friction - Script do método:
analyze_sentry_prs.py - Artefatos de dados:
output/
# Reproduce the full pipelinepython analyze_sentry_prs.py collect --repo getsentry/sentry --days 90 --limit 500python analyze_sentry_prs.py analyzepython analyze_sentry_prs.py report