User story
Como quem lê a métrica de durabilidade, eu quero que um clone raso suprima o cálculo em vez de
inflá-lo, para nunca receber um número errado sem aviso.
O problema
durability mede quanto do código escrito numa janela ainda está vivo depois dela, usando git blame
para saber quando cada linha viva nasceu. Em clone shallow o blame para no commit de fronteira e
credita a ele todas as linhas antigas — que entram na janela e inflam a métrica, sem levantar erro
nenhum.
Hoje o engine não testa --is-shallow-repository em lugar nenhum: grep -rn shallow iris/ não
retorna nada relevante. O que existe é o precedente de detecção em
.github/actions/iris-pr/action.yml:41, que testa o shallow para passar --no-context ao iris pr —
outra decisão, o mesmo teste.
Acceptance criteria
Scope / non-goals
Dentro: o guard. Fora: mudar o cálculo de durabilidade, e mudar o iris pr.
Se encaixa em qual estágio?
Stage 2 — Engine: tighten signal quality, reduce noise. Vale independentemente da coleta
centralizada: qualquer clone raso hoje enviesa a métrica em silêncio.
Implementation notes
Sem dependência de build — entra sozinha e não muda comportamento de clone completo. O worker clona
completo por desenho; este guard é a rede para o caso de um clone chegar raso por engano.
Links
User story
Como quem lê a métrica de durabilidade, eu quero que um clone raso suprima o cálculo em vez de
inflá-lo, para nunca receber um número errado sem aviso.
O problema
durabilitymede quanto do código escrito numa janela ainda está vivo depois dela, usandogit blamepara saber quando cada linha viva nasceu. Em clone shallow o blame para no commit de fronteira e
credita a ele todas as linhas antigas — que entram na janela e inflam a métrica, sem levantar erro
nenhum.
Hoje o engine não testa
--is-shallow-repositoryem lugar nenhum:grep -rn shallow iris/nãoretorna nada relevante. O que existe é o precedente de detecção em
.github/actions/iris-pr/action.yml:41, que testa o shallow para passar--no-contextaoiris pr—outra decisão, o mesmo teste.
Acceptance criteria
git rev-parse --is-shallow-repositorydurabilitynão é calculada e a chave fica ausente dometrics.json—campo ausente, nunca número errado
Scope / non-goals
Dentro: o guard. Fora: mudar o cálculo de durabilidade, e mudar o
iris pr.Se encaixa em qual estágio?
Stage 2 — Engine: tighten signal quality, reduce noise. Vale independentemente da coleta
centralizada: qualquer clone raso hoje enviesa a métrica em silêncio.
Implementation notes
Sem dependência de build — entra sozinha e não muda comportamento de clone completo. O worker clona
completo por desenho; este guard é a rede para o caso de um clone chegar raso por engano.
Links