Passo 3 · Fundamentos · Loop Engineering Harness ENPT
Fundamentos · O contrato que define o "pronto"

Os portões e o Portão da Prova

O loop nunca declara vitória por conta própria. Quatro portões separam uma tarefa do "entregue" — Escopo, Prova, Curso e Publicação — e um deles é o coração de todo o método: o Portão da Prova. Ele aceita apenas evidência no limite real — você de fato executou e atingiu o caminho real — nunca uma afirmação, um mock ou uma asserção verde que você mesmo escreveu.

Leia a versão simples, ou abra a camada técnica em qualquer seção.
1

A grande ideia: um portão é uma promessa que ninguém pode pular


Um portão é um ponto de controle com uma regra: você não passa até que uma condição específica seja verdadeira — e a condição é verificada, não presumida. O loop tem quatro deles, e juntos eles são o contrato do que "pronto" significa. Ninguém — nem uma pessoa com pressa, nem uma IA confiante — pode liberar uma tarefa com um aceno. Ou a condição do portão é atendida, ou o trabalho não está pronto. Ponto final.

Os quatro portões, na ordem em que um trabalho os encontra: Escopo pergunta "o 'pronto' está escrito como algo que podemos de fato medir?" Prova pergunta "executamos de verdade e vimos funcionar?" Curso pergunta "existe uma lição clara e autossuficiente explicando o resultado?" E Publicação pergunta "o resultado está em um lugar onde pode ser encontrado e usado?" Cada um é um sim/não que você pode apontar — nunca um palpite.

Por que se dar ao trabalho de transformar "pronto" em quatro verificações duras? Porque "pronto" é a palavra mais reivindicada em excesso em qualquer projeto. É barato dizer que algo funciona e caro mostrar que funciona. Os portões existem para que a coisa cara — mostrar — seja a única que conta. O portão do meio, Prova, é onde mora a maior parte do perigo, então a maior parte desta lição mora lá também.

Pense nisso como… as eclusas de um canal. Um barco não pode simplesmente flutuar de um nível de água para o próximo porque se sente pronto — cada eclusa tem que encher fisicamente antes que o portão abra, em ordem, um de cada vez. A eclusa não se importa com o quão confiante o capitão está; ela se importa se a água está realmente nivelada. Os portões do loop são essas eclusas: a água precisa subir de verdade antes que o próximo portão abra.

Onde os portões ficam no loop

Cada passo do loop é LEARN → ANALYZE → EXECUTE one bounded unit → VERIFY at the real boundary → DECIDE. O Portão de Escopo é resolvido antes de o loop começar a girar (é o done-when mensurável da lição 2). O Portão da Prova é o que o passo VERIFY precisa superar a caminho do DECIDE — não é uma fase separada, é a barra à qual o VERIFY é submetido. Os portões de Curso e Publicação disparam uma vez, na convergência, quando o objetivo inteiro é atingido.

Um portão é um predicado, não uma fase

Ajuda ler cada portão como uma função booleana sobre a realidade: scopeMet(), proofMet(), courseMet(), publishMet(). O "pronto" da execução é o e lógico dos quatro. Como cada um retorna um valor derivado de algo observado — uma medição, o código de saída de um comando, um arquivo que existe, uma URL que resolve — não há lugar para uma opinião se infiltrar. Esse é o ponto inteiro: o contrato é imposto por evidência, não por confiança.

2

Os quatro portões, em ordem


Aqui estão os quatro, da esquerda para a direita, do jeito que o trabalho flui por eles. Um trabalho tem que superar cada um antes que o próximo abra — e se algum falhar, o trabalho é devolvido, não liberado. Repare que o segundo está destacado: esse é o coração do método, e o resto da lição dá zoom nele.

uma tarefa → Escopo pronto mensurável? Prova ★ executou de verdade? o coração Curso uma lição clara? Publicação acessível onde? a condição de cada portão precisa ser VERDADEIRA antes do próximo abrir — sem pular
Leia da esquerda → direita. Escopo enquadra o trabalho, Prova o prova, Curso o explica, Publicação o entrega. A estrela marca o coração.
1

Portão de Escopo

O "pronto" é escrito como algo que você pode medir — um número a atingir, um teste a passar, um comportamento a observar. Um objetivo vago não consegue abrir este portão.

Abre quandoExiste um done-when concreto e verificável (lição 2).
2

Portão da Prova

A mudança foi executada no limite real — o comando real, o caminho real, a saída real — e observada funcionando. Uma afirmação ou um mock não contam.

Abre quandoExiste evidência no limite real. Este é o coração do loop.
3

Portão de Curso

O resultado vem com um curso visual-teach autossuficiente e multi-lição — uma pessoa consegue aprender o que foi construído sem ler o código.

Abre quandoExiste um curso completo (você está lendo um agora).
4

Portão de Publicação

O entregável é enviado para algum lugar acessível — um gist privado, um site no Pages — e a URL é reportada de volta. Um resultado que ninguém alcança não está entregue.

Abre quandoO artefato está no ar e sua localização é conhecida.
verificado, não presumido em ordem falha → devolvido "pronto" = os quatro verdadeiros

Dois são por passo, dois são na convergência

O Escopo é fixado no início e relido a cada passo (pode ser afinado, nunca ampliado em silêncio). A Prova é imposta em todo VERIFY — cada unidade delimitada tem que provar a si mesma antes de o loop avançar. Curso e Publicação são portões de convergência: disparam quando o objetivo inteiro é atingido, transformando um resultado que funciona em algo que uma pessoa consegue aprender e alcançar. O Portão de Publicação ganha sua própria lição (lição 11); o Portão de Curso é o tema da lição 10.

Por que "curso" é um portão, afinal

É fácil pensar que entregar código é a linha de chegada. Neste harness não é: um resultado que você não consegue explicar é tratado como ainda-não-pronto, porque a próxima pessoa (ou o próximo agente) não consegue construir sobre ele com segurança. O Portão de Curso força a construção a terminar em entendimento, não apenas em bytes — que é exatamente por que esta própria página existe.

3

O Portão da Prova é o coração: evidência, nunca uma afirmação


Dos quatro, o Portão da Prova é aquele em torno do qual o método inteiro foi construído. Sua regra é curta e implacável: "pronto" exige evidência no limite real — você executou e atingiu o caminho real — nunca uma afirmação, um mock ou uma asserção verde. Vamos destrinchar isso, porque cada palavra é estrutural.

Uma afirmação é qualquer um dizendo "funciona" — inclusive uma IA muito fluente que soa completamente certa. O Portão da Prova não aceita afirmações, não importa quem as faça. Um mock é um substituto: uma versão falsa da coisa que sempre responde direitinho, usada para evitar tocar no sistema real. Mocks são úteis enquanto se constrói, mas não provam nada sobre a realidade, então não abrem este portão. Uma asserção verde é a mais traiçoeira: um teste que passa — mas só porque foi escrito para passar, ou só verifica a metade fácil, ou roda contra o mock em vez do limite real. Verde não é o mesmo que verdadeiro.

O que de fato abre o portão é o oposto dos três: você pega a coisa real, executa, empurra pelo caminho real que importa e observa o que acontece de verdade. Então você aponta para aquilo — o comando, a saída, a página que carregou, o valor que voltou. Se você não consegue apontar para a evidência, o portão fica fechado e o trabalho não está pronto.

Pense nisso como… um paraquedas. A etiqueta de embalagem diz "inspecionado — OK". O rótulo é uma afirmação. Uma dobra de treino sobre a mesa é um mock. Um teste unitário que confirma que a etiqueta foi preenchida é uma asserção verde. Nenhum deles é a coisa que você de fato quer, que é: o velame abriu, no ar, num salto real. O Portão da Prova é o harness se recusando a contar qualquer coisa menos que o velame abrindo.

O PORTÃO REJEITA uma afirmação — "funciona" um mock — um substituto uma asserção verde ⌧ portão fechado não pronto O PORTÃO ACEITA executar a coisa REAL no caminho REAL observar a saída ✓ portão abre pronto
Esquerda: os três impostores do "pronto". Direita: a única coisa que abre o portão — realidade observada para a qual você pode apontar.

O Portão da Prova em uma frase

Se você não consegue apontar para o momento em que a coisa real fez o trabalho real, você tem uma afirmação — e uma afirmação não é "pronto".

"Limite real" significa a costura que de fato importa

O limite é onde quer que a mudança encontre a realidade e possa falhar: o endpoint HTTP de fato retorna 400, o binário de fato sai com 0, a página de fato renderiza num navegador, o arquivo de fato cai no disco, a migração de fato roda contra um schema real. Provar contra uma camada interna que você controla totalmente (uma função que você acabou de escrever, um mock que você configurou) é o erro clássico — isso testa a sua intenção, não o mundo. Escolha a costura mais externa pela qual a unidade é responsável e atinja essa.

Por que um teste que passa não é prova automaticamente

Um teste é evidência só quando exercita o limite real e poderia genuinamente falhar. Três formas de o "verde" mentir: ele roda contra um mock em vez da dependência real; ele afirma algo trivialmente verdadeiro (a função retorna um valor, não o valor certo); ou foi escrito depois do fato para casar com o que o código já faz. O Portão da Prova pergunta a qualquer verificação verde: que coisa real isto tocou, e como teria ficado vermelho se o trabalho estivesse errado?

Quando o limite não pode ser alcançado

Às vezes você genuinamente não consegue atingir o caminho real — sem credenciais, um serviço está fora, o ambiente está faltando. A regra então não é "mockar e dizer que está pronto". É parar e perguntar, pronto para decisão: exponha exatamente o que está bloqueado, o que você executaria se desbloqueado, e as opções — para que uma pessoa possa tomar uma decisão limpa. Falsificar a prova para seguir em frente é a única coisa que o portão existe para impedir.

4

Quem segura o portão


Os portões são um contrato, e um contrato só funciona se todos o honrarem da mesma forma. Neste harness três tipos de participante encontram o Portão da Prova — a pessoa que observa, o modelo de linguagem que faz o raciocínio e o agente (uma ferramenta de CLI) que faz a execução — e cada um tem um dever claro. Eles não são audiências separadas a quem se dirigir; são três mãos no mesmo portão.

A pessoa

Confiar na evidência, não nas afirmações

Você lê o resultado do jeito que um inspetor lê um laudo: você procura a prova, não a confiança. "Funciona" não vale nada; um comando que você pode reexecutar e uma saída que você pode ver valem tudo. Os portões são o seu contrato — são o que permite você ficar fora da execução e ainda confiar no "pronto".

O LLM (o raciocinador)

Reexecutar a prova após qualquer mudança

Toda vez que você toca no caminho, a prova antiga fica obsoleta — então você prova de novo, contra o limite real. E se o limite estiver inalcançável, você não falsifica: você para e pergunta, pronto para decisão, expondo o que está bloqueado e quais são as opções, para que a pessoa possa tomar uma decisão limpa.

O agente (a CLI)

O Validador é um agente diferente

Quem construiu a mudança não pode ser quem a prova. Um agente separado — o Validador — roda a verificação no limite. Um autor corrigindo a própria prova é exatamente o conflito que o Portão da Prova remove; a independência é o que faz a evidência valer a confiança.

Separação de funções, emprestada do mundo real

"O Validador nunca é o construtor" é o mesmo princípio de um segundo par de olhos num deploy, ou de um contador diferente assinando os livros. O construtor tem interesse na mudança passar; esse viés é humano e inevitável, então o harness roteia a prova por alguém (algo) sem ele. Numa execução multi-agente o orquestrador entrega a unidade delimitada a um agente e a verificação a outro — a independência é estrutural, não uma questão de boas intenções.

"Pronto para decisão" é um formato, não um sentimento

Quando um LLM atinge um limite inalcançável, "parar e perguntar" só é útil se o pedido for completo. Pronto para decisão significa: aqui está exatamente o que está bloqueado, aqui está a evidência que eu tenho, aqui estão as 2–3 opções com seus trade-offs, e aqui está a minha recomendação. Isso permite à pessoa desbloquear com uma única resposta em vez de uma rodada de perguntas — e mantém a pessoa na observabilidade, nunca na execução (a disciplina AFK da lição 5).

5

No log: como a prova fica quando escrita


Prova não é uma ideia — são algumas linhas que qualquer um pode reexecutar. Quando uma unidade supera o Portão da Prova, a evidência é capturada para que a pessoa possa auditá-la depois sem estar na sala. Aqui está a mesma unidade delimitada registrada de duas formas: uma afirmação (que o portão rejeita) e a prova que a substituiu (que o portão aceita). Leia ambas e a diferença fica óbvia.

LOOP-LOG.md — uma unidade que NÃO superou o Portão da Prova
# unit: /search must reject an empty query with 400
# status: claimed done
note: "added the guard, looks correct, should return 400 now"   ← uma AFIRMAÇÃO
test: "wrote test_empty_query — it passes"                     ← VERDE, mas contra um router mock
# Proof Gate: REJECTED — no real boundary was hit.
LOOP-LOG.md — a mesma unidade, agora COM prova
# unit: /search must reject an empty query with 400
# VERIFY — run the REAL endpoint, observe the REAL response
$ curl -s -o /dev/null -w "%{http_code}\n" "localhost:8000/search?q="
400                                ← observado no limite real
$ curl -s -o /dev/null -w "%{http_code}\n" "localhost:8000/search?q=shoes"
200                                ← o caminho feliz ainda funciona
# Proof Gate: PASSED — evidence above, re-runnable. Validator: agent-B (not the builder).

Rode a verificação no limite

A prova acima é só o curl atingindo o serviço em execução e imprimindo o código de status com -w "%{http_code}". Você inicia o serviço, depois roda as duas chamadas e lê os números com os próprios olhos — 400 para a query vazia, 200 para uma real. Esse par observado é a evidência; vai direto para o LOOP-LOG.md, o arquivo que a pessoa lê para auditar uma execução (você vai conhecer o log na lição 5).

Se o fato de que você precisa mora na web e não no repositório — um comportamento atual de uma API, uma versão, uma especificação — o caminho da fonte confiável é o CLI da Bright Data (brightdata search "…"), nunca um palpite e nunca WebSearch/WebFetch; isso é a lição 9. Mesmo princípio, limite diferente: evidência acima de recordação.

6

Ao vivo: revise uma mudança contra o Portão da Prova


Aqui está o portão em ação. Abaixo está uma mudança proposta real — o próprio guarda do /search do log acima — anotada do jeito que um Validador a revisa. As pílulas no topo são a leitura de relance do Validador sobre como a mudança move as coisas. Os pontos cor de argila são notas fixadas exatamente na linha de que tratam; uma é bloqueante, o que significa que o Portão da Prova fica fechado até ser resolvida. Clique em qualquer linha pontilhada para ler a nota e encontre o bloqueador.

Pense nisso como… um fiscal de obra percorrendo o canteiro com uma prancheta. Dá o sinal verde para a maioria das coisas, mas prega uma etiqueta vermelha na única viga que está fora da norma — e essa única etiqueta vermelha basta para reter o certificado. A nota bloqueante é essa etiqueta vermelha.

EM REVISÃO  unidade · guarda de query vazia do /search · branch fix/empty-querymain
Rejeitar uma query vazia com 400 em vez de retornar todos os resultados

Adiciona um guarda em GET /search para que um q vazio retorne 400, não o índice inteiro. 1 arquivo alterado · +6 −1

Correçãocaminho de q-vazio protegido Latência~ estável (uma verificação) Risco de provatestado contra um mock Over-fetchsem dump do índice inteiro
services/search/api.py+6−1
@@ -40,7 +40,12 @@ def search(req):
4040 q = req.args.get("q")
42+ return Response(status=400)
43+ return index.lookup(q)
4244 # --- tests ---
0 / 4 notas abertas Portão da Prova: bloqueado

Cada linha com ponto cor de argila carrega uma nota. 1 é bloqueante — é a razão pela qual esta mudança não superou o Portão da Prova ainda. Veja se você consegue encontrá-la.

Verde, mas contra um mock

A nota bloqueante fica na linha do teste porque o teste passa contra FakeRouter() — um mock — não o endpoint real. Isso é uma asserção verde sem nenhuma evidência no limite real por trás: ela prova a intenção do autor, não o comportamento do mundo. A correção é a prova da seção anterior — um curl real contra o serviço em execução mostrando 400 para ?q= e 200 para uma query real. Até essa evidência observada existir, o portão está corretamente fechado.

Este widget é a mesma superfície de revisão que um Validador usa, levantada inteira e com namespace para poder viver dentro desta lição. Tudo é inline — abra do file:// e simplesmente funciona.

7

Em uma imagem: as duas saídas do portão


A disciplina inteira se reduz a uma bifurcação. Uma unidade chega ao VERIFY; o Portão da Prova pede evidência no limite real. Sim → ela passa e o loop avança. Não → ela volta, todas as vezes. Não existe uma terceira porta rotulada "perto o suficiente".

uma unidade pronta chega ao VERIFY Portão da Prova evidência real? ✓ passa → próximo portão a unidade conta como pronta sim ↺ volta — refaça, depois reprova não ⚑ limite inalcançável? parar + perguntar, pronto para decisão não consigo alcançar →
Leia da esquerda → direita. Um losango, três saídas honestas — passar, refazer ou parar-e-perguntar. Nunca "perto o suficiente".

A única regra

O portão não tem porta para "provavelmente". Ou a evidência existe e você aponta para ela, ou a unidade não está pronta — e se você realmente não consegue alcançar o limite, você para e pergunta em vez de falsificar.

8

Exemplo resolvido: um "pronto" que não era


Veja o portão fazer seu trabalho em uma unidade, do começo ao fim. A tarefa: "fazer /search rejeitar uma query vazia com um 400." Um autor reporta que está pronto. O Portão da Prova discorda — duas vezes — antes de finalmente abrir. Cada momento é o portão recusando um impostor diferente do "pronto".

afirmação → rejeitada"Adicionei o guarda, deve retornar 400 agora"

Uma frase confiante e nada para apontar. O Portão da Prova não lê intenções — ele lê evidência. Rejeitado: nenhum limite foi atingido. Vá provar.

verde → ainda rejeitado"Tem um teste que passa — olha, está verde"

O teste roda contra FakeRouter(), um mock — ele afirma a intenção do autor, não o comportamento do endpoint real. Verde aqui prova que o falso funciona. Rejeitado: uma asserção verde contra um mock não é evidência no limite real.

evidência → APROVADOcurl no serviço em execução e leia os códigos

curl "localhost:8000/search?q="400, e curl "localhost:8000/search?q=shoes"200. Observado no limite real, reexecutável, capturado no log. Um agente diferente — o Validador — rodou. Aprovado: agora existe algo para apontar.

O que o portão produziu

Duas rejeições e uma aprovação — e a única diferença entre "rejeitado" e "pronto" foi um par de códigos de status que alguém de fato viu voltarem do serviço real. A afirmação e o teste verde não mudaram nada da realidade; o curl mudou. Isso é o Portão da Prova merecendo seu lugar como o coração do loop.

A aprovação, como ela cai no LOOP-LOG.md

Lê só na entrada, evidência na saída — toda afirmação tem uma fonte reexecutável, e a linha do Validador registra que quem provou não foi quem construiu.

# VERIFY — fix/empty-query — Validator: agent-B (builder was agent-A)
$ curl -s -o /dev/null -w "%{http_code}\n" "localhost:8000/search?q="      # → 400
$ curl -s -o /dev/null -w "%{http_code}\n" "localhost:8000/search?q=shoes" # → 200
# Proof Gate: PASSED. evidence above. unit done; loop may DECIDE.
9

A única regra para levar adiante


Quatro portões compõem o contrato do "pronto" — Escopo, Prova, Curso, Publicação — e eles são verificados, nunca presumidos. O do meio é o coração: o Portão da Prova aceita evidência no limite real e nada mais. Uma afirmação não é prova. Um mock não é prova. Uma asserção verde que você não consegue rastrear até o caminho real não é prova. Você executou, você atingiu a costura real, você viu funcionar, e você consegue apontar para isso — ou o trabalho não está pronto.

As três mãos nesse portão o mantêm honesto: a pessoa confia na evidência acima das afirmações, o LLM reprova depois de qualquer mudança e para-e-pergunta quando o limite está fora de alcance, e o agente mantém o Validador separado do construtor. Carregue isso e o resto do harness — as execuções AFK, as equipes multi-agente, a publicação — permanece confiável, porque tudo a jusante é construído sobre uma prova que você mesmo poderia reexecutar.

Seu agente é seu professor. Quer ver uma unidade real ser barrada pelo Portão da Prova, ou montar uma verificação no limite no seu próprio repositório? Pergunte. A seguir, damos zoom out de uma única unidade para o front-end que enquadra uma construção inteira — Forge: transformando uma ideia bruta em escopo mensurável.