Verificación y Evals|INEMA.CLUB-PRO

Lección 8 · 22 min

Armar la compuerta de tu loop

Cada clase aportó una pieza: evaluador, criterios, guardia, atajos, evals, juez. La compuerta las pone en cola, de las baratas a las caras: lo que el código reprueba no llega a gastar cuota con modelo. En esta clase montas la compuerta, la conectas al loop headless del curso 2 y sales con el plan con fechas para hacer el tuyo.

Comenzar la clase
Pasillo técnico oscuro con tres puertas de acero, cada una con una lámpara de señal.

En esta clase vas a

  1. 1Las cinco capas y el orden: lo barato primero, el modelo al final
  2. 2portao.env fuera del repo: el agente no edita el juez
  3. 3La compuerta como test final del loop-longrun.sh
  4. 4El mapa del curso y tu plan con fechas

Objetivo: montar la compuerta en capas (criterios, guardia, atajos, evals, evaluador) y conectarla a tu loop, con el plan con fechas.

01Cinco capas, una salida

Haz clic en cada capa. Todas corren; el evaluador por modelo solo si las baratas pasan.

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

Una capa sin configuración aparece como omitida, nunca como aprobada en silencio.

02Mira la compuerta correr

Cada capa es una etapa. En la primera ejecución la guardia reprueba: corrige y corre de nuevo.

capas por correr

capa en curso

aprobada

reprobada

Simulación ilustrativa en el navegador. La compuerta de verdad, con agentes falsos, está justo debajo.

03Ensayo: la compuerta contra el chumba y el bom

El portao.env queda fuera del proyecto. AVALIADOR_CMD apunta al evaluador falso: cero llamadas.

Terminal · compuerta
K=~/projetos/loop-r-eng-verificacao-v72/kit
cat > /tmp/ensaio-verif-portao.env <<EOF
GOAL=/tmp/ensaio-verif/goal.md
GUARDA_DIR=/tmp/ensaio-verif/guarda
ESCONDIDOS=/tmp/ensaio-verif/escondidos
AVALIADOR_CMD=$K/avaliador-falso.sh
EOF
for modo in chumba bom; do
  bash $K/ensaio.sh > /dev/null && cd /tmp/ensaio-verif/proj
  cp $K/goal-ensaio.md ../goal.md && sed -i '/limpo e bem documentado/d' ../goal.md
  GUARDA_DIR=/tmp/ensaio-verif/guarda python3 $K/guarda-testes.py congelar . > /dev/null
  $K/agente-falso.sh $modo < /dev/null > /dev/null
  echo "## $modo"; $K/portao.sh . /tmp/ensaio-verif-portao.env; echo "saída: $?"
done
Ejemplo del repositorio
## chumba
criterios  REPROVADO  → /tmp/portao/criterios.log
guarda     OK
atalhos    REPROVADO  → /tmp/portao/atalhos.log
evals      pulada (sem configuração)
avaliador  pulada (camada barata já reprovou: não gaste cota)
PORTÃO: REPROVADO em criterios atalhos
saída: 1
## bom
criterios  OK
guarda     OK
atalhos    OK
evals      pulada (sem configuração)
avaliador  OK
PORTÃO: APROVADO
saída: 0

En el chumba la guardia pasa (el juez está intacto); quien reprueba es el criterio de función con entrada nueva (acao-reacao) y los tests ocultos.

04La compuerta como test final del loop headless

En el loop-longrun.sh del curso 2, TESTE_FINAL decide el "terminado". Pon la compuerta ahí. Ejecútalo después del bloque anterior (usa el mismo portao.env).

Terminal · loop con compuerta (agentes falsos)
K=~/projetos/loop-r-eng-verificacao-v72/kit; L=~/projetos/execucao-longa/tools
bash $K/ensaio.sh > /dev/null && cd /tmp/ensaio-verif/proj
cp $K/goal-ensaio.md ../goal.md && sed -i '/limpo e bem documentado/d' ../goal.md
GUARDA_DIR=/tmp/ensaio-verif/guarda python3 $K/guarda-testes.py congelar . > /dev/null
for m in chumba bom; do printf '#!/usr/bin/env bash\nexec %s/agente-falso.sh %s\n' $K $m > /tmp/agente-$m.sh; chmod +x /tmp/agente-$m.sh; done
$L/novo-longrun.sh $PWD slug > /dev/null && D=$(ls -d $PWD/longrun/*)
echo "Implementa slug() en slug.py. No toques tests/." > $D/prompt.md
cat > $D/loop.env <<ENV
TESTE_RAPIDO="python3 -m pytest -q"
TESTE_FINAL="$K/portao.sh . /tmp/ensaio-verif-portao.env"
PROTEGIDOS="tests/ pytest.ini *conftest.py"
PERMITIDOS="slug.py"
MAX_CICLOS=2
MIN_CICLO=2
MEM=1G
ESTAGNACAO=3
ENV
git add -A && git commit -qm "longrun: pasta"
CODEX_BIN=/tmp/agente-chumba.sh $L/loop-longrun.sh $D; echo "saída: $?"
CODEX_BIN=/tmp/agente-bom.sh $L/loop-longrun.sh $D; echo "saída: $?"
Ejemplo del repositorio
2026-10-19 06:19:56 início: rápido=0 passed · agente=codex · teto 2x2min · mem 1G
2026-10-19 06:19:56 ciclo 1: começa
2026-10-19 06:19:56 ciclo 1: agente saiu rc=0 em 0s
2026-10-19 06:19:56 ciclo 1: rápido=3 passed (melhor antes: 0)
2026-10-19 06:19:56 ciclo 1: checkpoint commitado
(… ciclo 2 igual, rápido=3 passed …)
2026-10-19 06:19:58 PARADO: teto de 2 ciclos atingido sem passar o teste final
saída: 1
2026-10-19 06:19:59 início: rápido=3 passed · agente=codex · teto 2x2min · mem 1G
2026-10-19 06:19:59 ciclo 1: começa
2026-10-19 06:19:59 ciclo 1: agente saiu rc=0 em 0s
2026-10-19 06:19:59 ciclo 1: rápido=3 passed (melhor antes: 3)
2026-10-19 06:19:59 ciclo 1: checkpoint commitado
2026-10-19 06:20:00 CONCLUÍDO no ciclo 1: teste final passou ()
saída: 0

El chumba hizo que el test rápido pasara de 0 a 3 passed: por el test visible, parecía progreso. La compuerta sostuvo el "terminado". Los paréntesis vacíos solo dicen que la compuerta no imprime "N passed".

05Práctica final

La compuerta en el ensayo y en tu loop.

E21 · Compuerta contra chumba y bom

10 min

Ejecuta el bloque de la compuerta y después el del loop con compuerta.

Listo cuando: la compuerta imprime PORTÃO: REPROVADO em criterios atalhos (saída: 1) para el chumba y PORTÃO: APROVADO (saída: 0) para el bom; el loop termina primero con PARADO: teto de 2 ciclos y después con CONCLUÍDO no ciclo 1.

E22 · La compuerta de tu loop

60 min

En tu proyecto: goal.md conferido (clase 2), guardia congelada en el commit de base (clase 3), 3 tests ocultos (clase 4) y, si la tarea toca el comportamiento de un agente, el conjunto de oro (clase 5). Escribe el portao.env fuera del repo (con el conjunto de oro: EVAL_AGENTE, EVAL_BASE, EVAL_CASOS y EVAL_PROMPT apuntando a tus archivos de la clase 5) y corre la compuerta antes y después del trabajo.

Listo cuando: antes del trabajo, $K/portao.sh . [tu portao.env]; echo $? → PORTÃO: REPROVADO y 1; después, → PORTÃO: APROVADO y 0, con como máximo una capa pulada.

06El mapa del curso

Cuatro entregas, en orden. Haz clic en un ejercicio para ver el "listo cuando".

Día 1Quien verifica

clases 1 y 2

3 ejercicios

Evaluador separado y goal.md verificado por comando.

Ver la clase
Día 2Juez protegido

clases 3 y 4

3 ejercicios

Guardia congelada y tests ocultos fuera del repo.

Ver la clase
Días 3 y 4Medir

clases 5 y 6

3 ejercicios

Conjunto de oro con base y juez calibrado.

Ver la clase
Día 5Compuerta

clases 7 y 8

2 ejercicios

pass^3 anotado y compuerta aprobando tu loop.

Ver la clase
Al final del cursoUna compuerta en capas, fuera del alcance del agente, que reprueba el atajo y aprueba el trabajo, conectada a tu loop.
22 ejercicios
Haz clic en un ejercicio para ver qué hacer y el "listo cuando".
  1. 1/5

    Quien verifica

    Kit clonado, evaluador falso y real ejecutados, criterios que fallan antes del trabajo.

  2. 2/5

    Juez protegido

    Requiere el día 1. El hueco del conftest visto y cerrado; la regla "los tests son el juez" en el proyecto.

  3. 3/5

    Medir

    Requiere el día 2. Veinte casos reales, etiquetas tuyas en 10 artefactos y el juez solo después de calibrado.

  4. 4/5

    Compuerta

    Requiere todo lo anterior. Medir con k = 3, juntar las capas y poner la compuerta como test final.

  5. 5/5

    El curso completo

    Quién verifica, juez protegido, medir y la compuerta. Pasa a la siguiente entrega solo cuando el "listo cuando" de la anterior sea verdad.

Orden obligatorio: una compuerta sin juez protegido es solo otra forma de aprobar el atajo.

07Genera tu plan con fechas

Elige el inicio y cuánto tiempo tienes por semana. El plan lista los 22 ejercicios en orden.

08Test final

Pregunta 1 de 5

¿Por qué el evaluador por modelo es la última capa?competencia

09El curso en tres frases

Quien lo hizo no lo revisaEvaluador separado, criterio por comando y prueba impresa: el relato del agente no decide nada.
El juez queda fuera de su alcanceTests congelados con todo lo que lee pytest, ocultos y portao.env fuera del repo; un test sospechoso se convierte en reporte, nunca en ajuste.
Medir con honestidadConjunto de oro con regresión, juez calibrado y pass^k con varianza; y la compuerta en capas como test final del loop.

Sigue por aquí

Lección anteriorVolver al inicio del curso