- Início
- The Thinking Wire
- Três Times, Uma Semana, Um Movimento: Eles Escreveram o Handoff
Três Times, Uma Semana, Um Movimento: Eles Escreveram o Handoff
O número de issues abertas do Astro caiu de mais de 200 para cerca de 30. Uma redução de 85%, em um repositório com mais de cinco anos de histórico acumulado, e Matthew Phillips, da Cloudflare, espera chegar a zero em algum momento do próximo mês. Esse número é a manchete. O mecanismo por baixo dele é mais útil.
O que a Cloudflare colocou em produção é uma máquina de estados guiada por labels, que move uma issue de triage needed até fix verified, com propriedade explícita de cada transição: algumas pertencem à máquina, outras pertencem a uma pessoa. A máquina é um objeto escrito. Dá para ler, revisar em um pull request e discordar dela antes que rode.
Três times entregaram versões do mesmo movimento em uma semana. Pamela Fox publicou um esquema de camadas para servidores MCP de banco de dados. A plataforma interna de review da Cursor vazou, e o desenho coloca o handoff em uma aba nomeada. Nenhum deles combinou nada. Os três chegaram à mesma conclusão: o handoff humano precisa ser um artefato, ou deixa de ser um controle.
”Humano no Loop” É Política Sem Mecanismo
Desenhamos quatro superfícies de contenção em abril: computação, dados, conhecimento, identidade. Este texto fica em cima de uma delas. O handoff humano é a superfície que todo documento de governança afirma ter e quase nenhum especifica.
Pergunte a três engenheiros do mesmo time quando um agente deve parar e perguntar. Você recebe três respostas, todas razoáveis, nenhuma escrita em lugar algum. Esse é o modo de falha. Uma política que vive em uma thread de Slack não tem versão, não tem diff, não tem dono e não tem como estar errada de forma revisável. Quando o agente escala de menos, ninguém percebe até acontecer um incidente. Quando escala demais, os humanos aprendem a aprovar sem ler, e o controle vira decoração silenciosa.
O artefato resolve o problema de auditabilidade antes de resolver o de segurança. Uma máquina de estados por label tem histórico de commits. Uma camada de ferramenta tem nome e conjunto de permissões. Uma aba de review tem uma fila com tamanho mensurável. Os três entregam o que a prosa não entrega: uma fronteira que só muda quando alguém a muda de propósito.
Cloudflare: A Fronteira É Um Label
O bot de triagem do Astro roda fases sequenciais de subagentes chamadas Reproduce, Diagnose, Verify, Fix. Cada issue acumula um report.md com o que o agente encontrou. Patches propostos são validados contra builds de preview via pkg.pr.new antes que um humano olhe. Tudo foi extraído para um repositório independente, triagebot-action, construído sobre o Flue, o que torna o desenho reutilizável em vez de conhecimento tribal.
As regras de escalonamento são a parte interessante. A Cloudflare roteia falha de agente para humanos em vez de automatizar em volta dela, sob o argumento de que, quando um agente não consegue reproduzir uma issue, o motivo costuma ser uma propriedade do código: uma abstração opaca, uma documentação ausente, um teste raso. Essa é a confirmação em produção de um argumento que fizemos antes sobre falha de agente como relatório do código. A Cloudflare tratou o sinal como parte do fluxo de trabalho e cortou 85% de um backlog de cinco anos.
Os canais de comunidade seguem humanos, por decisão explícita. O bot trabalha issues; ele não responde pessoas. Essa linha está desenhada na taxonomia de labels, então um contribuidor enxerga onde o trabalho da máquina termina sem precisar perguntar a ninguém.
Pamela Fox: A Fronteira É Uma Camada de Ferramenta
Pamela Fox, Cloud Advocate em Python na Microsoft, publicou uma escada de quatro camadas para expor um banco de dados via MCP. A camada um é SQL livre: uma única ferramenta execute_sql que roda o que quer que o modelo produza. A camada dois adiciona descoberta progressiva de schema com list_tables e describe_table, para o modelo parar de adivinhar nomes de coluna. A camada três é execute_readonly_sql com validação. A camada quatro substitui SQL por completo por ferramentas de consulta templatizadas, como search_species(q, limit).
As camadas mapeiam para casos de uso de forma explícita. Prototipação interna pode viver no SQL livre. Cargas de analytics pertencem ao modo somente leitura. Sistemas em produção e voltados ao usuário exigem consultas templatizadas, o que significa que nenhum SQL arbitrário chega ao banco.
A implementação de somente leitura dela merece cópia porque não confia em nenhuma camada isolada. Parsing de AST com pglast rejeita qualquer coisa que não seja um SELECT. SET default_transaction_read_only = ON deixa a própria sessão incapaz de escrever. Uma role dedicada no Postgres mantém menor privilégio no banco. Uma blocklist pega funções internas que o status de somente leitura não cobre, incluindo pg_terminate_backend e pg_read_file. Os limites travam o resultado em 100 linhas e a consulta em 30 segundos.
Depois disso, o próprio handoff é codificado no protocolo. As anotações MCP readOnlyHint e destructiveHint dizem ao cliente o que a ferramenta faz antes que ela rode, e ctx.elicit() pede confirmação humana explícita antes de uma ação destrutiva. O ponto de escalonamento vive como campo na definição da ferramenta, então o cliente consegue aplicá-lo sem depender de o operador lembrar de uma convenção.
Cursor: A Fronteira É Uma Aba
O TestingCatalog reportou um build interno não lançado do que chama de Cursor Review, com duas abas adicionadas ao produto: Codebase, para sincronizar o repositório, e Review, para um pipeline automatizado de pull requests que notifica o desenvolvedor quando o julgamento dele é necessário. O relato é um vazamento. Trate como trabalho em desenvolvimento reportado, sem assumir nada sobre disponibilidade.
O que torna isso relevante é a escolha estrutural, que sobrevive mesmo se o produto mudar de forma. O GitHub continua sendo a fonte de registro. A superfície de review é uma fila que o desenvolvedor visita, e o pipeline decide o que cai nela. Essa decisão, qualquer que seja a lógica interna, passa a ser um componente com nome, onde antes era propriedade implícita de uma interface de chat. A Cursor também demonstrou 22,6 commits por segundo na conferência Compile dela, segundo o mesmo relato. Vazão demonstrada pelo fornecedor nessa escala torna a pergunta sobre o que chega a um humano incontornável, porque a resposta padrão a 22,6 commits por segundo é nada.
O Que os Três Têm em Comum
Os artefatos não se parecem em nada. Uma taxonomia de labels, uma lista de camadas de ferramenta e uma fila de interface não compartilham implementação. Compartilham uma propriedade: cada um nomeia a condição de saída do loop e a guarda em algum lugar com versão.
Essa propriedade é o que torna a fronteira testável. A Cloudflare consegue medir quantas issues o bot escalou e se os escalonamentos foram úteis. A atribuição de camada da Fox pode ser auditada lendo um arquivo de ferramentas. Uma fila de review tem tamanho, latência e taxa de abandono. Prosa em um deck de governança não tem nenhuma dessas medidas.
Também torna a fronteira móvel de propósito. Quando a Cloudflare quiser que o bot resolva uma classe de issue que hoje escala, isso vira uma mudança na máquina de estados, revisada como código. Compare com a alternativa, em que a fronteira derrapa porque um engenheiro cansou de aprovar a mesma coisa e parou de ler.
Escreva Sua Condição de Saída Esta Semana
Escolha um agente que já roda no seu ambiente. Faça isso em menos de uma hora.
Nomeie a condição de saída. Escreva a frase que completa “este agente para e pergunta a um humano quando…”. Se você não consegue escrever em uma frase, o agente opera por hábito, sem fronteira alguma.
Descubra onde essa frase mora. Uma string de prompt, um arquivo de configuração, uma anotação de ferramenta, um label de workflow, ou lugar nenhum. Se a resposta for uma string de prompt enterrada no código da aplicação, promova para um arquivo que passe por revisão.
Dê versão a ela. Faça o commit. A partir daí, toda mudança na fronteira aparece em um diff com autor e data. Só isso já coloca você à frente da maioria dos programas de governança.
Meça o tráfego que atravessa. Conte escalonamentos por semana e quantos o humano de fato alterou. Zero escalonamento em um mês significa fronteira sem monitoramento, não fronteira tranquila. Aprovação de 100% sem edição é carimbo, e o trabalho de verificação não está sendo feito.
Escolha sua camada. Para qualquer agente que toque um banco de dados, posicione-o na escada da Fox e diga isso em voz alta. Se um agente voltado ao usuário está em SQL livre, você passa a ter uma decisão datada para defender ou corrigir.
Os 85% da Cloudflare não vieram de um modelo mais inteligente. Vieram de um fluxo de trabalho em que o trabalho da máquina e o trabalho do humano foram escritos separadamente, de modo que cada um pode melhorar sem adivinhar o outro.
Fontes
- Matthew Phillips, Cloudflare. “How we drove Astro’s issue triage toward zero.” Agosto de 2026.
- Pamela Fox, Microsoft. “Building Safe MCP Servers for Your Database.” Agosto de 2026.
- Alexey Shabanov, TestingCatalog. “Cursor prepares to launch Origin platform for code reviews.” Agosto de 2026.
A Victorino ajuda times de engenharia a transformar handoffs implícitos de agentes em fronteiras de escalonamento versionadas e mensuráveis: contato@victorino.com.br | www.victorino.com.br
Todos os artigos do The Thinking Wire são escritos com o auxílio do modelo LLM Opus da Anthropic. Cada publicação passa por pesquisa multi-agente para verificar fatos e identificar contradições, seguida de revisão e aprovação humana antes da publicação. Se você encontrar alguma informação imprecisa ou deseja entrar em contato com o editorial, escreva para editorial@victorino.com.br . Sobre o The Thinking Wire →
Se isso faz sentido, vamos conversar
Ajudamos empresas a implementar IA sem perder o controle.
Agendar uma Conversa