Skip to content

Commit f3dc01e

Browse files
authored
Merge pull request #632 from melgarafael/triagem/evolucao-08set
docs(triagem): a cópia velha do procedimento lê como completa, e mais quatro lições de 08/09
2 parents 6aee656 + 6bd9da8 commit f3dc01e

2 files changed

Lines changed: 79 additions & 0 deletions

File tree

‎.claude/commands/triagem-de-pr.md‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,18 @@ Leia o `triagem/TRIAGEM.md` **do `origin/main`** e siga-o à risca:
88
git fetch origin && git show origin/main:triagem/TRIAGEM.md
99
```
1010

11+
**E confira que você leu o inteiro, porque cópia velha lê como completa.** Em 08/09/2026 uma sessão
12+
abriu o arquivo do disco: **319 linhas**, terminando direitinho na seção "Modos de falha", sem nada
13+
indicando que faltava alguma coisa — o `origin/main` tinha **1800**. Vinte seções não foram lidas, e
14+
o passe 0-bis foi reinventado do zero. Nenhum sintoma; documento velho não avisa que é velho.
15+
16+
```bash
17+
echo "disco: $(wc -l < triagem/TRIAGEM.md) | main: $(git show origin/main:triagem/TRIAGEM.md | wc -l)"
18+
```
19+
20+
Se os dois números divergirem, **o do disco não existe para esta sessão** — nem para consulta rápida,
21+
nem para "só conferir uma coisa". O mesmo vale para este arquivo de comando.
22+
1123
O número do PR veio no argumento; se não veio, monte a fila com **os dois** comandos abaixo — o
1224
segundo não é opcional, e está explicado no passe 0-bis:
1325

‎triagem/TRIAGEM.md‎

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,21 @@ gh api repos/{owner}/{repo}/issues/<n>/timeline --jq '.[]|select(.event=="closed
5151
gh pr view <n> --json comments --jq '[.comments[]|select(.body|test("pass=9|pass=10"))]|length'
5252
```
5353

54+
**Em 08/09/2026 a varredura rendeu mais seis, e o padrão ficou nítido:** #612 (@CristianoFF43,
55+
fechado **29 minutos** depois de abrir), #622 (@rafaelbatistazz, **3min34s**), e #421/#423/#424/#425
56+
(@rafaeskytrabalho, **os quatro no mesmo segundo**). Comentários humanos nos seis: **zero**. Dentro
57+
deles, nove consertos com teste e fragmento — entre os quais o lembrete de compromisso que nunca
58+
dispara, a IA sem onde gravar campo personalizado, e o fuso do dia civil que faz o horário oferecido
59+
sumir da consulta seguinte. As frases com que fecharam ("aberto no repo errado", "cancelando",
60+
"ruído") são de gente pedindo desculpa por existir. **Nenhuma tinha errado.**
61+
62+
**A terceira pergunta, que faltava aqui e é a única que decide:** *o defeito ainda está vivo na
63+
`main` de hoje?* Não se responde por semelhança de nome de arquivo, e **rastro não é resgate** —
64+
`git log --grep="#<n>"` achar commit prova que alguém mexeu no assunto, não que o conteúdo entrou
65+
(um resgate desta casa levou 3 de 16 arquivos, corretamente). E um teste na `main` com nome parecido
66+
não é o mesmo teste: `barra-lateral-nao-flutua` e `barra-lateral-nao-perde-o-sticky` medem coisas
67+
diferentes. Leia o diff dele e confira a linha.
68+
5469
**Fechado pelo autor + zero veredito nosso = recuperar.** Em 06/09/2026, @maugarciasa fechou #595 e
5570
#596 **no mesmo segundo**, duas horas depois de abrir. Levavam três consertos medidos **em
5671
produção**: um id de modelo fixo (`claude-haiku-4-5`) que matava o flywheel em toda instalação
@@ -145,6 +160,18 @@ cobrem o artefato que o self-hoster instala. Um triador que a lesse declararia "
145160
obrigatórios" tendo rodado 3 de 5, dentro do próprio documento que o `CLAUDE.md` aponta
146161
como o lugar onde medir contra a régua errada é o modo de falha número um.
147162

163+
**A prévia precisa virar worktree, senão não se roda nada nela.** `merge-tree` devolve uma *tree*,
164+
e tree não se faz checkout. São dois comandos, e sem eles o passe 3 fica na teoria:
165+
166+
```bash
167+
T=$(git merge-tree --write-tree origin/main <sha-do-pr>)
168+
C=$(git commit-tree $T -p origin/main -p <sha-do-pr> -m "prévia do merge (não publicar)")
169+
git branch -f previa/<n> $C && git worktree add ../wt/previa-<n> previa/<n>
170+
```
171+
172+
Apague os dois no fim (`git worktree remove`, `git branch -D`) — eles não vão a lugar nenhum, e o
173+
passe 12-bis cobra o disco.
174+
148175
Meça exit code **direto**. `cmd | tail` devolve o exit do `tail` — verde falso.
149176

150177
---
@@ -544,6 +571,16 @@ escrito código para um defeito inexistente.
544571
**Nenhum pedido sai sem a medição que prova o defeito, anexada ao pedido.** Se você não mediu, não é
545572
pedido: é pergunta, e vai redigido como pergunta.
546573

574+
**E há uma classe de afirmação que nunca é publicável: a que se apoia em ausência de registro
575+
público.** Medido em 08/09/2026: a spec do PR #628 dizia que uma decisão de produto fora *"tomada
576+
diretamente com o dono do produto"*, e não havia issue, discussão ou comentário registrando isso. O
577+
veredito em rascunho dizia *"decidiu no lugar do dono"*. O cético derrubou, e com razão: a
578+
explicação concorrente — **a conversa aconteceu em canal privado** — não é eliminável por quem tria.
579+
Só o dono elimina.
580+
581+
*Não achei registro* mede a **sua busca**, não a **conduta dele**. Vira pergunta ao dono antes de
582+
publicar; ao contribuidor vai marcada como pergunta, com essas palavras.
583+
547584
---
548585

549586
## 8. Reconciliação
@@ -694,6 +731,22 @@ VERSÃO: <patch | minor | major | nenhuma> — <o que o dono da VPS precisa
694731
Ausência de dado herda a frase otimista de quem escreve; escrever o vazio explicitamente é o que
695732
impede isso.
696733

734+
**Há um segundo campo que o cético cobra, e ele é sobre o TOM: de quem é a dívida.** Para cada
735+
bloqueador, antes de escrever, responda — *existia uma guarda que deveria ter pego isto, e ela
736+
estava cega?* Se sim, o bloqueador é **nosso**, ele não tinha como saber, e o texto muda de "faltou"
737+
para "a nossa guarda não enxerga, e eu conserto".
738+
739+
Medido em 08/09/2026, no PR #628: **dois dos cinco bloqueadores que eu ia cobrar dele eram nossos.**
740+
As duas guardas de packaging (`canal-stable-move-em-bloco.test.ts:78` e
741+
`packaging-artefato-do-cliente.test.ts:226`) trazem a lista das nossas imagens **escrita à mão** e
742+
fazem `toContain` sobre ela — uma quarta imagem é invisível por construção, e as duas passaram. Ele
743+
tinha atualizado todos os gates que sabem contar. O terceiro era uma regressão de tradução nascida
744+
no **commit de merge** dele, colateral de conflito num hunk vizinho: sem a atribuição, lê como
745+
desleixo.
746+
747+
O custo de errar essa separação é assimétrico. Cobrar dele o que é nosso queima quem contribuiu de
748+
graça; assumir o que é dele não custa quase nada.
749+
697750
Aplique a label do desfecho: `triagem:pronto`, `triagem:bloqueado` ou `triagem:decisao`.
698751

699752
---
@@ -889,6 +942,20 @@ Cada um destes foi cometido de verdade nesta casa, e é por isso que estão escr
889942
9. `NÃO MEDIDO` ausente. É campo obrigatório.
890943
10. Exigir sem medir (passe 7).
891944
11. Tratar rede de segurança como durável só porque existe. Tag, backup e réplica também se medem.
945+
12. **Ler este arquivo do disco.** É o modo de falha nº 1 aplicado ao próprio procedimento, e ele
946+
foi cometido em 08/09/2026: a árvore de trabalho estava numa branch cujo `TRIAGEM.md` tinha
947+
**319 linhas** enquanto o do `origin/main` tinha **1800**. Vinte seções nunca foram lidas —
948+
inclusive o 0-bis, que a triagem reinventou do zero achando que era passe novo. A primeira linha
949+
da sessão é `git show origin/main:triagem/TRIAGEM.md`, e o controle é `wc -l` nos dois.
950+
13. `gh run view --log-failed` devolve *"run is still in progress"* enquanto **outro job do mesmo
951+
run** estiver pendente — e isso lê como "não consegui medir". Meça pelo job (`--job <id> --log`)
952+
ou espere o run inteiro fechar.
953+
14. Contar o vermelho do CI pela lembrança em vez do rodapé de agora. Um veredito de 08/09/2026
954+
dizia dois portões vermelhos quando eram **três**: o `e2e` estava pendente na hora da medição,
955+
fechou vermelho depois, e ficou em `NÃO MEDIDO`. **Reconfira `gh pr checks` imediatamente antes
956+
de publicar** — o alvo se move enquanto você escreve.
957+
15. Publicar afirmação apoiada em ausência de registro público (passe 7).
958+
16. Cobrar do contribuidor bloqueador cuja guarda nossa estava cega (passe 9).
892959
12. **Fila medida em paralelo satura a máquina, e a saturação mente em vermelho.** Medido em
893960
2026-09-03: sete agentes de triagem rodando ao mesmo tempo levaram o `load average` de 0,9 para
894961
**90,7**, e nesse regime o `next build` morreu duas vezes com `ELIFECYCLE 143` — `SIGTERM`, não

0 commit comments

Comments
 (0)