Tynnaretrato de 22/09, 21:52
voltar à Biblioteca

ADR-0083 — Aposentar a frota de agentes residentes; a unidade de autonomia passa a ser gatilho + gate

21/09/2026 · aceita

docs/adr/ADR-0083-aposentadoria-da-frota-de-agentes-residentes.md

ADR-0083 — Aposentar a frota de agentes residentes; a unidade de autonomia passa a ser gatilho + gate

Status: aceita Data: 2026-09-21 Decisor(es): Marcelo Lermen (board) Supersedes: ADR-0027 §"execução pela frota" (o Paperclip permanece como fonte da verdade do trabalho; o que sai é a execução por agentes residentes) · ADR-0077 §"reavaliar em 6 meses" (a reavaliação é antecipada, e o escopo dela muda — ver §Relação com o ADR-0077) Não muda: o Paperclip como quadro e fonte da verdade do trabalho (ADR-0027 §fonte) · a decisão de mantê-lo self-hospedado (ADR-0077 §mérito) · os gates em camadas L1/L2/L3


Contexto

Entre 05/2026 e 09/2026 operamos uma frota de 32 agentes residentes no Paperclip: entidades com identidade própria, sessão viva e iniciativa, que deveriam pegar trabalho do quadro e executá-lo. O ADR-0077 (ratificado em 04/08) decidiu manter o Paperclip self-hospedado e reavaliar em 6 meses, com gatilhos explícitos de reabertura antecipada.

Em 21/09/2026 os gatilhos foram medidos.

O que a medição mostrou

1. Os três proxies de custo do ADR-0077 triplicaram. Rodando os comandos canônicos que ele fixou, no mesmo repositório:

medida (60 dias)baseline 03/0821/09
commits em paths *paperclip*1449
pickaxe -S paperclip45143
por mensagem41154

Removendo ruído óbvio (bumps de dependência, lotes de lições, handoffs), restam 41 contra 14.

2. O custo não está onde o ADR-0077 procurou. Separando os 41 por natureza: 19 são operação da frota (OAuth, watchdog, deriva de patch de autorização, alerta de agente em erro) e 17 são o fork em si (API, MCP, upgrade, restore). E o aparato conta a mesma história: dos 37 scripts em scripts/paperclip/, 24 existem só para manter credencial viva, vigiar sessão e detectar deriva. Quase dois terços do código não faz trabalho — mantém a possibilidade de trabalho.

3. O que esse aparato sustenta está parado, e não por ociosidade. Dos 32 agentes: 19 ociosos, 8 pausados, 5 em erro. Nenhuma execução desde 09/09. Os cinco com atividade mais recente estão todos em erro, incluindo uma tentativa às 08:49 do próprio dia 21/09. A frota não está adormecida: está tentando e falhando de forma contínua há doze dias.

4. O padrão que funcionou no mesmo período é outro. No dia 21/09, o agente revisor de segurança auditou o PR #52 e encontrou um furo real que o autor não tinha visto (aprovação por label que não era revogada ao remover o label). Ele não tem identidade, não tem sessão e não tem iniciativa: nasce num evento de pull_request, opina sob esquema validado, e um juiz determinístico decide. Mesma coisa no executor disparado por etiqueta em issue.

O diagnóstico

A frota não falhou porque agentes não funcionam. Falhou porque a unidade de autonomia escolhida foi o agente residente, e manter um agente residente de pé exige identidade viva, credencial renovável e máquina ligada. Esse aparato virou o trabalho, e é ele que quebra.

Decisão

A frota de agentes residentes é aposentada. A unidade de autonomia passa a ser o gatilho acoplado a um gate.

  1. Nenhum processo agentic fica vivo aguardando trabalho. Execução nasce de evento (pull request, issue, agenda, webhook), com a credencial da esteira, e morre no veredito.
  2. Nenhuma saída de agente vira ação por conta própria. Ela passa por um juiz determinístico que reprova em toda dúvida — sessão que morreu, resposta fora do esquema, aprovação contradita por achado grave.
  3. O Paperclip permanece como quadro e fonte da verdade do trabalho. O que sai é a execução pela frota, não o registro.
  4. Os papéis não se perdem: CISO, QA, UX, Doc Writer, Test Writer e Root-Cause já existem versionados em .claude/agents/ e são invocados como subagentes efêmeros. O que se aposenta é a instância residente, não a função.

Relação com o ADR-0077

O ADR-0077 decidiu manter o Paperclip e reavaliar em 6 meses. Esta decisão não o contradiz nesse mérito: o Paperclip fica.

O que ela corrige é o escopo da pergunta. O ADR-0077 tratou "Paperclip" como uma coisa só e comparou manter contra migrar a plataforma inteira. A medição de 21/09 mostra que são duas camadas com economias distintas — o quadro (barato, funcionando, 34 cards em 7 dias) e a execução residente (cara, quebrada, zero entrega). Misturá-las foi o que empurrou a decisão para fevereiro. Separando, a camada cara decide-se agora e a barata permanece.

A data de 2027-02-03 do ADR-0077 segue valendo para o que sobrou dele: o quadro self-hospedado.

Alternativas consideradas

  • Consertar a frota e seguir. Recusada: o conserto é renovar credencial, e a credencial vence de novo. O modo de falha é estrutural, não um incidente. Voltaríamos a pagar 24 scripts de sustentação para uma camada que a execução por evento já cobre.
  • Esperar 2027-02-03, como previsto. Recusada: os gatilhos de reabertura antecipada do próprio ADR-0077 dispararam. Esperar é pagar mais quatro meses de manutenção por zero entrega, e treinar todo mundo a ignorar um alarme de agente em erro que toca todo dia.
  • Aposentar o Paperclip junto. Recusada: não há evidência que a sustente. O quadro recebeu 34 cards em 7 dias e foi onde todo achado de 21/09 ficou registrado. Aposentar o que funciona junto com o que não funciona é o erro simétrico.

Consequências

O que se ganha

  • Fim de 24 scripts de sustentação de credencial e sessão, e do alarme diário de agente em erro.
  • O modo de falha some junto: não há OAuth a renovar, watchdog a vigiar nem Mac a manter ligado.
  • A execução passa a usar a credencial de esteira, que já é rotacionada pelo mesmo caminho dos outros secrets.

⚠️ O que se perde, e precisa estar escrito

Iniciativa. A frota existia para fazer o trabalho que ninguém pediu e que alguém precisaria ter começado sozinho. Execução por evento responde a estímulo; ela não acorda às 3h da manhã porque percebeu que algo deveria ser feito.

Hoje isso é coberto por agenda (cron) para o que é previsível — dead-man switch, vigia de gate, drift de required. O que não fica coberto é o não-previsível: a varredura que ninguém agendou, a pergunta que ninguém formulou. Aceitar esta decisão é aceitar que, por enquanto, isso volta a depender de uma sessão com gente presente.

Não se resolve isso com um agente residente de novo. Se voltar, volta como gatilho agendado com escopo declarado — e aí é uma decisão nova, com esta lição no meio.

Lacuna nomeada

Enquanto os 32 agentes existirem em estado de erro no Paperclip, o alarme de frota continua tocando por eles. Desligar o alarme antes de remover os agentes troca ruído por cegueira; remover os agentes antes de desligar o alarme gera uma janela de ruído. A ordem correta é: remover primeiro, desligar o alarme depois, e o alarme passa a vigiar apenas o que restar.

Rollback plan

A frota não é destruída, é desativada. Os agentes permanecem registrados no Paperclip, pausados, por 60 dias (até 2026-11-20). Nesse período, reverter é reativar e restaurar a credencial — os scripts de sustentação continuam versionados no repositório legado e recuperáveis pelo histórico.

Depois da janela, a reversão passa a ser uma decisão nova, que deve citar esta.

Métricas de revisão (2026-11-20)

MétricaComo medirO que faria reabrir
Trabalho que deixou de acontecer por falta de iniciativaitens levantados em sessão que a frota teria pego sozinha, contados no handoff≥3 casos concretos em 60 dias
Custo de manutenção após a aposentadoriacomando canônico do ADR-0077 em paths *paperclip*não cair abaixo de 20 commits/60d — sinal de que o custo não era da frota
Cobertura por gatilhoeventos agentic ativos em .github/workflowsestagnar em 2 — sinal de que a execução por evento não está substituindo de fato

Fora de escopo

  • O futuro do Paperclip como quadro: segue no ADR-0077, revisão em 2027-02-03.
  • A expansão para domínios fora de engenharia (atendimento, vendas, mídias): depende da camada de aceite por domínio, que não existe e não nasce aqui.

Só leitura. Toda mudança nestes documentos é pull request.