Você conheceu cada etapa do loop uma de cada vez. Agora veja a coisa toda rodar sozinha — passada após passada, sem nenhum humano apertar go. Seu papel muda de rodar as passadas para assistir às passadas rodarem e ler a evidência. AFK: longe do teclado, totalmente observável.
Até aqui você aprendeu o loop como cinco movimentos que você faz: LEARN o estado real, ANALYZE a lacuna e escolha uma coisa, EXECUTE essa única unidade delimitada, VERIFY no limite real e DECIDE o que acontece em seguida. Lidos assim, soam como um checklist que você percorre na mão, uma passada de cada vez.
Não é. Uma vez escrito o contrato de escopo — o "pronto" mensurável da lição 2 — o loop roda AFK: longe do teclado. Um agente faz uma passada. Depois outra. Depois outra. Ele continua até "pronto" ser atingido ou bater em algo que só um humano pode responder. Ninguém clica em nada entre as passadas.
Isso muda seu papel por completo. Você não é mais quem roda cada passada. Você é quem assiste à execução — lendo um log que o loop escreve à medida que avança, dando uma olhada numa linha de status, vendo um checklist se preencher. Isso é observabilidade: você vê o que está acontecendo, mas não está no caminho. O sistema conduz; você observa.
A reformulação, em uma linha: o operador não roda as passadas — o operador assiste às passadas rodarem e lê a prova. A única vez em que você é chamado de volta é uma bifurcação genuína que só um humano pode resolver. Revisão de rotina nunca é trabalho seu.
Pense como… uma máquina de lavar louça. Você carrega, escolhe o ciclo, aperta start — e então vai embora. Você não fica ali girando o braço ou apertando o detergente a cada minuto. Você dá uma olhada na luzinha de vez em quando. Ela roda lavar → enxaguar → secar sozinha e para quando a louça está limpa. A única vez em que ela te chama de volta é um problema real que não consegue resolver sozinha — o ralo está entupido ou acabou o sal. Aquela luzinha piscando é a sua observabilidade; o ciclo é o loop; "louça limpa" é o seu done-when. Onde a analogia falha: uma máquina de lavar louça pode forjar "pronto" só parando, mas ao loop isso é proibido — toda passada precisa provar que está pronta num limite real, nunca alegar.
AFK não é "dispare e reze". É um loop autônomo rigorosamente delimitado com três garantias estruturais. Um: toda passada termina num Proof Gate real — a mudança é exercitada contra o limite de verdade (o executor de testes, o endpoint HTTP, o arquivo em disco, a página renderizada), nunca uma alegação ou um mock. Dois: o loop anexa cada passada a um artefato observável (LOOP-LOG.md) e mantém um status ao vivo, de modo que a execução é legível sem interrompê-la. Três: o loop bloqueia o humano somente numa bifurcação genuína que só o usuário resolve — uma decisão que nenhuma quantidade de coleta de evidência consegue resolver (uma decisão de produto, uma ação irreversível, uma credencial faltando). Todo o resto ele resolve sozinho e registra.
Em termos de operações, o humano fica no plano de observabilidade, não no plano de controle. Você consome sinais — LOOP-LOG.md, o checklist do done-when, o status por passada, o review.md ao fim da execução. Você não emite ações de controle dentro do loop entre as passadas. A separação é deliberada: um humano no caminho de controle por passada é o gargalo que torna a autonomia de longo prazo impossível. Tire o humano do caminho, deixe a ele uma janela clara para dentro, e o loop pode rodar por horas.
Esta lição é a dobradiça. O Módulo 2 ensinou os cinco movimentos; este os mostra rodando sem supervisão. O Módulo 3 (o Forge) envolve um front-end completo em torno de uma execução AFK — um Executor constrói cada ticket e um Validator independente o prova contra o GOAL.md (o Validator nunca é quem construiu), e uma passada final de QA AFK emite o review.md como um relatório de observabilidade. O fio que amarra tudo é exatamente a afirmação desta lição: tudo roda AFK; o único papel do humano é observabilidade.
Existe um modelo errado tentador, e o certo. O errado parece produtivo porque você está ocupado. O certo parece estranho no começo porque você não está.
O sinal revelador: se afastar-se do teclado para o progresso, você está conduzindo. Se afastar-se não muda nada além de você ler um log mais longo ao voltar, você está observando — e isso é o loop em movimento.
Aqui está a coisa toda. Os cinco movimentos formam um anel que o agente percorre de novo e de novo. Você é desenhado fora desse anel de propósito. Você não estende a mão para dentro dele. Você lê o que ele escreve — LOOP-LOG.md e o status ao vivo — por uma janela de mão única.
LOOP-LOG.md e o status por uma janela somente-leitura, sem nunca agir dentro.O posicionamento é o ponto inteiro do diagrama. Ponha o humano dentro do anel — fazendo a chamada DECIDE a cada passada, ou avaliando o VERIFY a olho — e o loop só consegue avançar na velocidade e na disponibilidade humanas. Ponha o humano fora, com uma janela somente-leitura para os artefatos, e o loop avança na velocidade da máquina enquanto permanece totalmente legível. A seta de LOOP-LOG.md para o humano aponta numa só direção: informação para fora, nenhum controle para dentro.
A seta isolada mais importante é a que vai de DECIDE de volta à próxima passada. Se VERIFY prova pronto, DECIDE para a execução. Se VERIFY mostra que a lacuna estreitou mas não fechou, DECIDE alimenta um plano melhorado de volta no LEARN e o anel gira de novo. Se VERIFY revela uma bifurcação que só o usuário resolve, DECIDE pausa e levanta um handoff. Três resultados, dos quais um (e só um) envolve você — e, mesmo assim, apenas como quem decide numa bifurcação, não como condutor das passadas de rotina.
Vamos desacelerar o loop até o talo e percorrer uma única passada, etapa por etapa, com o exemplo recorrente deste curso: RHG, o app que viemos melhorando lição após lição. Escolha um cenário, então aperte Próximo para acender cada etapa por vez. Veja para onde VERIFY manda a passada no ramo DECIDE — porque uma passada pode terminar de três formas diferentes, e só uma delas envolve você.
Comece aqui
Uma passada começa — e você não está nela
Aperte Próximo para percorrer uma passada que converge. Troque o cenário acima para ver uma passada que gira, ou uma que precisa parar e perguntar a você.
Uma passada é uma função. LEARN, ANALYZE, EXECUTE, então VERIFY retorna um veredito, e DECIDE é um switch de três vias sobre esse veredito. Repare que nada neste loop chama de volta um humano, exceto o único ramo explícito de handoff — e esse ramo dispara somente em fork, nunca numa passada de rotina.
async function pass(goal, log) { const state = await learn(goal); // see the real state const unit = analyze(state, goal); // classify gap, pick ONE await execute(unit); // one bounded change const proof = await verify(unit, goal); // at the REAL boundary log.append(proof); // observability, every pass switch (proof.verdict) { case 'done': return { stop: true }; // converged case 'progress': return { stop: false }; // iterate → next pass case 'fork': return handoff(proof); // the ONLY human pull-in } } while (!(await pass(goal, log)).stop) { /* AFK: no human between passes */ }
Um loop ingênuo tem dois resultados: pronto, ou tente de novo. O terceiro — fork — é o que mantém a autonomia segura. Sem ele, um loop que esbarra numa pergunta genuinamente humana ou chuta (e produz lixo confiante) ou roda para sempre. Com ele, o loop faz a coisa honesta: para, empacota a decisão e a revela. A disciplina é que fork é raro e específico — uma decisão de produto, uma ação irreversível, um segredo faltando — nunca "isso é difícil" ou "por favor confirme este passo de rotina".
O ramo que você acabou de percorrer merece uma imagem só sua, porque é o coração de "você observa, você não conduz". VERIFY produz um veredito; DECIDE age sobre ele. Dois dos três caminhos mantêm o loop autônomo. Só o terceiro — e só às vezes — chega até você.
Leia as cores: verde (convergiu) e azul (iterar) nunca tocam você. Ferrugem (handoff) é a única que toca — e dispara numa bifurcação genuína, não numa revisão de rotina. Se você se vir dentro do loop num caminho verde ou azul, algo está mal configurado: você está conduzindo quando deveria estar observando.
Agora conduza o painel do jeito que você de fato conduziria numa execução AFK — só que "conduzir" é a palavra errada, porque os únicos botões aqui são os movimentos do próprio loop, e seu trabalho de verdade é ler a leitura. Aperte um movimento para avançar a passada; veja o estado destacado viajar, os próximos movimentos permitidos se atualizarem e o log anexar. O ponto a sentir: em cada estado o loop sabe o que vem a seguir por conta própria — os botões estão mostrando as opções da máquina, não pedindo que você escolha.
Leve até o fim. Uma passada convergida termina em beco sem saída em CONVERGED, sem nada para apertar. Uma passada bloqueada termina em BLOCKED — e a única coisa que a move é uma decisão humana (o movimento resolve, marcado em azul). Esse movimento azul é o único lugar a que uma pessoa pertence.
O nó cor de barro é o estado atual. Os nós esmaecidos não são alcançáveis daqui. resolve é o único movimento humano.
Estado atual · o que você observa
IDLE
A execução está configurada e esperando. Aperte start para começar a passada 1. Depois disso, o loop avança sozinho.
Movimentos que o loop pode fazer em seguida
LOOP-LOG.md — anexado conforme a execução avança
O painel é uma máquina de estados finitos — o mesmo formato do próprio loop. Há um estado atual, um conjunto fixo de movimentos e uma tabela que mapeia (state, move) → nextState. Os botões leem a tabela para decidir o que habilitar; você não consegue disparar um movimento que não seja legal a partir do estado atual, que é exatamente por que o loop não consegue "pular" o Proof Gate. CONVERGED é terminal (a execução acabou). BLOCKED é um estado especial: o único movimento para sair dele é resolve, e resolve é do humano.
const run = { IDLE: { start: 'RUN' }, RUN: { verify: 'VER' }, // always pass through proof VER: { done: 'DONE', again: 'ITER', // converge or loop… fork: 'BLK' }, // …or raise a fork ITER: { start: 'RUN' }, // next pass, autonomously BLK: { resolve: 'IDLE' }, // the ONLY human move DONE: {} // terminal — converged };
Quando um movimento não está na tabela para o estado atual, o botão fica desabilitado, não silenciosamente inerte. Essa restrição visível é o ensinamento: as opções do loop são finitas e conhecidas a cada passo, então seu comportamento é previsível e legível de fora. Um humano assistindo ao painel sempre consegue responder "o que pode acontecer a seguir?" sem ler nenhum código — o que é a essência da observabilidade.
Um diagrama estático mostra as etapas; ele não consegue mostrar o movimento. Aperte Reproduzir e o loop roda sozinho — um token de passada viaja LEARN → ANALYZE → EXECUTE → VERIFY, o Proof Gate decide, e a execução ou converge ou manda o token de volta para outra passada. Reproduzir avança automaticamente sem nenhuma entrada sua (essa é a parte AFK); Passo percorre um compasso; Reiniciar reembaralha se esta execução vai convergir ou girar de novo. Repare que você não está apertando nada enquanto roda — você só está assistindo.
Pronto. Aperte Reproduzir para rodar uma passada sem supervisão. Esta execução vai convergir ou girar — Reiniciar reembaralha qual.
O movimento é uma máquina de estados finitos de cinco fases em JS puro — learn, analyze, execute, verify, decide. Cada compasso interpola o token com requestAnimationFrame e uma curva ease-in-out; Reproduzir dispara automaticamente o próximo compasso num timer (o comportamento AFK), Pausar o limpa. Não há <video>, nem GIF, nem biblioteca — então ele desliza, percorre e reinicia de forma determinística. O ponto verde que sempre orbita é um único <animateMotion> declarativo com repeatCount="indefinite", sinalizando "o loop está vivo" com zero JS.
Honrar prefers-reduced-motion: reduce é inegociável para uma lição que se apoia em animação. Quando está ativado, as interpolações do JS viram saltos instantâneos (o token ainda se move entre etapas, só não desliza), e toda a sequência é narrada na legenda aria-live="polite" para que um usuário de leitor de tela — ou qualquer pessoa que desligou o movimento — receba cada compasso em palavras. A órbita declarativa é intencionalmente sutil e de baixo contraste para não distrair; um build mais rígido poderia pausá-la sob a mesma media query.
LOOP-LOG.md — avance o tempo, veja-o se preencherEsta é a coisa mais importante que você de fato faz como observador: você lê o log. Então aqui está o próprio log, ao vivo. Aperte Avançar uma passada para deixar o loop dar mais um passo — e observe duas coisas ao mesmo tempo: o checklist de done-when à esquerda avança mais perto de completo, e o LOOP-LOG.md à direita ganha uma nova entrada. Você não está executando a passada. Você está assistindo ao loop executá-la e lendo o que ele escreveu.
Continue avançando. A execução termina de uma de duas formas: cada caixa de done-when fica verde e o veredito diz convergiu, ou o loop esbarra numa bifurcação e o veredito fica azul — pronto para decisão, esperando por você. Esse é o ritmo inteiro de uma execução AFK, comprimido.
done-when · o contrato de escopo do RHG
LOOP-LOG.md · anexado pelo loop, lido por você
LOOP-LOG.md contémCada passada anexa um registro pequeno, somente-de-anexo. O formato é deliberado: um timestamp, qual unidade foi tentada, o veredito do Proof Gate e a evidência daquele veredito — o comando de fato executado e seu resultado de fato, nunca uma paráfrase. Essa última parte é o que torna o log confiável: o humano lê a prova, não a opinião do loop sobre si mesmo.
## pass 3 · 2026-06-15T14:22:09Z unit: add /health endpoint + smoke test verify: curl -s -o /dev/null -w '%{http_code}' :3000/health result: 200 # real boundary, not a claim verdict: progress # done-when: 3/5 met → iterate next: a11y sweep on the pricing view
O log nunca é reescrito, só anexado. Isso dá ao observador um histórico completo e ordenado da execução — cada passada, cada veredito, cada pedaço de evidência — para que um humano chegando tarde possa reconstruir exatamente o que aconteceu sem ter assistido ao vivo. É o gravador de voo do loop. Quando a execução finalmente converge (ou bifurca), o mesmo artefato é a base do review.md de fim de execução que a passada de QA emite.
Repare que o último item do done-when — "Copy de preços aprovada" — está marcado como só humano. O loop consegue levar os outros quatro ao verde inteiramente por conta própria. Ele fisicamente não consegue marcar o quinto, porque é uma decisão de produto. Esse único item é o que acaba virando o veredito azul e levantando o handoff. Tudo acima dele é trabalho do loop; aquela única linha é sua.
Às vezes você não quer ler o log inteiro — você quer os sinais vitais num relance, do jeito que um engenheiro de plantão varre um painel. Essa é a leitura de status. Quatro números de destaque dizem como vai a execução; uma tabela abaixo mostra a saúde de cada etapa na passada mais recente. Aperte Atualizar para puxar uma nova leitura, ou ligue Ao vivo para vê-la pulsar como faria durante uma execução AFK. De novo: você está lendo, não rodando.
Saúde da execução — RHG · loop em movimento
execução AFK · meta: GOAL.md · contínua, desde a passada 1
| Etapa | Status | Última latência | Última nota |
|---|
Um único array de objetos de etapa alimenta tanto a tabela quanto a pílula de resumo. Cada tique perturba as métricas dentro de limites realistas, recomputa o status de cada etapa, então re-deriva o banner: qualquer etapa com prova falha → vermelho, qualquer etapa esperando humano → azul, senão verde/convergindo. Os deltas dos KPIs são coloridos por significado — "chamados ao humano" em queda é bom (verde), mesmo que ambas as setas possam apontar para o mesmo lado. O ponto inteiro de uma leitura de status é que o olho lê a cor primeiro.
Para uma execução AFK, "saudável" é uma coisa específica: as passadas estão completando, a taxa de falha da prova é baixa ou caindo, o done-when está subindo, e os chamados ao humano estão em zero. Uma execução que itera feliz sem ninguém tocá-la é o estado ideal — significa que o loop está fazendo exatamente o seu trabalho. O número que você mais observa é "chamados ao humano": enquanto permanecer em zero, você pode ficar longe do teclado.
Quando o loop é envolvido pelo front-end Forge (próximo módulo), o trabalho é um quadro de tickets — pequenas unidades delimitadas, cada uma com relações de bloqueio, dispostas como um kanban. Numa execução AFK, você não arrasta os cartões. O loop arrasta: ele escolhe um ticket desbloqueado, o constrói, o prova e o desliza para Pronto — depois o próximo. Aperte Rodar uma passada do loop e veja um cartão avançar sozinho. As contagens no topo se mantêm honestas o tempo todo. Você ainda pode pegar um cartão para vê-lo se mover, mas numa execução real você só estaria assistindo.
Um cartão é especial: RHG-19 carrega uma bifurcação só do usuário. O loop vai mover todo o resto para Pronto e deixar aquele estacionado em andamento com uma etiqueta de bloqueado — porque é a única decisão que o loop não tem permissão para tomar. Aquele cartão estacionado é a sua deixa.
Cada ticket é um objeto com um campo col que só pode ser triage, progress ou done. As colunas na tela não são a fonte da verdade — o array de objetos de ticket é. "Rodar uma passada do loop" encontra o ticket desbloqueado de maior prioridade, o avança uma coluna e re-pinta. Um ticket com a flag human não atendida pode mover para dentro de andamento mas não consegue chegar a Pronto — espelhando exatamente o loop: o Executor o constrói, o Validator (um agente diferente, nunca quem construiu) tenta prová-lo, e o Proof Gate se recusa a aprovar uma decisão só humana.
function runOnePass() { const t = tickets .filter(x => x.col !== 'done' && !x.blocked) .sort(byPriority)[0]; if (!t) return raiseHandoff(); // only blocked work left → you t.col = next(t.col); // triage→progress→done if (t.human && t.col === 'done') t.col = 'progress'; // can't auto-finish a fork render(); }
No Forge, os tickets carregam arestas de bloqueio — o ticket B não pode começar até o ticket A estar pronto e provado. O loop as respeita automaticamente quando escolhe a próxima unidade desbloqueada, e é por isso que uma execução longa não precisa de um humano sequenciando o trabalho: o grafo de dependências mais a ordem de prioridade bastam. O único papel de sequenciamento do humano é o primeiríssimo (escrever a meta) e o último de todos (uma bifurcação genuína).
Aqui está a outra forma de consumir uma execução AFK: não ao vivo, mas depois. Você voltou ao teclado; a execução terminou horas atrás. Você lê o registro de cima a baixo — uma linha do tempo de cada passada, por que cada veredito saiu do jeito que saiu, os totais e um checklist de quaisquer encaminhamentos. Este é o mesmo log de gravador de voo de antes, renderizado como um relatório que você varre em dois minutos. Pontos verde-oliva são passadas normais, cor de barro é uma passada que encontrou uma lacuna, azul é a única bifurcação que chamou um humano, verde é a convergência.
LEARN do baseline · 1/5 do done-when atingido
O loop leu o estado real do RHG: build verde, mas sem endpoint /health, dois testes falhando, a11y não verificada. Escolheu os testes falhando como a primeira unidade.
Corrigiu os testes falhando · prova: vitest run → 0 failing
Executou uma correção delimitada, verificou no limite real (rodou a suíte), registrou a passada. 2/5 atingido. Girou sozinho.
progressoAdicionou /health — a primeira tentativa falhou na prova
VERIFY bateu em :3000/health e recebeu 404, não 200. O Proof Gate se recusou a aprovar. O loop não alegou sucesso — registrou a falha e melhorou o plano.
/health retorna 200 · 3/5 atingido
Rota registrada corretamente; curl retornou 200 no limite real. Registrou e girou. Ainda ninguém ao teclado.
Esbarrou numa bifurcação — a copy de preços precisa de um humano
4/5 atingido. O último item era uma decisão de produto que o loop não tem permissão para tomar. Ele pausou, empacotou a decisão e levantou um handoff. Este é o único momento em que um humano foi chamado.
handoff · pronto para decisãoDecisão aplicada · 5/5 atingido · convergiu
Assim que o humano respondeu a única bifurcação, o loop a aplicou, re-verificou todos os cinco itens do done-when em seus limites reais e parou. Execução completa, totalmente provada.
convergiuO que 39 minutos sem supervisão renderam — e o número que mais importa no fim.
6
passadas rodadas1
falha de prova (capturada)1
chamado ao humano5/5
done-when atingidoDepois de ler a execução, as únicas coisas que sobram para você são encaminhamentos leves — não refazer o trabalho. Marque-os; a barra te acompanha. Repare que nenhum deles é "rodar as passadas de novo": o loop já provou cada uma.
review.md são artefatos diferentesO LOOP-LOG.md é escrito durante a execução, passada a passada, pelo próprio loop — é o gravador de voo bruto. O review.md é escrito depois da execução por uma passada de QA AFK separada cujo único trabalho é observabilidade: ela lê o estado concluído, re-checa o done-when de forma independente e escreve um veredito legível por humanos. Crucialmente, o QA é ele próprio AFK — o humano não o roda. O humano lê a saída dele. Até a revisão da execução é automatizada; seu papel permanece pura observação.
A passada 3 falhar no seu Proof Gate, e então ser capturada e repetida, é o sistema funcionando corretamente. Uma execução com zero falhas de prova ao longo de muitas passadas é mais suspeita, não menos — pode significar que o portão é fraco demais para capturar qualquer coisa. A presença de uma falha capturada-e-recuperada no log é evidência de que o limite é real. O observador deveria se tranquilizar com isso, não se alarmar.
Tudo até aqui disse "você observa, você não conduz". Aqui está a única exceção, delimitada. Quando o loop esbarra numa decisão que nenhuma evidência consegue resolver — uma decisão de produto, uma ação irreversível, um segredo faltando — ele não chuta e não fica rodando à toa. Ele para numa bifurcação, empacota a decisão e a entrega a você pronta para decisão. Você toma a única decisão. O loop assume daí e volta a rodar sozinho.
O modelo inteiro em uma frase: o loop roda cada passada AFK e prova cada uma num limite real; você vive do lado da observabilidade lendo LOOP-LOG.md / status / review.md; a única coisa que algum dia cruza para o seu lado é uma bifurcação genuína, pronta para decisão — e depois que você a responde, o loop volta na hora a rodar sozinho.
A ideia inteira tem um lar concreto: um arquivo de meta que você escreve uma vez, um log somente-de-anexo que o loop escreve enquanto roda, e um status que você lê. Você pode abrir os três com um comando. O que reparar é que nenhum deles é uma superfície de controle para você — eles são o espaço de trabalho do loop e a sua janela somente-leitura para ele.
~/.claude/skills/loop-engineering/forge-flow.md — o contrato de AFK + observabilidade# the human's ONLY role is observability: # read LOOP-LOG.md — every pass, with real proof # read status — converging / iterating / blocked # read review.md — the AFK QA's end-of-run report # the human NEVER executes a pass, and NEVER runs the QA. # the human blocks ONLY on a genuine user-only fork (handoff).
E a própria execução, reduzida à sua espinha — um loop que conduz as passadas e escreve o log, com o humano em lugar nenhum do caminho por passada:
while (!doneWhenMet(goal)) { // the contract from lesson 2 const proof = await pass(goal); // learn→analyze→execute→verify log.append(proof); // observability, every pass if (proof.verdict === 'fork') // the ONE human pull-in await handoff(proof); // decision-ready, then resume } await qaReview(goal); // AFK QA → review.md (you READ it)
# read the AFK + observability flow that this lesson teaches cat ~/.claude/skills/loop-engineering/forge-flow.md # during a run, tail the flight recorder without touching the loop tail -f LOOP-LOG.md # after a run, read the AFK QA's observability report cat review.md
Das próprias regras de trabalho do projeto: "TUDO roda AFK; o humano só tem observabilidade (lê LOOP-LOG.md/review.md/status, não executa nada — nem o QA)." Ou seja: tudo roda AFK; o humano só tem observabilidade — lê o log, a revisão e o status, e não executa nada, nem o QA. O Validator nunca é quem construiu a unidade, e o humano bloqueia apenas numa bifurcação genuína só do usuário via handoff. Esta lição é essa regra, tornada visível.
Vamos juntar tudo com uma história concreta, de ponta a ponta, do jeito que de fato acontece.
17h58. Você escreve a meta para o RHG: entregar um endpoint /health, deixar a suíte de testes verde, limpar as questões críticas de a11y e fechar a nova copy de preços. Você torna o done-when mensurável — comandos exatos e condições de aprovação exatas — aprova, e inicia a execução. Então você fecha o laptop e vai fazer o jantar. Você está agora AFK.
18h02–18h35. O loop roda. A passada 1 lê o baseline. A passada 2 corrige os testes falhando e prova com a suíte. A passada 3 adiciona /health mas o Proof Gate captura um 404 e se recusa a aprovar — o loop registra a falha honestamente e melhora o plano. A passada 4 obtém um 200 real do curl. Cada passada anexa ao LOOP-LOG.md. Você está jantando; ninguém está ao teclado. O status diz baixinho iterando.
18h36. A passada 5 chega ao último item — a copy de preços. Isso é uma decisão de produto, não algo que a prova consiga resolver. O loop faz a coisa honesta: para numa bifurcação, escreve um handoff pronto para decisão, e o status vira bloqueado · pronto para decisão. Seu celular mostra uma notificação. Este é o único momento em que a noite precisou de você.
18h37. Você dá uma olhada: duas opções de copy, com contexto. Você escolhe uma. Essa é sua contribuição inteira — uma decisão, dez segundos. Você larga o celular.
18h38–18h41. O loop aplica sua escolha, re-verifica todos os cinco itens do done-when em seus limites reais, atinge 5/5 e para. Passada 6: convergiu. Uma passada de QA AFK então escreve o review.md. Ninguém a rodou.
20h15. Você volta sem pressa, abre o LOOP-LOG.md e o review.md, e lê a noite inteira em dois minutos: seis passadas, uma falha de prova capturada, uma bifurcação que você respondeu, tudo provado. Você não rodou uma única passada. Você observou uma execução e tomou uma decisão. Isso é o loop em movimento.
Conte suas ações: escrever a meta (uma vez), responder uma bifurcação (dez segundos), ler o log (depois do fato). Três toques ao longo de duas horas e dezessete minutos de trabalho. Todo o resto — seis passadas, uma falha capturada, re-verificação completa, o relatório de QA — rodou sem você.
Três perguntas, de memória — sem espiar as seções acima. Escolha uma resposta em cada; você descobre na hora se está certa e por quê. Recordar vale mais que reler, então pense de verdade em cada uma primeiro.
1 · Durante uma execução AFK, qual é o papel do humano?
2 · Uma passada verifica, vê que a lacuna estreitou mas não fechou. O que acontece em seguida?
3 · Qual evento é a ÚNICA razão legítima para chamar um humano para dentro de uma execução?
LOOP-LOG.md real de uma das suas próprias execuções. A seguir: o front-end Forge, onde este exato loop AFK ganha um pipeline completo de 7 passos envolvendo-o.