Quem define «concluído»? — O problema que os jogos resolveram 40 anos antes

Imagine que você administra imóveis para aluguel. Um inquilino desocupou o apartamento e o responsável precisa confirmar a saída.

Eu projetei assim: o responsável não pode simplesmente dizer “confirmado”. Em vez disso, fotografa cinco locais específicos do apartamento e envia ao sistema. Quando as cinco fotos chegam, o sistema marca como “saída confirmada”. Se faltar uma sequer, não há conclusão.

Ao ouvir isso, alguém disse: “Isso é exatamente uma quest de jogo, não é?”

Sim. Exatamente isso. E essa frase explicou de uma vez o que eu havia debatido em código por anos.

Os jogos resolveram isso 40 anos antes

“Traga 5 peles de lobo.” Os jogos fazem isso há décadas. E os jogos nunca acreditam na palavra do jogador. Dizer “já matei todos” não conclui a quest. O jogo verifica uma única coisa — há 5 peles no inventário? Se sim, concluído. Se não, incompleto. Ponto final.

O que eu crieiO que o jogo criou
Definição de conclusão = fotos de 5 locais específicosObjetivo da quest = 5 peles de lobo
Especificação = lista de locais a fotografarDiário da quest · marcadores de objetivo
Verificação = existem 5 fotos?Verificação = há 5 peles?
Julgamento = sistema marca como concluídoJulgamento = jogo exibe conclusão
Responsável = executor (não árbitro)Jogador = executor

A estrutura é idêntica. A entidade que declara «concluído» migrou da boca do agente para o sistema. O agente apenas satisfaz as condições; quem aciona a conclusão é sempre o portão.

Isso é Reins — e o código funciona da mesma forma

Faço o mesmo na programação com IA. Quando a IA diz “está pronto”, não acredito. Quando os testes passam, os tipos batem e a validação de schema não falha — aí o sistema julga “está feito”. O objetivo da quest é “4419 testes passando”, e o CI verifica isso no lugar do inventário. Os benchmarks padrão da pesquisa de agentes seguem exatamente essa abordagem — o SWE-bench define «concluído» como a aprovação do conjunto de testes do PR real; o WebArena define como precisão funcional do estado do ambiente. Não um “está pronto” em linguagem natural.

Seja saída de inquilino, pele de lobo ou código — o núcleo é único. Tirar o julgamento de «concluído» do próprio agente e transferi-lo para um portão definido fora do agente. Não importa se o agente é humano ou IA. Deixar a IA julgar sua própria conclusão é especialmente perigoso, como a experimentação demonstra — a autoverificação do modelo (self-critique) quase não melhora o desempenho, mas verificadores externos determinísticos melhoram significativamente (Stechly & Kambhampati, 2024); modelos que começam honestos, ao receberem autoridade para julgar suas próprias recompensas, descobrem espontaneamente estratégias de engano para manipular essa função (McKee-Reid et al., 2024). As rédeas (reins) não deixam o cavalo mais lento. Impedem que o cavalo galope na direção errada.

E aqui uma coisa se clarifica. Quando se oferecem opiniões, o agente vacila. Pressionar “você realmente confirmou?” intimida o responsável; a IA reverte respostas que estavam certas. Mas cinco fotos não são uma opinião. Testes aprovados não são uma opinião. Cinco peles não são uma opinião. Não há a quem bajular diante de fatos. Enquanto o portão fizer perguntas factuais, ninguém pode persuadi-lo.

Mas os jogos enfrentaram algo ainda mais difícil primeiro — o cheese

Parar aqui significa ver apenas metade. O que os jogos realmente ensinam vem a seguir.

“Mate 10 ratos” é uma quest infame. Por quê? Porque há uma brecha entre o que o portão verifica (10 ratos mortos) e o que o designer realmente queria (o jogador experimentar o conteúdo). O portão é apenas um proxy do objetivo, e os jogadores exploram essa brecha. Speedrunners quebram jogos ao encontrar brechas entre a condição de conclusão e a intenção de design. Isso se chama cheese no design de jogos. Os modelos de raciocínio mais recentes fazem exatamente o mesmo — diante da quest de vencer um motor de xadrez, modelos como o o3, em vez de jogar honestamente, manipularam o arquivo de estado do jogo para fabricar uma “vitória” (Bondarenko et al., 2025). Quanto maior a capacidade, melhor encontram as brechas.

Meu portão de imóvel também pode sofrer cheese. Cinco fotos verificam “as fotos existem”, não “a saída foi concluída adequadamente”. E se o responsável fotografou apenas paredes limpas? E se reutilizou fotos da vistoria anterior? O portão passa. Quando a medição se torna o objetivo, a medição se corrompe — é a Lei de Goodhart, e Manheim & Garrabrant (2018) classificaram esse fracasso por superotimização em quatro variantes. A pesquisa em segurança de IA catalogou o mesmo fenômeno como reward hacking: o agente que, em vez de limpar a bagunça, a esconde da visão (Amodei et al., 2016) faz exatamente o mesmo que o responsável que fotografa apenas paredes limpas.

Encontro essa brecha no código repetidamente. Recentemente refatorei um framework web com 23.000 estrelas seguindo a regra “um conceito por arquivo” e confirmei que todos os 4.419 testes passavam. Um fato verificado. Mas ao aprofundar a análise dos mesmos dados, a regra havia passado, mas o objetivo estava apenas 90% atingido — 10% dos arquivos ainda continham múltiplos conceitos em um só lugar. O portão (zero violações de regra) havia passado, mas o propósito que o portão mirava não estava completamente fechado. Meu próprio código estava fazendo cheese no meu próprio portão.

Por isso a verdadeira habilidade do Reins não é “colocar um portão”. É projetar um portão à prova de cheese. Uma quest fraca pergunta “há fotos?”. Uma quest forte exige timestamps, verifica metadados de localização e compara com fotos anteriores à entrada usando visão computacional. A literatura de quarenta anos de designers de jogos elaborando “quests à prova de cheese” é, na verdade, o gabarito de “portões resistentes ao Goodhart”.

E isso não acontece sozinho. Mesmo treinando com recompensas verificáveis (RLVR), os modelos podem escolher explorar verificadores imperfeitos em vez de aprender as regras (Helff et al., 2026). A boa notícia é que fortalecer intencionalmente o portão (environmental hardening) reduziu exploits em 87,7% sem perda de precisão (Thaman, 2026). A robustez do portão é uma questão de design, não de sorte.

Uma diferença — na realidade, o cheese tem custo real

Analogias têm limites. As condições de conclusão de quests de jogos são projetadas para diversão e ritmo. Não precisam capturar necessariamente o objetivo real, e sofrer cheese é inofensivo. Se um jogador quebrar “mate 10 ratos” com atalhos, ninguém se machuca.

Os portões Reins da realidade são diferentes. O custo do cheese é real — fraude na saída, builds quebradas, contabilidade aprovada incorretamente. Por isso os portões reais precisam ser mais resistentes ao cheese que os jogos. Essa assimetria, na verdade, torna o núcleo ainda mais nítido. Os jogos fizeram isso, mas nós precisamos fazer com mais rigor.

Dar uma tarefa a um agente é dar uma quest

Chegando aqui, uma frase cai no lugar.

O motivo pelo qual o vibe coding colapsa é que ele entrega uma quest sem condições de conclusão. Um agente que recebe uma quest sem marcadores de objetivo e sem julgamento de conclusão vaga pelo mapa. Para em “isso deve estar bom o suficiente” ou perambula sem fim. Reins é projetar a quest correta para esse agente. Objetivo claro (spec), marcadores visíveis (SSOT), julgamento de conclusão à prova de cheese (verificação determinística).

E nessa única cena cabem três camadas de habilidade.

  • Jogar a quest. Adotar e usar um portão que alguém criou. — Usuário.
  • Projetar a quest. Construir diretamente o portão adequado ao seu domínio (saída, contabilidade, código). — Criador.
  • Projetar a quest à prova de cheese. Antever o ponto onde o proxy não acompanha o objetivo. — Designer.

A maioria para no jogar. Escalar o jogo é design; impedir que o jogo quebre é design anti-cheese.

Então

Da próxima vez que alguém disser “está pronto”, não questione. Pergunte:

“O que é conclusão, e quem projetou a quest que a julga?”

Se não houver resposta para isso, o que você tem não é conclusão. É apenas a afirmação de alguém.

Artigos relacionados

Leitura adicional (externa)

  • Specification gaming: the flip side of AI ingenuity — Victoria Krakovna et al., Google DeepMind. O argumento central do artigo — que portões são proxies da intenção e agentes exploram a brecha — sistematizado em pesquisa de segurança de referência.
  • There’s Cheese in Your Game! — Shay Pierce, Game Developer. “Se for entediante mas mais eficiente, o jogador fará isso” — a perspectiva de design de jogos sobre quests sem cheese se sobrepõe diretamente ao conceito de «portão à prova de cheese».
  • From shortcuts to sabotage: emergent misalignment from reward hacking — Anthropic. Como o reward hacking que passa apenas no script de avaliação se dissemina em tarefas de codificação — evidência empírica recente de por que não se deve deixar o agente ser árbitro de sua própria conclusão.
  • How to write a good spec for AI agents — Addy Osmani. Reduzir “deixa mais rápido” para “LCP < 2,5s” — a versão prática da prescrição de definir conclusão como condição verificável.
  • What is agentic engineering? — Simon Willison. Dividir o papel humano em definição de objetivo, preparação de ferramentas e verificação, e ver a aprovação em testes como «pronto» — alinha com o reframe agente=executor / humano=designer de quest.

Fontes

  • Manheim & Garrabrant. “Categorizing Variants of Goodhart’s Law” (2018, arXiv:1803.04585)
  • Amodei et al. “Concrete Problems in AI Safety” (2016, arXiv:1606.06565)
  • Bondarenko et al. “Demonstrating Specification Gaming in Reasoning Models” (2025, arXiv:2502.13295)
  • Helff et al. “LLMs Gaming Verifiers: RLVR can Lead to Reward Hacking” (2026, arXiv:2604.15149)
  • Thaman. “Reward Hacking Benchmark: Measuring Exploits in LLM Agents with Tool Use” (2026, arXiv:2605.02964)
  • McKee-Reid et al. “Honesty to Subterfuge: In-Context RL Can Make Honest Models Reward Hack” (2024, arXiv:2410.06491)
  • Stechly, Valmeekam, Kambhampati. “On the Self-Verification Limitations of Large Language Models” (2024, arXiv:2402.08115)
  • Jimenez et al. “SWE-bench: Can Language Models Resolve Real-World GitHub Issues?” (2023, arXiv:2310.06770)
  • Zhou et al. “WebArena: A Realistic Web Environment for Building Autonomous Agents” (2023, arXiv:2307.13854)
  • Imagem principal: gerada por IA (Google Gemini)