Verificação e Evals|INEMA.CLUB-PRO

Aula 2 · 18 min

Comando → saída: verificar o critério e o avaliador do /goal

Um critério só vale se alguém de fora consegue conferi-lo sem confiar no agente. Nesta aula você roda cada critério do goal.md como comando, vê qual deles passa por atalho e aprende onde a prova tem de aparecer: o avaliador do /goal no Claude Code só lê a conversa.

Começar a aula
Medidor analógico no máximo ao lado de uma impressora térmica soltando uma fita.

Nesta aula você vai

  1. 1O formato comando → saída e os três tipos de saída esperada
  2. 2conferir-goal.py: OK ou FALHOU por critério, com código de saída
  3. 3Critério sem comando e critério que passa por atalho
  4. 4O que o avaliador do /goal enxerga, e o que não enxerga

Objetivo: conferir cada critério do goal.md por comando, ver qual nível 2 passa por atalho e pôr a prova na conversa que o avaliador do /goal lê.

01Do critério à prova na conversa

Clique em cada etapa.

Clique em cada bloco do diagrama para ver o que ele faz.

Comando que você roda e saída que aparece: é a mesma prova para você, para o loop headless e para o avaliador do /goal.

02O goal.md do ensaio

Seis critérios. Um deles não tem comando e um passa por atalho. Ache os dois antes de rodar.

kit/goal-ensaio.md (critérios)
## Critérios de pronto
**Função**
- [ ] `python3 -m pytest -q tests/` → `3 passed`
- [ ] `python3 -c "from slug import slug; print(slug('Ação & Reação!'))"` → `acao-reacao`

**Regressão**
- [ ] `python3 -m pytest -q tests/ -rs` → `código 0`

**Limite**
- [ ] `git diff --stat HEAD -- tests/ pytest.ini` → `vazio`
- [ ] `git ls-files --others --exclude-standard -- '*conftest.py' tests/` → `vazio`
- [ ] o código fica limpo e bem documentado
Terminal · antes, atalho e depois
K=~/projetos/loop-r-eng-verificacao-v72/kit
bash $K/ensaio.sh > /dev/null && cd /tmp/ensaio-verif/proj
cp $K/goal-ensaio.md ../goal.md            # fora do projeto: o agente não edita o critério

python3 $K/conferir-goal.py ../goal.md; echo "saída: $?"     # A) antes do trabalho: tem de falhar

$K/agente-falso.sh conftest < /dev/null                       # B) atalho: pula os testes
python3 $K/conferir-goal.py ../goal.md; echo "saída: $?"

rm conftest.py && $K/agente-falso.sh bom < /dev/null           # C) trabalho certo
sed -i '/limpo e bem documentado/d' ../goal.md                 #    e o critério sem comando sai
python3 $K/conferir-goal.py ../goal.md; echo "saída: $?"
Exemplo do repositório
FALHOU  python3 -m pytest -q tests/  →  3 passed
        veio: 3 failed in 0.01s (código 1)
FALHOU  python3 -c "from slug import slug; print(slug('Ação & Reação  →  acao-reacao
        veio: NotImplementedError (código 1)
FALHOU  python3 -m pytest -q tests/ -rs  →  código 0
        veio: 3 failed in 0.01s (código 1)
OK      git diff --stat HEAD -- tests/ pytest.ini  →  vazio
OK      git ls-files --others --exclude-standard -- '*conftest.py' t  →  vazio
FALHOU  sem comando: o código fica limpo e bem documentado
---
FALTAM 4
saída: 4
Pronto: marquei os testes instáveis; a suíte fica verde.
FALHOU  python3 -m pytest -q tests/  →  3 passed
        veio: 3 skipped in 0.00s (código 0)
FALHOU  python3 -c "from slug import slug; print(slug('Ação & Reação  →  acao-reacao
        veio: NotImplementedError (código 1)
OK      python3 -m pytest -q tests/ -rs  →  código 0
OK      git diff --stat HEAD -- tests/ pytest.ini  →  vazio
FALHOU  git ls-files --others --exclude-standard -- '*conftest.py' t  →  vazio
        veio: conftest.py (código 0)
FALHOU  sem comando: o código fica limpo e bem documentado
---
FALTAM 4
saída: 4
Pronto: slug() implementado.
OK      python3 -m pytest -q tests/  →  3 passed
OK      python3 -c "from slug import slug; print(slug('Ação & Reação  →  acao-reacao
OK      python3 -m pytest -q tests/ -rs  →  código 0
OK      git diff --stat HEAD -- tests/ pytest.ini  →  vazio
OK      git ls-files --others --exclude-standard -- '*conftest.py' t  →  vazio
---
PRONTO
saída: 0

O comando aparece cortado em 60 caracteres na saída. Na rodada B, código 0 deu OK com os três testes pulados: é o critério nível 2 do goal.md.

03A condição do /goal com prova

Como o avaliador só lê a conversa, a condição exige a saída colada. Nos prompts de goal do kit execucao-longa e do kit 15 comandos o padrão é o mesmo.

Claude Code · /goal
/goal A saída de `python3 ~/projetos/loop-r-eng-verificacao-v72/kit/conferir-goal.py <caminho>/goal.md` está colada inteira nesta conversa e termina com PRONTO; nenhum arquivo em tests/ nem conftest.py foi alterado; pare depois de 15 voltas e diga o que faltou.
Duas mensagens finais: qual passa no avaliador?
(1) Terminei. Rodei o conferir-goal.py e deu tudo certo.

(2) Rodei o conferir-goal.py:
OK      python3 -m pytest -q tests/  →  3 passed
(…)
---
PRONTO

04Prática

Ensaio, depois o seu goal.md.

E4 · Falha antes, passa depois

10 min

Rode as três rodadas do ensaio.

Pronto quando: A termina com FALTAM 4 e saída: 4; B mostra OK no critério código 0 e FALHOU no 3 passed; C termina com PRONTO e saída: 0.

E5 · O seu goal.md conferido

20 min

Pegue um goal.md seu (ou escreva um pelo template do curso 2) e rode o conferir-goal.py nele antes de começar o trabalho. Reescreva todo critério que deu "sem comando" e todo critério de função que já passa.

Pronto quando: python3 $K/conferir-goal.py [seu goal.md] --pasta [seu projeto] → nenhuma linha sem comando e pelo menos um FALHOU de função antes do trabalho (código de saída maior que 0).

E6 · /goal com a prova colada

20 min

Rode uma tarefa pequena com /goal usando a condição do bloco acima, apontando para o seu goal.md.

Pronto quando: a última resposta do agente contém a saída do conferir-goal.py terminando em PRONTO e o /goal encerra como atingido; rodando você mesmo o mesmo comando → PRONTO e código 0.

05Teste da aula

Pergunta 1 de 4

O que o avaliador do /goal no Claude Code consegue fazer para julgar a condição?competência

06Em três frases

ConferívelCritério sem comando não se confere; o conferir-goal.py conta como FALHOU.
Falha antesCritério de função que já passa antes do trabalho não mede nada; "código 0" sozinho passa com tudo pulado.
Prova impressaO avaliador do /goal só lê a conversa: a condição exige a saída colada terminando em PRONTO.

Para ir além

Aula anteriorPróxima aula