Saltar al contenido

Transiciones de Estado Automáticas

Las specs de Planu avanzan a través de un ciclo de vida gestionado por una máquina de estados. Llamar a update_status con un estado objetivo activa la transición y dispara automáticamente una cascada de acciones de autopilot — sin pasos manuales requeridos.

La Máquina de Estados

         ┌─────────┐
         │  draft  │
         └────┬────┘
              │ update_status(review)

         ┌─────────┐
         │ review  │◄──── request_changes
         └────┬────┘
              │ approve_spec / update_status(approved)

         ┌──────────┐
         │ approved │
         └────┬─────┘
              │ update_status(implementing)

       ┌─────────────┐
       │implementing │
       └──────┬──────┘
              │ update_status(done)

          ┌──────┐
          │ done │
          └──────┘

Cualquier etapa → blocked (update_status(blocked))
blocked → etapa anterior (update_status(review), etc.)

blocked es un meta-estado

blocked no resetea el progreso. Cuando el bloqueo se resuelve, vuelve a la etapa activa correspondiente.

Qué se Activa en Cada Transición

TransiciónDisparadorAcciones de autopilot
draft → reviewupdate_status(review)Validar completitud de criterios, ejecutar check_readiness, marcar GIVEN/WHEN/THEN faltantes
review → approvedupdate_status(approved) o approve_specCapturar versión de spec, bloquear spec (lock_spec), notificar al equipo
approved → implementingupdate_status(implementing)Generar scaffold PLAN.md, sugerir stubs TDD vía tdd_scaffold
implementing → doneupdate_status(done)Ejecutar validate contra criterios, generar entrada de changelog, ejecutar health_check_all, escanear riesgos de crash
any → blockedupdate_status(blocked)Registrar razón del bloqueo, pausar cascada de autopilot

Usando update_status

Invoca update_status con el ID de la spec y el estado objetivo:

bash
# Mover una spec a review
update_status("SPEC-659", "review")

# Aprobar después de completar la revisión
update_status("SPEC-659", "approved")

# Iniciar implementación — se activa el scaffold
update_status("SPEC-659", "implementing")

# Marcar como done — se activa la cascada validate + changelog
update_status("SPEC-659", "done")

La herramienta devuelve un resumen de qué acciones de cascada se ejecutaron y sus resultados. Si alguna acción de cascada encuentra un bloqueo o necesita aclaración, devuelve un InteractiveQuestion[] para que el LLM lo transmita.

Acciones Fire-and-forget vs. Bloqueantes

AcciónComportamiento
validateAsíncrona — se ejecuta en segundo plano, resultado adjuntado al historial de la spec
generate_changelogAsíncrona — se ejecuta cuando validate tiene éxito
health_check_allAsíncrona — independiente de validate
check_readinessBloqueante — la transición a approved está condicionada a una verificación de readiness exitosa
lock_specBloqueante — debe tener éxito antes de que se escriba approved

Bloqueante vs. approved

Si check_readiness devuelve 0 criterios que pasan, update_status(approved) devolverá un InteractiveQuestion[] preguntando si deseas aprobar una spec incompleta.


Ver también

Únete a la comunidadHaz preguntas, comparte feedback y conecta con otros desarrolladores usando Planu.
Unirse a Discord