IrisIris
GitHub
01 / 34
IRIS · DECK DE MÉTRICAS

As métricas por trás da engenharia na era da IA

Vinte e cinco sinais que separam entrega durável de movimento caro.

O que mede

Seu time entrega mais com IA. A pergunta real é se esse código sobrevive. O Iris analisa o histórico do Git e dos PRs para te dizer.

Por que importa

As métricas tradicionais de velocidade foram feitas para um mundo onde humanos escreviam todo o código. Esse deck mostra o que construímos para substituí-las.

PRINCÍPIOS · NO DNA

O que o Iris nunca faz

Dez princípios de produto guiam o que construímos. Esses quatro pesam mais no pitch.

×
Sistemas, nunca pessoas

O Iris não rankeia nem pontua pessoas. Toda métrica descreve repositórios, times e dinâmicas — nunca quem escreveu o quê mais rápido.

×
Inteligência agnóstica de fornecedor

Sem plugin de IDE, sem telemetria proprietária, sem lock-in. Lemos seu histórico Git e dados de PR — só isso.

×
Explicável, ou não vai pra produção

Toda métrica precisa caber numa explicação simples. Se uma liderança não entende por que um número existe, o número não existe.

×
Confiança é feature de produto

Analytics de engenharia vira vigilância fácil. O Iris precisa ser seguro para times adotarem. Se uma feature diminui confiança, ela não existe.

PARTE 1

Fundamentos — sinal vs ruído

Quatro métricas sempre presentes em toda análise do Iris. A linha de base.

FUNDAMENTOS · ESTABILIZAÇÃO

Seu código sobrevive à primeira semana?

O número mais importante do Iris.

O que mede

Dos arquivos que seu time tocou, a fração que NÃO foi modificada de novo dentro da janela de churn. Arquivos tocados uma vez contam como estabilizados.

Por que importa

Estabilização próxima de 1.0 significa mudanças que persistem — trabalho real. Próxima de 0.0 é retrabalho disfarçado de entrega. É sinal vs ruído em um número só.

>stabilization_ratio· float 0.0–1.0
exemplo: 0.83
FUNDAMENTOS · CHURN

O custo de primeiras tentativas incompletas

Contagem e peso dos arquivos que precisaram ser re-editados rapidamente.

O que mede

Arquivos modificados 2+ vezes onde um par consecutivo de edições cai dentro da janela de churn. Mais o total de linhas tocadas nessas re-edições.

Por que importa

Churn é o imposto que seu time paga por implementações iniciais frágeis. Diferente de velocidade, ele sobe quando as coisas dão errado — e é visível por arquivo.

>churn_events · churn_lines_affected· int · int
exemplo: 42 · 3 120
FUNDAMENTOS · REVERT

O sinal mais direto de que algo quebrou

Com que frequência seu time desfaz o que entregou?

O que mede

Commits que batem com padrões de revert, como fração do total. A atribuição vai para a ORIGEM do código revertido — não para quem escreveu o revert.

Por que importa

Reverts são raros mas inequívocos. Segmentados por origem e ferramenta de IA, respondem: qual ferramenta tem código revertido? Essa comparação é difícil de contestar.

>revert_rate · revert_by_tool· float · Record
exemplo: 0.024 · { claude: 3, copilot: 7 }
PARTE 2

Classificação — intenção e origem

Antes de comparar, é preciso separar. Separamos pelo que cada commit foi feito, e por quem o escreveu.

CLASSIFICAÇÃO · INTENÇÃO

Feature, fix, refactor, config

Todo commit classificado. De forma determinística. Sem ML.

O que mede

Prefixos de Conventional Commits primeiro, palavras-chave depois, heurística por tipo de arquivo por último. Todo commit recebe uma intenção: FEATURE, FIX, REFACTOR, CONFIG ou UNKNOWN.

Por que importa

"Estamos entregando rápido" não significa nada se 60% é FIX. A distribuição de intenção transforma uma contagem de commits em um retrato do que o time está realmente fazendo.

>commit_intent_distribution· Record<intent, count>
exemplo: { FEATURE: 45, FIX: 32, REFACTOR: 12, CONFIG: 8 }
CLASSIFICAÇÃO · ORIGEM

Humano, assistido por IA ou bot

Sem chute. Lemos co-author tags e padrões de autor.

O que mede

Co-author bate com Copilot, Claude, Cursor, Codeium, Tabnine, Amazon Q, Gemini ou Windsurf → AI_ASSISTED. Nomes de bot conhecidos → BOT. O resto → HUMAN.

Por que importa

Todas as outras métricas do Iris podem ser segmentadas por origem. Essa é a dimensão que destrava análise de impacto de IA — sem pesquisas, sem autorrelato.

>commit_origin_distribution· Record<origin, count>
exemplo: { HUMAN: 210, AI_ASSISTED: 140, BOT: 28 }
CLASSIFICAÇÃO · COBERTURA

Quanto do trabalho com IA já é visível

A outra metade desse número é o seu gap de atribuição.

O que mede

Commits atribuídos a IA como porcentagem de todos os commits não-bot. Um proxy de quanto do uso real de IA está declarado no metadado do git.

Por que importa

Compliance, liderança de governança de IA e CTOs céticos fazem a mesma pergunta: quanto de IA tem no nosso código? Essa é a resposta que você consegue defender em reunião.

62.4% dos commits não-botatribuídos a ferramentas de IA
PARTE 3

Qualidade e durabilidade — o código dura?

Do formato do commit à sobrevivência das linhas. Como o código realmente envelhece.

QUALIDADE · FORMATO

Código de IA tem um formato. Veja.

Focado, espalhado, em bloco ou cirúrgico — por origem.

O que mede

Mediana de arquivos, linhas por arquivo e espalhamento por diretório por commit, agrupados por origem. O formato típico de cada origem emerge: profundo, largo, fino ou amplo.

Por que importa

Commits gerados por IA tendem a ser largos e rasos (spread) — scaffolding, boilerplate. Commits humanos tendem a ser cirúrgicos ou focados. O padrão é mensurável, não anedótico.

>commit_shape_dominant· enum
exemplo: "spread" | "focused" | "bulk" | "surgical"
QUALIDADE · LATÊNCIA DE FIX

O código de IA quebra mais rápido?

Medido em horas — do primeiro commit ao retrabalho.

O que mede

Mediana de tempo entre modificações consecutivas do mesmo arquivo na janela de churn. A atribuição vai para o commit ORIGINAL, não para o fix.

Por que importa

Faixas: rápido < 72h (bugs óbvios), médio 72–168h (pego em review/prod), lento > 168h (sutil). Compare taxas de retrabalho rápido entre IA e humano lado a lado.

>fix_latency_median_hours· float hours
exemplo: 28.4
QUALIDADE · CASCATAS

Um commit ruim, três follow-ups

Raio de impacto de código que não se assenta.

O que mede

Um commit gatilho seguido por 1+ commits FIX em arquivos compartilhados na janela de churn. Profundidade = número de fixes. A atribuição vai para a origem do gatilho.

Por que importa

Uma taxa de 30% de cascata significa que quase um terço dos commits gatilho quebra algo. Segmentado por ferramenta de IA, mostra qual ferramenta tem o maior custo de limpeza.

>cascade_rate · cascade_median_depth· float · float
exemplo: 0.18 · 2.0
QUALIDADE · DURABILIDADE

Quanto do código de IA sobrevive ao trimestre

Git blame no HEAD. O teste de sobrevivência definitivo.

O que mede

Para cada origem e cada ferramenta de IA: linhas introduzidas vs linhas ainda presentes no HEAD. Taxa de sobrevivência. Idade mediana das linhas que sobreviveram.

Por que importa

Nosso benchmark interno encontrou linhas atribuídas a IA sobrevivem a 79% vs humano 64% — em repos primados. Durabilidade é a manchete contra-intuitiva: código de IA pode durar mais quando bem atribuído.

survival_rate (AI_ASSISTED)0.79
0.0 nunca sobrevive · 1.0 tudo sobrevive
QUALIDADE · ACEITAÇÃO

Código de IA passa no review?

PRs que passam de primeira vs rodadas de changes-requested.

O que mede

Por origem e por ferramenta de IA: fração de commits que passaram por um PR; desses, fração fundida com zero CHANGES_REQUESTED; mediana de rodadas de review.

Por que importa

Duas ferramentas de IA podem produzir código que se comporta muito diferente no review. A taxa de aceitação quantifica isso — é o elo que falta entre promessas de "produtividade IA" e resultados revisados por pares.

>acceptance_by_origin.AI_ASSISTED.single_pass_rate· float 0.0–1.0
exemplo: 0.71
QUALIDADE · FUNIL

A jornada completa, por origem

Commitado → Em PR → Estabilizado → Ainda vivo.

O que mede

Funil de entrega de quatro estágios computado por origem, com taxas de conversão entre cada passo. Compõe distribuição de origem, aceitação, estabilização e durabilidade.

Por que importa

IA pode esmagar commits e passar no review — e ainda cair na estabilização. O funil mostra exatamente onde cada origem ganha e onde vaza. Um gráfico, a história toda.

>origin_funnel.AI_ASSISTED· FunnelStage[]
exemplo: [Committed → InPR → Stabilized → Surviving]
PARTE 4

Detecção — o que está escondido à vista

Padrões que você não enxerga até procurar.

DETECÇÃO · ATRIBUIÇÃO

O trabalho com IA que ninguém marcou

Commits marcados como humanos com velocidade em formato de IA.

O que mede

Marca commits HUMAN que batem 2+ de: 3 commits em 2h, 100+ LOC, < 30min desde o anterior, 5+ arquivos. Nunca chamamos de IA — só mostramos o gap para investigação.

Por que importa

Se ai_detection_coverage diz 40% e o gap de atribuição marca outros 30% de commits como suspeitos, sua pegada real de IA é o dobro do que o painel de governança mostra.

>attribution_gap.flagged_pct· float 0.0–100.0
exemplo: 28.6
DETECÇÃO · DUPLICATAS

Copy-paste cresceu 8× com IA

GitClear 2025. Medido. Agora confira o seu.

O que mede

Commits com 5+ linhas idênticas contíguas não-triviais em múltiplos arquivos. Taxa por commit, tamanho mediano do bloco, segmentado por origem e por ferramenta de IA.

Por que importa

Copy-paste é o atalho para a entropia: o mesmo bug, em cinco lugares, pra sempre. Uma taxa crescente de duplicatas é o indicador antecipado de dívida que ainda não foi paga.

>duplicate_block_rate· float 0.0–1.0
exemplo: 0.14
DETECÇÃO · MOVIMENTAÇÕES

Refatorações de verdade parecem diferentes

E conseguimos distinguir no nível do diff.

O que mede

Porcentagem das linhas mudadas que foram movidas entre arquivos no mesmo commit. Razão de refatoração = movido / (movido + duplicado) — um índice de saúde.

Por que importa

Código movido caiu de 24% para 9.5% após IA nos dados da indústria. Quando sua razão de refatoração sobe, o time está de fato extraindo e organizando — não só gerando mais.

>refactoring_ratio· float 0.0–1.0
exemplo: 0.62
DETECÇÃO · PROVENIÊNCIA

Melhorando código maduro, ou retrabalhando o do mês?

A idade das linhas que seu time está reescrevendo.

O que mede

O git-blame coloca a idade de cada linha modificada em faixas: < 2 semanas, 2–4 semanas, 1–12 meses, 1–2 anos, 2+ anos. Mais porcentagem mexendo em código novo vs maduro.

Por que importa

A GitClear encontrou que 79% das linhas revisadas em 2024 tinham menos de um mês. Se a maior parte do esforço do time é re-mexer em código novo, não está melhorando o codebase — está girando.

79% das revisõesem código com < 1 mês — indústria 2024
DETECÇÃO · CHURN DE CÓDIGO NOVO

O canário de 14 dias

Código que é re-editado em menos de duas semanas.

O que mede

Arquivos que receberam código novo e foram modificados de novo em 14 ou 28 dias. Segmentado por origem e ferramenta de IA, atribuído ao commit INTRODUTOR.

Por que importa

Código novo que volta a ser tocado em duas semanas normalmente significa que a primeira tentativa errou. Uma taxa de 2 semanas em alta é o alarme de qualidade mais cedo que dá para ligar.

>new_code_churn_rate_2w· float 0.0–1.0
exemplo: 0.31
DETECÇÃO · ALVO DOS FIXES

De quem é o código que atrai bugs?

Parcela justa vs parcela desproporcional.

O que mede

Para cada arquivo-alvo de um commit FIX, creditar a origem do último commit não-fix. Calcular parcela do código vs parcela dos fixes vs desproporção (fix/code).

Por que importa

Se a IA escreveu 30% dos commits mas atrai 50% dos fixes, a desproporção = 1.67 — o sinal mais claro de que o código de IA custa mais para manter do que parece.

>fix_target_by_origin.AI_ASSISTED.disproportionality· float (1.0 = fair share)
exemplo: 1.67
PARTE 5

Tempo e estrutura — onde e quando

Seu repo tem zonas. Seu ano tem pontos de virada. Mapeamos os dois.

ESTRUTURA · MAPA DE ESTABILIDADE

Seu repo tem zonas

Umas estáveis. Outras em chamas. Nomeie-as.

O que mede

Consolidado por diretório (profundidade 2 por padrão) de arquivos tocados, estabilizados, eventos de churn e taxa de estabilização. Diretórios classificados estáveis ≥ 0.80, voláteis < 0.50.

Por que importa

"O backend é uma bagunça" é uma sensação. O mapa de estabilidade transforma isso em `src/payments/` 0.41 vs `src/shared/` 0.92. É algo que dá para corrigir, alocar time ou documentar.

>stability_map[]· DirectoryMetrics[]
exemplo: src/payments/ — 0.41 · src/shared/ — 0.92
ESTRUTURA · CHURN EM DETALHE

Nomeie os arquivos que estão custando caro

Top arquivos em churn com a cadeia. E os pares que se mexem juntos.

O que mede

Top 10 arquivos em churn com a cadeia completa (ex.: feat → fix → fix → refactor). Mais acoplamento de arquivos: pares que co-ocorrem em commits com alta taxa de acoplamento.

Por que importa

Números agregados dizem que algo está errado. O churn em detalhe diz qual arquivo, qual padrão e o que mais muda junto. Agora dá para atacar a causa raiz, não o sintoma.

>churn_top_files[0].chain· string
exemplo: "feat→fix→fix→fix"
TEMPO · LINHA DO TEMPO

Cada semana conta uma história

Visão semanal + quatro detectores de padrão.

O que mede

Consolidado por semana ISO: commits, LOC, mix de intenção, mix de origem, estabilização, churn, PRs. Padrões auto-detectados: burst_then_fix, quiet_period, ai_ramp, intent_shift.

Por que importa

Quando uma métrica mexe, você precisa saber por quê. A linha do tempo + padrões dá uma história anotada — não só números, mas os momentos que os geraram.

>activity_patterns[].pattern· enum
exemplo: "ai_ramp" · week 10/14
TEMPO · CICLO DE PR

Quantifique a fricção no review

Antes que vire uma reclamação na retro.

O que mede

Tempo mediano até o merge, tamanho mediano do PR (arquivos e linhas), mediana de rodadas de review e taxa de primeira passada — a fração de PRs fundidos sem CHANGES_REQUESTED.

Por que importa

A taxa de primeira passada é a métrica de PR que mais se correlaciona com a satisfação do time. Junto com o tempo até o merge, diz se o review é porta ou gargalo.

>pr_single_pass_rate · pr_median_time_to_merge_hours· float · float
exemplo: 0.64 · 18.2
ESTRUTURA · OPERAÇÕES

O mix de como seu time escreve

Adicionadas, removidas, atualizadas, movidas, duplicadas.

O que mede

Taxonomia leve de cinco baldes para operações de linha por commit, a partir do diff mais detectores de duplicata e movimento. Visão geral mais breakdown por origem.

Por que importa

Um time dominado por `added` está crescendo rápido; por `updated`, iterando; por `moved`, refatorando; por `duplicated`, acumulando dívida. O formato do trabalho em um gráfico.

>operation_dominant· enum
exemplo: "updated"
PARTE 6

Movimento — velocidade sem ser cego

Quão rápido é o time — e essa velocidade está paga em durabilidade?

MOVIMENTO · VELOCIDADE

Velocidade não significa nada se a durabilidade cai

Commits/semana, linhas/semana e a correlação com qualidade.

O que mede

Janelas de 14 dias de commits/semana e linhas/semana. Tendência classificada como acelerando, estável, desacelerando. Correlacionado com estabilização por janela — a conexão com durabilidade.

Por que importa

Acelerando com durabilidade estável = progresso real. Acelerando enquanto estabilização cai = você está entregando ruído mais rápido. Velocidade sozinha mente. Velocidade + durabilidade diz a verdade.

>velocity.trend · velocity.durability_correlation· enum · enum
exemplo: "accelerating" · "decoupled"
MOVIMENTO · ADOÇÃO

O dia em que a IA mudou suas métricas

Detectado automaticamente. Antes vs depois, lado a lado.

O que mede

Encontra o ponto de inflexão onde os commits atribuídos à IA começaram. Separa o histórico em pré-adoção e pós-adoção, cada um com um snapshot completo de ReportMetrics.

Por que importa

Prova antes-e-depois. A estabilização foi de 0.71 para 0.84 desde o rollout do Copilot? É um número para um slide. Inverteu? É um número para olhar rápido.

>adoption_timeline.adoption_confidence· enum
exemplo: "clear" · pre 0.71 → post 0.84
PRÓXIMO

Veja seus próprios números

Um comando de CLI. Sem servidores. Sem telemetria SaaS em código privado.

O que mede

O Iris roda localmente contra seu histórico Git e PRs do GitHub, gera um relatório em minutos e opcionalmente envia as métricas para seu tenant para visões cross-repo.

Por que importa

Tudo nesse deck é aberto e auditável. Leia a metodologia, rode no seu próprio repo e decida se o sinal é real.