Verificación y Evals|INEMA.CLUB-PRO

Lección 2 · 18 min

Comando → salida: verificar el criterio y el evaluador del /goal

Un criterio solo vale si alguien de afuera puede comprobarlo sin confiar en el agente. En esta clase ejecutas cada criterio del goal.md como comando, ves cuál de ellos pasa por atajo y aprendes dónde debe aparecer la prueba: el evaluador del /goal en Claude Code solo lee la conversación.

Comenzar la clase
Medidor analógico al máximo junto a una impresora térmica soltando una cinta.

En esta clase vas a

  1. 1El formato comando → salida y los tres tipos de salida esperada
  2. 2conferir-goal.py: OK o FALHOU por criterio, con código de salida
  3. 3Criterio sin comando y criterio que pasa por atajo
  4. 4Qué ve el evaluador del /goal y qué no ve

Objetivo: comprobar cada criterio del goal.md por comando, ver qué nivel 2 pasa por atajo y poner la prueba en la conversación que lee el evaluador del /goal.

01Del criterio a la prueba en la conversación

Haz clic en cada etapa.

Haz clic en cada bloque del diagrama para ver qué hace.

Un comando que tú ejecutas y una salida que aparece: es la misma prueba para ti, para el loop headless y para el evaluador del /goal.

02El goal.md del ensayo

Seis criterios. Uno no tiene comando y otro pasa por un atajo. Encuentra los dos antes de ejecutar.

kit/goal-ensaio.md (criterios; traducción para leer; el archivo del kit está en portugués)
## Criterios de terminado
**Función**
- [ ] `python3 -m pytest -q tests/` → `3 passed`
- [ ] `python3 -c "from slug import slug; print(slug('Ação & Reação!'))"` → `acao-reacao`

**Regresión**
- [ ] `python3 -m pytest -q tests/ -rs` → `código 0`

**Límite**
- [ ] `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, atajo y después
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            # fuera del proyecto: el agente no edita el criterio

python3 $K/conferir-goal.py ../goal.md; echo "saída: $?"     # A) antes del trabajo: tiene que fallar

$K/agente-falso.sh conftest < /dev/null                       # B) atajo: salta los tests
python3 $K/conferir-goal.py ../goal.md; echo "saída: $?"

rm conftest.py && $K/agente-falso.sh bom < /dev/null           # C) trabajo correcto
sed -i '/limpo e bem documentado/d' ../goal.md                 #    y el criterio sin comando sale
python3 $K/conferir-goal.py ../goal.md; echo "saída: $?"
Ejemplo del repositorio
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

El comando aparece cortado a 60 caracteres en la salida. En la ronda B, código 0 dio OK con los tres tests saltados: es el criterio de nivel 2 del goal.md.

03La condición del /goal con prueba

Como el evaluador solo lee la conversación, la condición exige la salida pegada. En los prompts de goal del kit execucao-longa y del kit 15 comandos el patrón es el mismo.

Claude Code · /goal
/goal La salida de `python3 ~/projetos/loop-r-eng-verificacao-v72/kit/conferir-goal.py <caminho>/goal.md` está pegada completa en esta conversación y termina con PRONTO; ningún archivo en tests/ ni conftest.py fue modificado; detente después de 15 vueltas y di qué faltó.
Dos mensajes finales: ¿cuál pasa el evaluador?
(1) Terminé. Ejecuté el conferir-goal.py y todo salió bien.

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

04Práctica

Ensayo, después tu goal.md.

E4 · Falla antes, pasa después

10 min

Ejecuta las tres rondas del ensayo.

Listo cuando: A termina con FALTAM 4 y saída: 4; B muestra OK en el criterio código 0 y FALHOU en 3 passed; C termina con PRONTO y saída: 0.

E5 · Tu goal.md verificado

20 min

Toma un goal.md tuyo (o escribe uno con la plantilla del curso 2) y ejecuta el conferir-goal.py sobre él antes de empezar el trabajo. Reescribe todo criterio que dio "sem comando" y todo criterio de función que ya pasa.

Listo cuando: python3 $K/conferir-goal.py [tu goal.md] --pasta [tu proyecto] → ninguna línea sem comando y al menos un FALHOU de función antes del trabajo (código de salida mayor que 0).

E6 · /goal con la prueba pegada

20 min

Ejecuta una tarea pequeña con /goal usando la condición del bloque de arriba, apuntando a tu goal.md.

Listo cuando: la última respuesta del agente contiene la salida del conferir-goal.py terminando en PRONTO y el /goal termina como alcanzado; si ejecutas tú mismo el mismo comando → PRONTO y código 0.

05Test de la clase

Pregunta 1 de 4

¿Qué puede hacer el evaluador del /goal en Claude Code para juzgar la condición?competencia

06En tres frases

VerificableUn criterio sin comando no se verifica; conferir-goal.py lo cuenta como FALHOU.
Falla antesUn criterio de función que ya pasa antes del trabajo no mide nada; "código 0" solo pasa incluso con todo omitido.
Prueba impresaEl evaluador del /goal solo lee la conversación: la condición exige la salida pegada terminando en PRONTO.

Para ir más allá

Lección anteriorSiguiente lección