Skip to content

release: v3.2.0 — ciclos de trabajo con verificador (loop engineering) - #23

Merged
lacasoft merged 1 commit into
masterfrom
feat/loop-engineering
Oct 26, 2026
Merged

lacasoft merged 1 commit into
masterfrom
feat/loop-engineering

Conversation

@lacasoft

Copy link
Copy Markdown
Owner

Summary

Release 3.2.0: ciclos de trabajo con verificador (loop engineering). El tag v3.2.0 se crea sobre master después del merge.

Para tareas largas con un final comprobable (implementar un plan, migrar un módulo, arreglar una tanda de tests), en vez de pedirle cada paso a Claude se define un ciclo: objetivo, verificador, tope de turnos y revisión independiente. Claude no decide cuándo terminó: lo decide el verificador. Todo con piezas nativas de Claude Code (hook Stop, subagentes, worktrees); no se instala nada de terceros.

git switch -c fix/precios
> /loop-task arreglar total() en src/price.js — verificador: npm test — tope: 5 turnos
  • Verificador determinista: el hook Stop corre el comando al final de cada turno y, si falla, bloquea el cierre con el error.
  • Seguridad: el verificador solo admite test, lint, typecheck o build del proyecto encadenados con &&; el hook no ejecuta shell arbitrario.
  • Sin trampas:
    • El contrato vive en .claude/loop/state.json, que solo escribe el helper (protección nativa de .claude/ más los hooks del kit).
    • Cambiar el script del verificador en package.json no cuenta como pasar.
    • Si el verificador ya pasa antes de empezar, el ciclo no arranca.
  • Quien hace no aprueba: en verde exige el agente reviewer y un "Resumen para la persona" en .loop/PROGRESS.md antes de cerrar.
  • Límites: tope de 10 turnos (máximo 50); nunca en main/master/develop; sin commit, push ni merge.

Test plan

  • npm run validate (52) y npm test: 144/144 (32 nuevos: verificadores admitidos y rechazados, arranque en rama principal, línea base, bloqueo en rojo, revisión obligatoria, cierre, tope, cambio de script, stop y protección del estado).
  • Smoke de los 13 stacks.
  • Sesión real de Claude Code sobre un proyecto con 3 bugs y tests en rojo:
    • turno 1: arregla los bugs; la puerta da verde y exige la revisión;
    • el reviewer encuentra un HIGH (redondeo de medio centavo) que Claude corrige con un test de regresión;
    • turno 2: con el resumen escrito, se cierra. Sin commit ni push.
  • Un primer intento real destapó que Claude Code protege .claude/ de las ediciones del agente: PROGRESS.md se movió a .loop/ y el estado se quedó en .claude/loop/, donde esa protección juega a favor.
  • De paso, verificado en sesión real que el reviewer escribe su memoria de equipo (.claude/agent-memory/reviewer/).
  • Tras el merge: tag v3.2.0 y smoke con npx.

Skill /loop-task y helper loop.cjs: para tareas largas con final
comprobable, un ciclo en el que Claude no decide cuándo terminó.
- El hook Stop corre el verificador al final de cada turno y bloquea el
  cierre con el error si falla.
- Verificador limitado a test/lint/typecheck/build del proyecto (sin
  shell arbitrario); el contrato vive en .claude/loop/ y solo lo escribe
  el helper; un cambio al script del verificador no cuenta como pasar.
- Línea base: no arranca si el verificador ya pasa.
- En verde exige el agente reviewer y un resumen para la persona en
  .loop/PROGRESS.md antes de cerrar; tope de turnos; nunca en la rama
  principal; sin commit, push ni merge.

Probado en una sesión real: cerró en 2 turnos tras corregir un HIGH que
encontró el reviewer.
@lacasoft
lacasoft merged commit 6f663b9 into master Oct 26, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant