Base: anatomia do loop|INEMA.CLUB-PRO

Aula 6 · 16 min

Critério de pronto na escala 0–4

Um loop termina quando o critério de pronto diz que terminou. Se o critério é vago, o loop não termina ou termina cedo; se dá para cumprir por atalho, o agente acha o atalho: apaga o teste que falhava, gera página vazia. A escala de 0 a 4 do kit execucao-longa dá nome a cada degrau e mostra o mínimo aceito: nível 3, comando com trava.

Começar a aula
Relógio comparador encostado numa peça usinada, ao lado de cinco degraus de metal de alturas crescentes.

Nesta aula você vai

  1. 1Os cinco degraus, do vago ao independente
  2. 2As 5 perguntas que derrubam um nível
  3. 3Travas que fecham o atalho: contagem, arquivo congelado, validador
  4. 4Função, regressão e limite num critério só

Objetivo: classificar critérios de pronto de 0 a 4 com as 5 perguntas e reescrever um critério vago até o nível 3, com comando e trava.

01A escada do critério de pronto

Clique em cada degrau: como ele soa, como o agente o burla e o que fazer.

Role a página: cada etapa abaixo acende a sua parte do diagrama.

  1. 1/6

    0 · vago

    Não tem fim que se confira. O loop para quando a cota acaba ou quando o agente acha que já está bom. Exemplo: "melhorar a performance".

  2. 2/6

    1 · subjetivo

    Parece um critério, mas quem decide é a opinião do agente: ele se autoaprova. Exemplo: "código revisado e sem problemas".

  3. 3/6

    2 · burlável

    Já tem comando, mas dá para cumprir sem fazer o trabalho: apagar o teste que falha dá "0 falhas"; vinte páginas vazias dão "20 páginas". É o degrau mais perigoso porque parece pronto.

  4. 4/6

    3 · protegido

    Comando mais uma trava que fecha o atalho: contagem mínima ("≥ 48 testes"), arquivo congelado ou hash conferido, validador do conteúdo. Exemplo do kit: "0 falhas e ≥ 48 testes e tests/ intocado", não só "0 falhas".

  5. 5/6

    4 · independente

    Nível 3 mais alguém ou algo de fora conferindo: teste ponta a ponta real, avaliador separado, amostra conferida por uma pessoa. Use quando o erro custa caro. Como montar o avaliador separado é o curso 1.

  6. 6/6

    Suba até o 3, sempre

    Vago e subjetivo se reescrevem; burlável ganha uma trava; protegido é o mínimo para deixar um agente sozinho; independente é para quando errar custa caro.

Escala do template goal.md do kit execucao-longa. Mínimo aceito: nível 3.

02A escala e as 5 perguntas, como estão no template

Trecho de execucao-longa/templates/goal.md. Cole no seu goal.md ou nas regras do agente.

templates/goal.md · escala e perguntas
ESCALA (apagar ao preencher)
  0 vago ......... "deixar bom", "melhorar"                    → reescrever
  1 subjetivo .... "revisado e limpo" (o agente se autoaprova)  → reescrever
  2 burlável ..... "0 falhas", "20 páginas" (apaga teste, página vazia) → pôr trava
  3 protegido .... comando + trava (contagem mínima, arquivo congelado/hash, validador do conteúdo) → mínimo aceito
  4 independente . nível 3 + checagem externa (e2e real, avaliador separado, amostra humana) → quando o erro custa caro

5 PERGUNTAS — cada "não" derruba o nível
  1. Dá para checar com um comando?
  2. A resposta é sim/não (sem "melhorou")?
  3. É impossível cumprir sem fazer o trabalho?
  4. A prova aparece na saída? (o avaliador do /goal no Claude só lê a conversa)
  5. Função + regressão + limite estão cobertos?

SINAIS DE CRITÉRIO RUIM: "bom/limpo/adequado/completo"; depende do agente dizer que terminou;
só contagem sem checar conteúdo; não diz o que NÃO pode mudar; verificação leva horas.
Critério nível 3 · as três camadas
**Função** — faz o que devia
- [ ] python3 -m pytest -q tests/ | tail -1 → 6 passed (e nunca menos de 6)

**Regressão** — não quebrou o que já funcionava
- [ ] python3 -m pytest -q | tail -1 → sem "failed"

**Limite** — não mexeu onde não devia
- [ ] git diff --exit-code -- tests/; echo $? → 0
- [ ] sha256sum -c tests.sha256 → tests/test_conta.py: OK

03Do 0 ao 3, um degrau por vez

O mesmo pedido reescrito até ficar à prova de atalho.

1. 0 → 1

"Melhorar a função de contar palavras" vira "a função conta palavras corretamente".

Ainda é opinião: quem diz "corretamente"?

04Prática

Na sua máquina. O exercício 2 usa um projeto seu com testes.

E1 · Classificar e reescrever

15 min

Escreva em criterios.md três critérios que você já usou (ou viu) para dizer que uma tarefa acabou. Ao lado de cada um, o nível de 0 a 4 e, numa linha que começa com nível 3, a versão reescrita. Escreva a marca nível 3 exatamente assim, em português: é ela que o grep conta.

Pronto quando: grep -c 'nível 3' criterios.md → 3, e grep -ciE '\b(bom|limpo|adequado|completo)\b' criterios.md só acha palavras nas linhas dos critérios originais, nunca nas reescritas.

E2 · Um critério nível 3 que roda

15 min

Num projeto seu com testes, rode o critério completo: a suíte com contagem mínima e a trava de que os testes não mudaram.

Pronto quando: python3 -m pytest -q | tail -1 (ou o comando de teste do seu projeto) mostra o número de testes, sem failed, e git diff --exit-code -- tests/; echo $? → 0.

E3 · Provar que a trava pega

10 min

Na mesma pasta, simule o atalho: troque o conteúdo de um teste por um teste vazio, rode as travas e depois desfaça com git checkout.

Pronto quando: Com o teste trocado, git diff --exit-code -- tests/; echo $? → 1; depois de git checkout -- tests/, o mesmo comando → 0.

05Teste da aula

Pergunta 1 de 4

"python3 -m pytest -q imprime 0 failed". Qual o nível?competência

06Em três frases

Cinco degrausVago, subjetivo, burlável, protegido, independente. Mínimo para deixar o agente sozinho: 3.
Trava fecha o atalhoContagem mínima, arquivo congelado ou hash, validador do conteúdo: o que impede cumprir sem fazer.
Três camadasFunção, regressão e limite, com a prova impressa na saída.

Para ir além

Aula anteriorPróxima aula