Seu primeiro loop: objetivo pequeno com critério nível 3
Hora de juntar as peças num loop de verdade, pequeno de propósito: uma função de contar palavras, seis testes congelados com hash e uma condição de /goal nível 3 com teto de turnos. Pequeno o bastante para terminar em minutos; completo o bastante para ter as cinco peças. No fim, o mapa da formação e o seu plano com datas.
2Escrever a condição do /goal no nível 3, com teto
3Conferir por conta própria, sem acreditar no resumo
4O mapa dos seis cursos e o seu plano datado
Objetivo: rodar seu primeiro loop com /goal num projeto pequeno, com testes congelados, critério nível 3 e teto de turnos, e sair com o plano da formação.
01 · O que você montou neste curso
Quatro entregas que viram o seu primeiro loop. Clique num exercício para ver o "pronto quando".
Aula 801 · O que você montou neste cursoQuatro entregas que viram o seu primeiro loop. Clique num exercício para ver o "pronto quando".
Ao final do curso 0Um loop pequeno rodando com as cinco peças, critério nível 3 e teto, e o vocabulário dos outros cinco cursos.
24 exercícios
Clique num exercício para ver o que fazer e o "pronto quando".
1/5
Peças
O esqueleto: as cinco peças num laço de bash, com duas portas de saída e código de saída diferente para cada uma.
1/5
Peças
O esqueleto: as cinco peças num laço de bash, com duas portas de saída e código de saída diferente para cada uma.
2/5
Estado
A memória fora do modelo: lista com passes, progresso e um commit por item verificado.
3/5
Critério
A verificação que não se burla: comando, contagem mínima e arquivo congelado.
4/5
Tetos
A porta de segurança: cada teto pega um jeito de o loop não terminar, e o portão humano pega o que não pode ser feito sem você.
5/5
As quatro entregas juntas
Peças, estado, critério e tetos são o que você usa a seguir. O resto das aulas (harness, motores, LOOP-R) diz onde cada peça mora e qual curso aprofunda.
Os exercícios das aulas 2, 3 e 4 entram no plano abaixo.
02 · O projeto do primeiro loop
Uma pasta, um arquivo de testes congelado por hash e nenhuma linha da função. Quem escreve a função é o agente.
Terminal · criar a pasta e congelar os testes
mkdir -p ~/ensaio-loop/conta/tests && cd ~/ensaio-loop/conta && git init -q
# cole o arquivo de testes do próximo bloco em tests/test_conta.py, depois:
sha256sum tests/test_conta.py > tests.sha256
git add -A && git commit -qm "testes congelados"
python3 -m pytest -q -p no:cacheprovider tests/ | tail -1 # ainda falha: conta.py não existe
tests/test_conta.py
from conta import conta_palavras
def test_vazio():
assert conta_palavras("") == 0
def test_uma():
assert conta_palavras("loop") == 1
def test_espacos_repetidos():
assert conta_palavras(" o loop para ") == 3
def test_quebra_de_linha_e_tab():
assert conta_palavras("objetivo\nestado\tação") == 3
def test_pontuacao_nao_e_palavra():
assert conta_palavras("pronto , quando - passa") == 3
def test_acentos():
assert conta_palavras("verificação e parada") == 3
Claude Code · a condição do /goal (nível 3, com teto)
/goal python3 -m pytest -q -p no:cacheprovider tests/ imprime 6 passed, sha256sum -c tests.sha256 imprime OK e git diff --exit-code -- tests/ sai com código 0, com as três saídas impressas na conversa, ou pare depois de 8 turnos
loop-codex.sh · o mesmo loop com codex exec (exercício 3)
#!/usr/bin/env bash
# Laço seu: no máximo 3 ciclos de codex exec; quem decide parar são os três comandos.
set -u
cd ~/ensaio-loop/conta
passes() {
python3 -m pytest -q -p no:cacheprovider tests/ 2>&1 | tail -1 | grep -q '^6 passed' &&
sha256sum -c --quiet tests.sha256 &&
git diff --quiet -- tests/
}
for ciclo in 1 2 3; do
if passes; then echo "PRONTO no ciclo $((ciclo - 1))"; exit 0; fi
echo "ciclo $ciclo: codex exec"
timeout 15m codex exec --sandbox workspace-write \
"Crie conta.py com conta_palavras(texto) que faça os testes de tests/ passarem. Não altere nada em tests/."
done
if passes; then echo "PRONTO no ciclo 3"; exit 0; fi
echo "PARADO: teto de 3 ciclos"; exit 2
Exemplo do repositório
Com a mesma condição, em modo sem interface (claude -p "/goal …"), o agente escreveu conta.py e terminou imprimindo:
A função dele e a sua podem ser diferentes; o que tem de bater são as três saídas.
$ echo "def test_x(): pass" > tests/test_conta.py
$ sha256sum -c tests.sha256
tests/test_conta.py: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match
$ echo $?
1
Trocar o teste por um vazio faria o pytest passar, mas o hash e o git diff acusam. É a diferença entre o nível 2 e o nível 3.
Objetivo: a condição do /goal.
Estado: os arquivos e o commit dos testes.
Ação: o agente editando conta.py.
Verificação: pytest com contagem, hash e git diff, impressos na conversa.
Parada: o avaliador do /goal ou o teto de 8 turnos.
03 · Prática
Na sua máquina. O exercício 2 gasta pouco da sua cota.
E1 · O projeto pronto para o loop
10 min
Crie a pasta, o arquivo de testes, o hash e o primeiro commit. Rode o pytest antes de existir a função.
Pronto quando:sha256sum -c tests.sha256 → tests/test_conta.py: OK, git log --oneline | wc -l → 1, e o pytest ainda falha (a função não existe).
E2 · O primeiro loop rodando
15 min
Abra o Claude Code na pasta e cole a condição do /goal. Deixe rodar sem interferir; se o Claude pedir permissão para rodar o pytest, aprove.
Pronto quando: O status do goal mostra a condição atingida, e os três comandos de conferência, rodados por você, dão 6 passed, tests/test_conta.py: OK e rc=0.
E3 · O mesmo loop com o Codex
15 min
Apague conta.py e rode o mesmo pedido pelo codex exec com sandbox de escrita, com o loop-codex.sh do bloco acima: no máximo 3 ciclos, parando quando os três comandos passam.
Pronto quando: Seu laço termina antes do 3º ciclo, e os mesmos três comandos dão 6 passed, OK e rc=0; git diff --stat -- tests/ sai vazio.
04 · Gere o seu plano com datas
Escolha a data de início e quanto tempo você tem por semana. O plano lista os exercícios das oito aulas na ordem.
plano.md
05 · Teste da aula
Pergunta 1 de 4
Por que a condição do /goal pede "as três saídas impressas na conversa"?competência
Correto
É a pergunta 4 da escala: a prova aparece na saída? O avaliador não roda os comandos; quem roda é o agente, e a saída precisa estar lá para ser julgada.
Não é essa
É a pergunta 4 da escala: a prova aparece na saída? O avaliador não roda os comandos; quem roda é o agente, e a saída precisa estar lá para ser julgada.Rever: O projeto do primeiro loop
Pergunta 2 de 4
O que o hash em tests.sha256 acrescenta ao "6 passed"?
Correto
"6 passed" sozinho é nível 2: um agente pode trocar os testes por outros seis que passam. O hash e o git diff travam o arquivo. Juntos, nível 3.
Não é essa
"6 passed" sozinho é nível 2: um agente pode trocar os testes por outros seis que passam. O hash e o git diff travam o arquivo. Juntos, nível 3.Rever: O projeto do primeiro loop
Pergunta 3 de 4
O /goal terminou com a condição atingida. Qual o próximo passo?competência
Correto
Quem fecha é você: o avaliador julgou a conversa, você confere a máquina. É o que o kit execucao-longa pede no fechamento de toda execução.
Não é essa
Quem fecha é você: o avaliador julgou a conversa, você confere a máquina. É o que o kit execucao-longa pede no fechamento de toda execução.Rever: Prática
Pergunta 4 de 4
Depois deste curso, qual é o próximo da ordem sugerida da formação?
Correto
A ordem sugerida é 0 → 1 → 2 → 3 → 4 → 5. O curso 1 pega a peça que mais falta, a verificação, e a leva até o nível 4.
Não é essa
A ordem sugerida é 0 → 1 → 2 → 3 → 4 → 5. O curso 1 pega a peça que mais falta, a verificação, e a leva até o nível 4.Rever: O que você montou neste curso
Teste concluído
Você acertou {a} de {n}. Acertando todas, a aula é marcada como concluída.
Escolha uma alternativa. A explicação aparece depois da sua tentativa.
06 · Em três frases
Pequeno e completoO primeiro loop tem as cinco peças num problema que termina em minutos.
Congelar antes de soltarTestes com hash e commit antes de o agente começar: é o que torna o critério nível 3.
Você fechaO avaliador julga a conversa; você roda a conferência na máquina.