Base: anatomía del loop|INEMA.CLUB-PRO

Clase 6 · 16 min

Criterio de terminado en la escala 0–4

Un loop termina cuando el criterio de terminado dice que terminó. Si el criterio es vago, el loop no termina o termina antes de tiempo; si se puede cumplir por atajo, el agente encuentra el atajo: borra la prueba que fallaba, genera una página vacía. La escala de 0 a 4 del kit execucao-longa le pone nombre a cada nivel y muestra el mínimo aceptado: nivel 3, comando con traba.

Empezar la lección
Reloj comparador apoyado en una pieza maquinada, junto a cinco escalones de metal de alturas crecientes.

En esta lección vas a

  1. 1Los cinco niveles, de lo vago a lo independiente
  2. 2Las 5 preguntas que derriban un nivel
  3. 3Trabas que cierran el atajo: conteo, archivo congelado, validador
  4. 4Función, regresión y límite en un solo criterio

Objetivo: clasificar criterios de terminado de 0 a 4 con las 5 preguntas y reescribir un criterio vago hasta el nivel 3, con comando y traba.

01La escalera del criterio de terminado

Haz clic en cada nivel: cómo suena, cómo el agente lo burla y qué hacer.

Desplázate por la página: cada etapa de abajo ilumina su parte del diagrama.

  1. 1/6

    0 · vago

    No tiene un final que se pueda comprobar. El loop se detiene cuando se acaba la cuota o cuando el agente cree que ya está bien. Ejemplo: "mejorar el rendimiento".

  2. 2/6

    1 · subjetivo

    Parece un criterio, pero quien decide es la opinión del agente: se autoaprueba. Ejemplo: "código revisado y sin problemas".

  3. 3/6

    2 · burlable

    Ya tiene comando, pero se puede cumplir sin hacer el trabajo: borrar la prueba que falla da "0 falhas"; veinte páginas vacías dan "20 páginas". Es el nivel más peligroso porque parece terminado.

  4. 4/6

    3 · protegido

    Comando más una traba que cierra el atajo: conteo mínimo ("≥ 48 testes"), archivo congelado o hash verificado, validador del contenido. Ejemplo del kit: "0 falhas e ≥ 48 testes e tests/ intocado", no solo "0 falhas".

  5. 5/6

    4 · independiente

    Nivel 3 más alguien o algo de afuera verificando: prueba de punta a punta real, evaluador separado, muestra revisada por una persona. Úsalo cuando el error sale caro. Cómo montar el evaluador separado es el curso 1.

  6. 6/6

    Sube hasta el 3, siempre

    Lo vago y lo subjetivo se reescriben; lo burlable gana una traba; lo protegido es el mínimo para dejar a un agente solo; lo independiente es para cuando equivocarse sale caro.

Escala de la plantilla goal.md del kit execucao-longa. Mínimo aceptado: nivel 3.

02La escala y las 5 preguntas, tal como están en la plantilla

Fragmento de execucao-longa/templates/goal.md. Pégalo en tu goal.md o en las reglas del agente.

templates/goal.md · escala e perguntas
ESCALA (borrar al completar)
  0 vago ......... "dejarlo bien", "mejorar"                  → reescribir
  1 subjetivo .... "revisado y limpio" (el agente se autoaprueba)  → reescribir
  2 burlable ..... "0 fallos", "20 páginas" (borra el test, página vacía) → poner traba
  3 protegido .... comando + traba (conteo mínimo, archivo congelado/hash, validador del contenido) → mínimo aceptado
  4 independiente . nivel 3 + chequeo externo (e2e real, evaluador separado, muestra humana) → cuando el error cuesta caro

5 PREGUNTAS — cada "no" baja el nivel
  1. ¿Se puede chequear con un comando?
  2. ¿La respuesta es sí/no (sin "mejoró")?
  3. ¿Es imposible cumplirlo sin hacer el trabajo?
  4. ¿La prueba aparece en la salida? (el evaluador del /goal en Claude solo lee la conversación)
  5. ¿Están cubiertos función + regresión + límite?

SEÑALES DE UN CRITERIO MALO: "bueno/limpio/adecuado/completo"; depende de que el agente diga que terminó;
solo conteo sin chequear el contenido; no dice qué NO puede cambiar; la verificación tarda horas.
Criterio nivel 3 · las tres capas
**Función** — hace lo que debía
- [ ] python3 -m pytest -q tests/ | tail -1 → 6 passed (e nunca menos de 6)

**Regresión** — no rompió lo que ya funcionaba
- [ ] python3 -m pytest -q | tail -1 → sem "failed"

**Límite** — no tocó donde no debía
- [ ] git diff --exit-code -- tests/; echo $? → 0
- [ ] sha256sum -c tests.sha256 → tests/test_conta.py: OK

03Del 0 al 3, un nivel a la vez

El mismo pedido reescrito hasta quedar a prueba de atajos.

1. 0 → 1

"Mejorar la función que cuenta palabras" se vuelve "la función cuenta las palabras correctamente".

Todavía es opinión: ¿quién dice "correctamente"?

04Práctica

En tu máquina. El ejercicio 2 usa un proyecto tuyo con tests.

E1 · Clasificar y reescribir

15 min

Escribe en criterios.md tres criterios que ya usaste (o viste) para decir que una tarea terminó. Al lado de cada uno, el nivel de 0 a 4 y, en una línea que empieza con nível 3, la versión reescrita. Escribe la marca nível 3 exactamente así, en portugués: es la que cuenta el grep.

Listo cuando: grep -c 'nível 3' criterios.md → 3, y grep -ciE '\b(bueno|buena|limpio|adecuado|completo)\b' criterios.md solo encuentra palabras en las líneas de los criterios originales, nunca en las reescritas.

E2 · Un criterio nivel 3 que corre

15 min

En un proyecto tuyo con tests, corre el criterio completo: la suite con cantidad mínima y la traba de que los tests no cambiaron.

Listo cuando: python3 -m pytest -q | tail -1 (o el comando de test de tu proyecto) muestra el número de tests, sin failed, y git diff --exit-code -- tests/; echo $? → 0.

E3 · Probar que la traba funciona

10 min

En la misma carpeta, simula el atajo: cambia el contenido de un test por un test vacío, corre las trabas y luego deshaz con git checkout.

Listo cuando: Con el test cambiado, git diff --exit-code -- tests/; echo $? → 1; después de git checkout -- tests/, el mismo comando → 0.

05Prueba de la lección

Pregunta 1 de 4

"python3 -m pytest -q imprime 0 failed". ¿Cuál es el nivel?competencia

06En tres frases

Cinco nivelesVago, subjetivo, burlable, protegido, independiente. Mínimo para dejar al agente solo: 3.
La traba cierra el atajoConteo mínimo, archivo congelado o hash, validador del contenido: lo que impide cumplir sin hacer.
Tres capasFunción, regresión y límite, con la prueba impresa en la salida.

Para ir más allá

Clase anteriorPróxima clase