GuyFolkz
Cada vídeo do canal deixa um material. Estão todos aqui, inteiros — sem e-mail, sem cadastro, sem "clique para baixar".
Todo número que aparece nos vídeos tem linha numa matriz de fontes. O que eu não medi, eu não falo.
De graça · sem cadastro · nada para vender aquiA tabela do vídeo "O modelo caro não digita" — a consulta, a escada de custo por etapa e o que eu tive que refutar.
De graça, sem cadastro. Copia, adapta, usa.
De graça, sem cadastro. Copia, roda, adapta. Se te servir, o crédito é seu.
Companheira do vídeo "O modelo caro não digita". Tudo aqui saiu de consulta rodada, log lido ou página oficial de fornecedor. Onde não havia contador, eu digo que não havia — inclusive quando isso joga contra mim.
Para quem é: quem opera IA em produção (não demo) e não consegue responder "quanto isso custa por mês, e por etapa?" sem chutar.
Nada entra na tabela sem carimbo. É a única parte disto que importa mesmo — os números são meus, o método é seu.
| Status | O que significa | O que você precisa ter em mãos |
|---|---|---|
| MEDIDO | Saída real de comando, query ou log | O comando e a saída, colados |
| RE-MEDIDO | Verificado de novo, depois, por quem não produziu o dado | A segunda execução, com data diferente |
| EXTERNO | Imprensa técnica ou página oficial do fornecedor | O endereço da fonte |
| ALEGADO | Afirmação sem contador que a sustente | ⛔ Não usa. Nem em slide interno. |
| REFUTADO | Já esteve na tabela e a medição derrubou | Fica na tabela, riscado, com o que derrubou |
A regra que faz isso funcionar: ALEGADO não vira MEDIDO com o tempo. Ou você tem o contador hoje, ou o número não existe. Repetir cinco vezes numa reunião não promove um número.
O custo real não está no painel do fornecedor — está no seu banco, se você registrar cada chamada. Uma linha por chamada, com etapa, modelo e custo. A partir daí:
SELECT workflow, count(*), sum(cost_usd)
FROM llm_usage
WHERE created_at > now() - interval '30 days'
GROUP BY workflow
ORDER BY sum(cost_usd) DESC;
Se você não tem a tabela llm_usage, esse é o trabalho da tarde — não a migração de modelo. Sem ela, qualquer decisão de custo é preço de tabela, e preço de tabela é o que o fornecedor cobra, não o que a sua operação gasta.
Sistema meu em produção que classifica documentos. Sem nome de cliente, sem setor: o custo é da minha operação, não dado de negócio de ninguém.
| Recorte | Chamadas / 30 dias | Custo | Status |
|---|---|---|---|
| Um sistema, sozinho | 11.996 | US$ 7,89 | MEDIDO |
| Os quatro que rodam nessa arquitetura | 12.438 | US$ 8,64 | MEDIDO |
| Etapa | Modelo | Chamadas | Custo | Custo unitário |
|---|---|---|---|---|
| Triagem | barato | 9.005 | US$ 1,59 | US$ 0,00018 |
| Análise por evidência | intermediário | 3.204 | US$ 2,12 | US$ 0,00066 |
| Análise completa | forte | 198 | US$ 4,76 | US$ 0,02404 |
198 chamadas custam mais que 9.005. E é exatamente o que tem que acontecer: 9 mil das 12 mil chamadas nunca chegam perto do modelo caro. O barato filtra volume, o forte decide o que sobrou.
Como ler a sua: o total não diz nada. O formato diz tudo. Se o seu custo unitário for parecido entre as etapas, você não tem arquitetura — tem um modelo só fazendo tudo, e está pagando preço de julgamento por trabalho de digitação.
Efeito medido de mexer na etapa certa (subir a triagem para um modelo mais forte, não trocar tudo): 84 → 48 aprovados de 99, e 8 → 0 falsos positivos de alta prioridade. Metade do trabalho a jusante desapareceu — e isso não aparece na conta de tokens.
Comparação direta que eu tenho, com a ressalva junto: a mesma análise completa saiu por US$ 0,00881 no modelo aberto contra US$ 0,01666 no americano equivalente — 1,9×. ⚠️ n = 143 de um lado, 5 do outro. Cinco é pouco. Eu não vou fingir que não é.
Bateria controlada: 3 cenários (bug fix · refatoração · feature por TDD) × 3 modelos, fixtures isoladas, verificada por um agente que não executou nada.
| Papel | Nota | Tempo | Tokens in/out | Onde eu uso |
|---|---|---|---|---|
| Executor rápido | 7,7 | 1m51s | 188k / 10k | Volume, tarefa fechada com comando de prova |
| Executor premium | 9,2 | 7m45s | 184k / 13k | Quando o custo de errar > custo do tempo |
| Revisor detalhista | 8,3 | 4m52s | 161k / 17k | Revisar diff — virou meu revisor padrão |
Resultado da bateria: 12 agentes · 9/9 suítes verdes · 9/9 checksums intactos (ninguém adulterou o teste pra fazer passar) · 0 retentativas. RE-MEDIDO 3 dias depois, no servidor: 9/9 verdes, 60 asserções. O código continuava de pé.
O dado que mais me convenceu: o cenário mais difícil — feature por TDD — saiu com nota 9,5 usando 26.733 tokens de entrada, 45% a menos que o executor rápido e 40% a menos que o revisor. Modelo melhor não é o que pensa mais; é o que precisa reler menos.
A falha do rápido, literal: não tratou hífen na borda da string. Não é "alucinação". É bug de borda, do tipo que teste pega. É por isso que a régua é o comando, não a impressão.
Esta seção é o motivo de a tabela ser confiável. Se a sua não tem uma, ela é folder.
exit=124 foram com 3.404, 2.304 e 1.860 bytes — a variável não era o tamanho.Do lado do orquestrador, dentro de um plano fixo: 3,9 milhões de tokens de entrada processados. Por tabela isso seria US$ 1,99 — e eu paguei US$ 9,99.
Eu pago mais caro que o meu próprio consumo, e vale a pena. O que se compra ali não é token: é não ficar sem arquiteto às três da tarde. Quando a cota estourou, até chamada de 50 tokens foi recusada — e aí o custo não é o plano, é o dia parado.
Conclusão que a tabela sustenta e a maioria dos artigos não: a economia não estava em dólar. A conta inteira é US$ 8,64. Migrando tudo, a economia caberia numa moeda. Estava em janela — em não gastar a capacidade do modelo que decide com trabalho que qualquer modelo faz.
A parte que quase ninguém publica, e que é onde a régua prova que funciona:
| Número que eu tinha | Por que ficou de fora |
|---|---|
| "Economizei X% trocando caro por barato" | Não existe par controlado limpo. Seria inventar. |
| Custo em dólar do lado do orquestrador | O registro tem tokens, não dinheiro. Converter é estimativa disfarçada de medição. |
| Tokens/custo do executor local | O CLI não emite telemetria de uso. Ausência de fonte, declarada. |
| "Modelo instável após ~5 execuções" | As 2 mortes estão medidas; o "após 5" é caracterização sem contador. Entrou sem o número. |
| "16 tiros + 3 rodadas" de consumo | Repetido 5× em conversa e nunca produzido por um contador. Descartado. |
Atribuição de arquivos por git blame | Outras sessões tocaram os arquivos depois. Só vale o log do orquestrador. |
| Número | O que significa | Fonte (comando/consulta/log/link) | Status |
|---|---|---|---|
| MEDIDO / RE-MEDIDO / EXTERNO / REFUTADO |
O teste final da sua tabela: se alguém perguntar de onde veio um número e a resposta for "acho que foi de...", esse número é ALEGADO — apague ou vá medir.
Minerei 784 sessões do meu histórico e auditei 79 casos um a um, procurando por que uma entrega volta. 68,4% do retrabalho tinha uma causa só: declarar pronto sem ter percorrido o caminho. "Entendeu errado o pedido" foi 1,3%.
O gargalo nunca foi compreensão. Era conferência. Numa auditoria minha, 2 de 7 alegações do implementador eram falsas — e verificáveis em um comando. Em outra, o verificador derrubou 6 critérios de aceite vazios, com o laudo literal "o arquivo de teste NÃO EXISTE".
Trocar o caro pelo barato sem a régua não otimiza nada — só troca dólar por retrabalho, que é a moeda mais cara que existe.
Se você chegou até aqui, provavelmente vai fazer a coisa mais chata de todas: abrir o terminal e rodar a consulta na sua operação. E aí acontece uma coisa que eu não previ quando montei a minha:
você acha o teu número e não tem com quem falar sobre ele.
Discussão de custo de IA hoje é preço de tabela e opinião. Quase ninguém abre a conta, e quem abre não mostra o que apagou. É por isso que eu tô montando um lugar só com quem opera de verdade — quem tem a tabela, não a opinião. Gente que roda em produção, apanha, mede, e volta com a saída colada.
O que eu não vou fingir que sei: não tem data, não tem preço, não tem formato fechado. Não tem nada pra vender hoje. Tem uma lista — e quem tá nela sabe primeiro quando abrir.
👉 Entrar na lista:
https://wa.me/5551993299031?text=lista%20de%20esperaÉ um e-mail. Sem spam, sem sequência de vendas, sem "última chance". Sai quando quiser, em um clique — e se você nunca mais quiser ouvir falar disso, essa página continua no ar de graça do mesmo jeito.
Antes de entrar, faz o que vale mais: roda a consulta da §2 e monta a sua escada. Se ela sair com um formato diferente do meu, é essa conversa que eu quero ter. Quem chega com número entra falando.
Um processo que hoje roda no braço e você acha que dava pra ter um sistema desses? A DM tá aberta — eu abro o sistema e te mostro rodando.
As 3 camadas, os 2 tipos de erro e quanto cada um custa, e a régua do cliente em branco.
De graça, sem cadastro. Copia, adapta, usa.
Companheiro do vídeo "Parei de fazer uma IA que lê edital. Fiz uma que descarta." De graça, sem cadastro. Copia o desenho, adapta ao teu domínio, usa.
Para quem é: quem tem muito documento público e pouca gente pra ler — licitação, diário oficial, publicação de órgão regulador, decisão de tribunal, edital de fomento, chamada de compra de empresa grande. É sempre o mesmo problema com outra roupa.
O sistema descrito aqui foi construído para editais, mas o desenho não é sobre editais. Ele resolve uma forma:
muito documento entrando · pouca gente pra ler · decisão cara se errar
Se o teu domínio tem essas três coisas, a anatomia serve. Se falta a terceira — se ninguém perde nada quando o documento passa batido — não construa isso: você vai gastar engenharia para produzir um resumo que ninguém lê.
Todo mundo pensa a mesma primeira solução: pega o PDF, joga num modelo, pede um resumo. Três motivos para ela não funcionar — e nenhum é sobre o modelo ser burro:
| # | O que quebra | Por quê |
|---|---|---|
| 1 | O PDF não é texto | Boa parte desses documentos é imagem escaneada, às vezes torta. Modelo nenhum lê o que não está lá |
| 2 | O documento não cabe | Um edital com anexos passa fácil de 200–300 páginas, e o que interessa (objeto, prazo, quem pode entrar) está espalhado em quatro lugares diferentes do arquivo |
| 3 | Resumir não é o trabalho | O trabalho é decidir: isso serve para esta empresa, com este catálogo, nesta região, neste tamanho? Isso o modelo não sabe. Quem sabe é o cliente |
A virada que muda tudo: pare de tentar fazer uma IA que lê documento. Faça uma IA que descarta documento. O produto não é compreensão — é redução.
Um coletor passa nas fontes públicas e traz o que é novo. Antes de qualquer inteligência, vem a etapa chata que ninguém posta: transformar o documento em texto de verdade. Imagem vira texto, o que está torto endireita, e o anexo que ninguém abre entra — porque costuma ser onde está o que interessa.
⚠️ Se esta camada falhar, o resto é teatro. O modelo mais caro do mundo não conserta um documento que chegou vazio. Se você só tem orçamento para caprichar em uma camada, é esta.
Tudo que entra passa por uma peneira rápida e barata que responde uma pergunta só:
isso aqui tem alguma chance de ser para este cliente?
Repare na palavra: chance, não certeza. Esta camada é calibrada para ser generosa — na dúvida, deixa passar. É ela que enfrenta o volume, e por isso ela é barata de propósito.
O que sobreviveu à peneira vai para a leitura de verdade: o modelo bom, lendo com calma, extraindo o que estão comprando, quanto, até quando, quem pode entrar, o que precisa entregar — e o mais importante: por que isso é para você.
O resultado não é um resumo. É uma fila. Lista ordenada, mais promissor no topo, e do lado de cada item o motivo, em uma frase que um humano entende sem abrir o PDF.
FILA DE HOJE
1. [ALTA] ...... porque: o objeto é exatamente o teu item principal e o prazo cabe
2. [ALTA] ...... porque: mesma região, valor dentro do teu teto, exige certidão que você tem
3. [MÉDIA] ...... porque: serve, mas o prazo de entrega é apertado pro teu estoque
Quem fazia isso na mão volta para o jogo: não lê mais o documento inteiro — confere o topo da fila e decide.
Estas quatro valem para qualquer sistema deste tipo. São elas que separam o que roda em produção do que morre na demo.
Passa-se muito mais tempo resolvendo arquivo quebrado, imagem torta e anexo escondido do que ajustando prompt. Quando alguém disser "a IA não funcionou no meu caso", a primeira pergunta é como o dado chegou nela — não qual modelo era.
| Erro | O que custa |
|---|---|
| Deixar passar um documento que não servia | 30 segundos de um humano conferindo |
| Descartar um que servia | um contrato — e ninguém nunca fica sabendo que ele existiu |
Por isso o sistema é enviesado de propósito para o lado barato do erro. Isso não é preguiça de engenharia: é a engenharia.
Como levar isso para o teu domínio: escreva, antes de codar, qual dos dois erros é o caro. Se você não souber responder, não sabe ainda o que está construindo.
O que faz um edital ser bom para uma empresa não está no modelo — está na cabeça de quem trabalha lá. Então isso vira um arquivo escrito. Quando o critério muda, muda o arquivo, não o código.
Modelo em branco — a régua do cliente:
O QUE A GENTE VENDE (itens/serviços, com sinônimos que aparecem no documento):
ONDE A GENTE ENTREGA (regiões, e o limite real de logística):
O TAMANHO QUE A GENTE AGUENTA (valor mínimo que vale o esforço · máximo que cabe):
O QUE A GENTE NUNCA PEGA (e por quê — isto economiza mais que tudo acima):
EXIGÊNCIAS QUE A GENTE CUMPRE (certidões, atestados, qualificação):
SINAIS DE "É PRA NÓS" (as palavras que quem faz na mão procura primeiro):
SINAIS DE "NÃO É PRA NÓS" (o que faz a pessoa fechar o documento em 5 segundos):
As duas últimas linhas são as que quase ninguém escreve, e são as que mais mudam o resultado. Elas se obtêm de um jeito só: sentando com quem faz o trabalho na mão e perguntando o que ela olha primeiro.
Nada aqui decide sozinho nem envia proposta. O sistema entrega a fila; a pessoa decide. Isso não é limitação técnica esperando conserto — é desenho. Sistema que decide sozinho num domínio onde o erro custa contrato não é mais autônomo: é mais caro.
Não está no modelo. Modelo todo mundo tem — é a mesma API para você e para o Vale do Silício.
Está em conhecer o trabalho: saber qual campo daquele documento faz alguém tomar uma decisão, por que o anexo três importa mais que o corpo do edital, o que faz a pessoa descartar em cinco segundos. Isso não está no modelo. Isso se aprende sentando com quem faz o trabalho na mão.
Sem promessa: isso dá trabalho. Não é o que se monta num fim de semana. É um problema real, caro e chato que quase ninguém quer resolver — e é exatamente por isso que quem resolve é pago para isso.
Responda em voz alta. Se travar em alguma, é ali que o projeto começa (não no código):
A parte que sustenta o resto:
Este documento existe para uma coisa: você reconhecer o teu caso aqui dentro.
Se enquanto lia você foi pensando "é exatamente isso que a minha equipe faz na mão" — essa é a conversa. Não é apresentação comercial, não é diagnóstico pago, não é proposta: eu abro o sistema e te mostro rodando, e você decide sozinho se aquilo resolve o teu caso.
👉 Chamar na DM:
https://wa.me/5551993299031?text=Vi%20o%20video%20do%20sistema%20de%20licitacao20 minutos, sem compromisso. Leve a resposta da pergunta 2 da §6 (qual erro é o caro) — com ela a conversa começa no lugar certo em vez de gastar a primeira metade em contexto.
E se você é dev e quer construir: o desenho está inteiro aí em cima, de graça. Constrói. A porta está pouco disputada, e ninguém precisa pedir licença para resolver um problema público.
Se esse desenho serve pro seu caso, eu abro o sistema e te mostro rodando — 20 minutos, sem compromisso. Se não servir, eu falo que não serve.
Falar comigo no WhatsAppVai abrir uma conversa com o texto já escrito. Você edita antes de enviar.
Os 3 carimbos de fonte, as 2 armadilhas e as 3 perguntas que a notícia tem que passar pra entrar no Radar.
De graça, sem cadastro. Copia, adapta, usa.
Companheiro da série Radar IA. De graça, sem cadastro. É o método, não a opinião — use com as suas fontes.
Para quem é: quem opera alguma coisa com IA e precisa decidir o que fazer na segunda de manhã, não acompanhar hype. E para quem já repassou uma notícia que virou pó no dia seguinte.
A cadeia costuma ser esta:
o fato → relatório de quem apurou → reportagem sobre o relatório
→ post sobre a reportagem → thread sobre o post → você
Cada elo perde precisão e ganha certeza. O número fica mais redondo, a ressalva some, o "segundo pessoas com conhecimento do assunto" vira "a empresa confirmou". No fim, quem repassa está mais confiante que quem apurou.
O protocolo não resolve isso ficando cético com tudo. Resolve carimbando onde você parou.
Todo item recebe um, e o carimbo muda o que você tem direito de dizer:
| Carimbo | O que significa | O que você pode dizer |
|---|---|---|
| PRIMÁRIA | Você leu a página do próprio autor do fato — model card, blog oficial, post da empresa, documento | O fato, direto. "A empresa publicou X" |
| SECUNDÁRIA | Você leu a reportagem; o fato original está num relatório ou fonte que você não abriu | O fato com a origem junto: "Segundo a reportagem X, que cita o relatório Y" |
| REPORTADO | Negócio ou número não confirmado oficialmente — fonte anônima, rumor de aquisição | A palavra "reportado" é obrigatória na sua boca. Sem ela, você está afirmando o que ninguém afirmou |
A regra que faz isso funcionar: o carimbo não melhora com o tempo nem com repetição. Uma notícia SECUNDÁRIA não vira PRIMÁRIA porque três canais repetiram — vira PRIMÁRIA quando você abre a fonte original. Enquanto não abrir, ela fica onde está.
O teste de honestidade: se alguém perguntar "você leu o relatório?" e a resposta for "li quem leu", o carimbo é SECUNDÁRIA. Dizer isso em voz alta custa três segundos e é a diferença entre analista e repetidor.
| Armadilha | Por que engana | Como carimbar |
|---|---|---|
| Benchmark do próprio autor | Um model card diz "50% melhor em código". É PRIMÁRIA — mas o número é do bench da própria casa | PRIMÁRIA com a ressalva colada: "no benchmark interno deles". Nunca solte o número sozinho |
| Fonte anônima em jornal grande | Jornal de primeira linha, números precisos, "pessoas com conhecimento do assunto" | SECUNDÁRIA sobre fonte anônima — o item mais fraco que ainda vale contar, e isso se declara antes de dar os números, não depois |
Carimbo diz o que a notícia é. As perguntas dizem se ela entra:
Se você não consegue dizer o fato em uma frase com data, não é notícia — é clima. Item com mais de uma semana normalmente já é análise, e análise tem outra régua.
Sem fonte nomeada e carimbo, não entra. Não importa quantas pessoas repassaram.
A pergunta que reprova mais gente. Se a resposta é "mostra pra onde o mercado tá indo", é reprovação: isso serve para conversa, não para decisão. A resposta boa cabe numa ação de segunda de manhã — trocar isso, isolar aquilo, medir esse custo, parar de fazer aquilo.
Se a notícia passa em 1 e 2 mas falha na 3, ela não é ruim — ela é de outra pessoa. Deixe passar sem culpa. Quem publica tudo que é verdadeiro publica ruído com procedência.
Não há fonte secreta. O que existe é ordem de leitura:
| Camada | O quê | Para quê |
|---|---|---|
| 1 · Primária sempre que der | Model cards nos repositórios de modelo · blog oficial e post de incidente das empresas · documentação e changelog | É onde o fato nasce. Um model card lido em 5 minutos vale mais que dez threads |
| 2 · Curadoria técnica | Blogs de engenheiros que leem a fonte e mostram o que leram | Servem de radar do que abrir — não de fato final |
| 3 · Imprensa técnica | Veículos de tecnologia e segurança que apuram, com repórter e nome | Trazem o que não tem página oficial: incidente, negócio, relatório fechado |
| 4 · Imprensa de negócios | Reportagem de mercado, receita, aquisição | Quase sempre REPORTADO. Útil para direção, nunca para número |
Como montar a sua em uma tarde: liste as ferramentas que você realmente opera. Para cada uma, ache a página oficial de mudanças. Isso é a camada 1 — e ela é mais de metade do valor. Só depois acrescente as outras.
O que eu não uso como fonte: thread sem link para a origem, blog de empresa do setor citando número redondo sem apuração (quando dois desses se contradizem na primeira conta, os dois saem), e qualquer coisa cuja fonte é "vi por aí".
NOTÍCIA:
DATA DO FATO: DATA QUE EU LI:
FONTE QUE EU LI (link):
FONTE PRIMÁRIA DO FATO: EU ABRI? ( ) sim ( ) não
CARIMBO: ( ) PRIMÁRIA ( ) SECUNDÁRIA ( ) REPORTADO
NÚMEROS (só os que estão literais na fonte):
RESSALVA QUE VAI JUNTO DO NÚMERO:
------------------------------------------------------------
O QUE MUDA PRA QUEM OPERA (uma ação de segunda de manhã):
SE ESTA LINHA FICAR VAZIA, A NOTÍCIA NÃO ENTRA.
Rodar este protocolo sozinho tem um efeito colateral: você começa a ver o carimbo faltando em todo lugar — e não tem com quem falar sobre isso sem parecer chato.
É por isso que eu tô montando um lugar fechado só com quem opera de verdade — gente que lê o model card, que confere o número, que diz "isso é reportado" antes de repassar.
Não tem data, não tem preço, não tem nada pra vender hoje. Tem uma lista — e quem tá nela sabe primeiro quando abrir.
👉 Entrar na lista:
https://wa.me/5551993299031?text=lista%20de%20esperaÉ um e-mail. Sem spam, sem sequência de vendas. Sai quando quiser, em um clique — e esta página continua aqui de graça do mesmo jeito.
E o mais barato que você pode fazer agora: pega a última notícia de IA que você repassou e preenche a ficha da §5. Se a linha do "o que muda pra quem opera" ficar vazia, você acabou de descobrir por que ninguém respondeu.
O gate em cinco passos que impede uma sessão de apagar o que a outra acabou de colocar no ar.
De graça, sem cadastro. Copia, adapta, usa.
De graça, sem cadastro. Copia, adapta, cola no teu repositório. Se te servir, o crédito é teu.
Companheiro do vídeo "6 clobbers em 4 dias". Isto aqui é o procedimento que rodou na minha operação depois de seis deploys-por-cima em quatro dias no mesmo serviço — um serviço, em container. A pergunta de cada passo vale para qualquer deploy; os comandos você traduz para a sua casa, e o §3 diz exatamente como.
Para quem é: quem tem mais de uma sessão de agente (ou mais de uma pessoa) mexendo no mesmo repositório com deploy independente. Se é você e mais ninguém, guarda para quando não for.
A checagem é na IMAGEM QUE ESTÁ NO AR. Nunca no seu branch.
Antes de construir qualquer coisa, a pergunta não é "meu código está pronto?". É: "o que está rodando agora — e o que eu vou apagar dele?"
Por que a sua ferramenta não te avisa:
| Checagem | O que ela responde | O que ela não responde |
|---|---|---|
git status limpo | O que eu tenho aqui bate com o que commitei | Se bate com o que está servindo o usuário |
| Testes verdes | O meu branch funciona | Se o meu branch contém o trabalho que o outro já subiu |
| Health check 200 | Tem algo vivo ali | Qual versão está viva |
| Deploy "concluído com sucesso" | A troca aconteceu | O que a versão nova deixou de conter |
As quatro são cegas para a mesma coisa: a diferença entre o seu branch e o binário no ar. (As três primeiras estão medidas no caso; a quarta é a mesma cegueira, um passo adiante.) O deploy é uma cópia congelada do repositório num instante — depois do build ela é um objeto independente, e o git não tem ponteiro para ela.
Sentinela é uma string única, curta e improvável, que só existe se uma funcionalidade estiver dentro do artefato. É o que transforma "eu acho que está lá" em grep.
Uma boa sentinela é:
grep -rc retorna poucas ocorrências);Serve como sentinela: o caminho de uma rota nova (/relatorios/mensal) · o texto de um botão · o nome de uma coluna ou de um campo novo · o identificador de uma migração · uma chave de tradução · o nome de uma função exportada.
Não serve: número de versão (muda sempre) · nome de arquivo (pode ser renomeado no build) · comentário de código (some na minificação) · nada que exista em duas features diferentes.
🔑 A regra que faz isso funcionar no dia a dia: quem entrega uma funcionalidade declara a sentinela dela em um arquivo do repositório. Uma linha por funcionalidade, append-only. Sem isso, o passo 2 vira arqueologia. Com isso, vira
grep.# SENTINELAS.md — append-only. Linha nova no fim, nunca reescreve. 2026-08-27 · relatório mensal · sentinela: "relatorios/mensal" · sessão A 2026-08-27 · exportar CSV · sentinela: "exportar-csv-v2" · sessão B
Você quer o identificador exato da versão em execução agora. Não o painel, não o log do último deploy, não o histórico do git — os três te contam uma história sobre o que está no ar.
| Se o seu deploy é… | O identificador é… | Onde perguntar |
|---|---|---|
| Container / orquestrador | a imagem com digest, não a tag | inspecionar o serviço/pod em execução e ler a imagem resolvida |
| Bundle estático (web) | o hash do arquivo servido | baixar o index publicado e ler o nome do bundle referenciado |
| Função serverless | a versão publicada + o pacote dela | listar as versões e ver qual está com o alias de produção |
| Servidor com arquivos | o conteúdo do diretório servido | ler o diretório no host, não o seu |
| Pacote/biblioteca | a versão que o consumidor resolve | resolver a dependência como consumidor, não como autor |
⚠️ A tag latest (ou main, ou prod) não é resposta. Ela é um apelido: aponta para coisas diferentes em momentos diferentes. Só o digest/hash identifica o artefato.
Procure dentro do que está no ar a sentinela da funcionalidade mais recente que não é sua.
# 1) qual imagem está REALMENTE no ar (o digest, não a tag)
docker inspect <CONTAINER> --format '{{.Image}}' # host único
docker service inspect <SERVICO> --format '{{.Spec.TaskTemplate.ContainerSpec.Image}}'
kubectl get pod <POD> -o jsonpath='{.status.containerStatuses[0].imageID}'
# 2) inspeciona o artefato no ar sem subir nada
docker run --rm --entrypoint sh <IMAGEM_NO_AR_COM_DIGEST> \
-c 'grep -rl "<SENTINELA>" /app || echo "AUSENTE"'
# padrão bundle estático — o que o usuário realmente baixa
curl -s https://<HOST>/<BUNDLE_QUE_O_INDEX_APONTA>.js | grep -c "<SENTINELA>"
# padrão diretório servido
grep -rl "<SENTINELA>" <DIR_SERVIDO_NO_HOST> || echo "AUSENTE"
Não achou a sentinela do outro no que está no ar? Então ou ela nunca subiu, ou já foi clobbada antes de você chegar. Nos dois casos: descobre antes de continuar.
⚠️ Sobre os comandos deste documento: são a tradução da regra para as ferramentas mais comuns, escritos pelo padrão documentado de cada uma. Confira a saída na sua stack antes de confiar. O que é obrigatório é a pergunta — o comando é só o jeito de fazê-la na sua casa.
Mesmo comando, no seu artefato candidato (construa localmente, não publique ainda).
Agora você tem duas listas. A diferença entre elas não é um relatório — é literalmente a lista do que você vai apagar.
NO AR: relatorios/mensal · exportar-csv-v2 · webhook-pagamento
CANDIDATO: relatorios/mensal · webhook-pagamento · painel-metricas
^^^^^^^^^^^^^^^^
você está prestes a apagar isto
Este é o passo que todo mundo pula, e é o único que impede o acidente.
fetch + rebase/merge, ou o equivalente na sua casa).A sua sentinela respondendo no ar. E a do outro respondendo no ar. As duas.
for S in "<SUA_SENTINELA>" "<SENTINELA_DO_OUTRO>"; do
curl -sf "https://<HOST>/<ROTA_QUE_PROVA>" | grep -q "$S" \
&& echo "OK $S" || echo "FALTA $S <-- CLOBBER"
done
Se você conferiu só a sua, você não sabe que não clobbou. Você está torcendo.
O erro que produziu os seis clobbers foi encadear:
build && push && deploy # ❌ numa linha só não existe lugar para parar
Um gate encadeado com && não é um gate — é um comentário. O procedimento tem que ter um ponto em que a coisa não continua sozinha:
./gate-anticlobber.sh || exit 1 # ✅ falhou = não constrói, não publica
build && push && deploy
Se você automatizar uma coisa só deste runbook, automatize isto: o script que compara as duas listas do passo 3 e retorna diferente de zero quando falta sentinela. Ele cabe em quinze linhas e é a diferença entre o método existir no papel e existir na prática.
SENTINELAS.md do §2 é o mesmo padrão aplicado a deploy.)GATE ANTI-CLOBBER — <serviço> — <data/hora> — <quem está subindo>
[ ] 1. Versão no ar (digest/hash, não a tag): ______________________
Como eu perguntei: ______________________________________
[ ] 2. Sentinelas encontradas DENTRO do artefato no ar:
______________________________________________________
[ ] 3. Sentinelas dentro do MEU candidato:
______________________________________________________
DIFERENÇA (o que eu apagaria): ___________________________
[ ] 4. Se a diferença não está vazia → PAREI, integrei, voltei ao passo 1.
Integrei o quê: __________________________________________
[ ] 5. Pós-deploy, respondendo no ar:
[ ] minha sentinela [ ] sentinela do outro
Assinatura da sessão: ____________ Resultado: ( ) subiu ( ) parou no gate
Guarde as fichas. Duas semanas delas te dizem, sem discussão, quem encadeia deploy e onde o processo vaza.
O passo 4 diz "resolva isso com quem publicou". E aí está o problema real de quem opera assim: quase ninguém tem com quem resolver. Rodar duas, cinco, oitenta sessões de agente no mesmo repositório é uma prática tão nova que o teu colega de trabalho provavelmente ainda não passou por isto — e o pessoal que passou está espalhado, cada um descobrindo sozinho o mesmo buraco.
Eu estou montando um lugar só com quem opera de verdade: gente com agente em produção, com deploy de verdade, com cliente do outro lado. Não tem data, não tem preço, não tem nada para vender hoje. Tem uma lista de espera no fim desta página — um e-mail, e você sai quando quiser.
👉 https://wa.me/5551993299031?text=lista%20de%20espera
Este runbook é completo sem a lista. Quem só quer o procedimento leva o procedimento — está tudo certo assim.