El loop que aprende|INEMA.CLUB-PRO

Clase 5 · 18 min

Promoción al AGENTS.md y regla vinculante

Una regla aprobada que vive solo en una base de datos no llega a la sesión nueva: solo existe si alguien se acuerda de consultarla. En esta clase haces la pregunta de promoción, registras el peldaño de protección y la fuga conocida, grabas el bloque en el AGENTS.md con diff antes, y ves cómo el check avisa cuando alguien edita el bloque a mano.

Empezar la clase
Placa de reglas en metal cepillado atornillada a la pared de una sala técnica, junto a un tablero eléctrico con una lámpara amarilla encendida.

En esta clase vas a

  1. 1La pregunta de promoción, hecha a la persona
  2. 2Los seis peldaños: prosa, checklist, test, sonda, hook, servidor
  3. 3promote muestra el diff; --write graba el bloque
  4. 4check avisa si el bloque falta, está desactualizado o fue editado

Objetivo: marcar la regla como vinculante con peldaño y fuga, grabar el bloque en el AGENTS.md con promote --write y detectar el bloque editado con check.

01De la regla activa al archivo que lee toda sesión

enforce, promote y check (SIL Loop R 1.1.0). Haz clic en cada bloque.

Subir un peldaño es el remedio para la regla que se escurre: la lección de puerto ocupado escrita tres veces pide un hook, no una cuarta línea de texto.

La brecha que cerró la v1.1.0: en la v1.0.0, ninguna regla llegaba al AGENTS.md (sil-melhoramento/ANALISE.md, hallazgo nº 1).

02Los seis peldaños de protección

Valores aceptados en --rung, del más débil al más fuerte. El SIL registra el nivel; quien construye el hook o la prueba eres tú.

1. prose · checklist

La regla la lee el agente (AGENTS.md, CLAUDE.md) o se verifica en una lista. Se fuga cuando la sesión no lee el archivo o lo lee y lo olvida.

Sirve para una regla poco frecuente o de criterio.

03Ensayo: del enforce al bloque en AGENTS.md

Continúa el ensayo de la clase 4 (R0001 activa). Al final, lo que un hook de inicio de sesión inyectaría.

Terminal · ensayo sin costo
SIL=~/projetos/sil-loop-r/sil.py
E=${TMPDIR:-/tmp}/ensaio-aprende/a4; cd $E/p   # continúa el ensayo de la clase 4 (R0001 activa)
s() { python3 $SIL --project $E/p "$@"; }
j() { python3 -c 'import json,sys; d=json.load(sys.stdin); print(*[k+"="+json.dumps(d.get(k),ensure_ascii=False) for k in sys.argv[1:]])' "$@"; }
echo "# Instruções do projeto" > AGENTS.md
s enforce R0001 --binding yes --rung prose --leak "sessão que não lê o AGENTS.md" \
  --approved-by "Seu Nome" --reason "porta ocupada derruba o servidor de outra sessão" | j binding rung
s status | j promotion prose_binding; s check > /dev/null; echo "check: $?"
s promote | j written changed
s promote --write | j written; cat AGENTS.md
s check > /dev/null; echo "check: $?"
echo "## alguém editou o bloco à mão"; sed -i.bak 's/checar a porta/CHECAR A PORTA/' AGENTS.md
s check | j promotion; s check > /dev/null; echo "check: $?"
s promote --write | j written; s check > /dev/null; echo "check: $?"
echo "## o que um hook SessionStart injetaria"; s context --brief
Ejemplo del repositorio
binding=true rung="prose"
promotion={"file": "AGENTS.md", "in_sync": false, "problem": "bloco ausente; execute promote --write"} prose_binding=["R0001"]
check: 1
written=false changed=true
written=true
# Instruções do projeto

<!-- sil-loop-r:begin — gerado por sil.py promote; não editar à mão -->
## Regras vinculantes (SIL Loop R)

- checar a porta antes de subir servidor (R0001; escopo: testes HTTP; proteção: prose; vazamento: sessão que não lê o AGENTS.md)

<!-- sil-loop-r:end -->
check: 0
## alguém editou o bloco à mão
promotion={"file": "AGENTS.md", "in_sync": false, "problem": "bloco desatualizado; execute promote --write"}
check: 1
written=true
check: 0
## o que um hook SessionStart injetaria
SIL Loop R — regras deste projeto (dados revisáveis; instruções do usuário prevalecem):
- R0001 [ativa] checar a porta antes de subir servidor (escopo: testes HTTP)
- R0002 [experimental] conferir git remote -v antes do push (escopo: publicação)

Antes del --write, el check ya avisa: regla vinculante sin bloque. Después de la edición a mano, avisa de nuevo, hasta que el promote lo regraba. El bloque sale en portugués porque sil.py imprime en portugués.

04Opcional: la regla en cada sesión de Claude Code

Para quien no usa AGENTS.md, o quiere también las reglas experimentales: un hook SessionStart que imprime context --brief (la SIL 1.1.0 creó el --brief para esto). Une el bloque hooks al .claude/settings.json del proyecto, sin reemplazar el archivo entero; la última parte del ensayo de arriba muestra el texto que entraría. Los hooks de guarda, con bloqueo, son el curso 4.

Archivo · kit/hooks/settings-sessionstart.json
{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "python3 ~/projetos/sil-loop-r/sil.py --project \"$CLAUDE_PROJECT_DIR\" context --brief"
          }
        ]
      }
    ]
  }
}

05Práctica

Ensayo, y después una regla tuya.

E13 · Bloque grabado y verificado

10 min

Ejecuta el ensayo después de los bloques de la clase 4.

Listo cuando: grep -c "sil-loop-r:begin" $E/p/AGENTS.md → 1; las líneas de check, en orden: 1, 0, 1, 0.

E14 · Una regla tuya vinculante

20 min

De las reglas que adoptaste en la clase 4, haz la pregunta de promoción a quien decide (tú mismo, si es tu proyecto). Para la que sea vinculante, registra nivel y fuga con honestidad, mira el diff y graba.

Listo cuando: python3 $SIL --project . status | python3 -c 'import json,sys; print(json.load(sys.stdin)["promotion"]["in_sync"])' → True, y el AGENTS.md tiene el bloque.

E15 · Subir un nivel

30 min

Elige la regla vinculante que ya se escurrió (aparece más de una vez en tus lecciones). Escribe una prueba o una sonda que falle cuando se rompe, ejecuta un caso bueno y uno malo, y regístralo con enforce --rung test (o probe) y verify.

Listo cuando: tu prueba sale con código distinto de 0 en el caso malo y 0 en el caso bueno; y status ya no lista esa regla en prose_binding.

06Prueba de la clase

Pregunta 1 de 4

¿Quién responde la pregunta de promoción ("¿romper esta regla en una sesión que no consulta el SIL causa daño real?")?competencia

07En tres frases

PreguntaVinculante es la regla cuyo incumplimiento, en una sesión sin SIL, causa un daño real; quien responde es la persona.
Bloquepromote muestra el diff, --write graba el bloque delimitado, y check avisa si falta el bloque o fue editado.
NivelUna regla que se escurre sube de prosa a prueba, sonda o hook; el SIL registra el nivel y la fuga.

Para ir más allá

Clase anteriorSiguiente clase