Saltar a contenido

ADR 0002: ejecución local, persistencia y recuperación

  • Estado: aceptada para el PoC
  • Fecha: 2026-09-19

Decisión

La API entrega builds a un pool de threads local y acotado. Así POST /builds responde rápidamente sin introducir Redis ni una cola externa. La CLI con --run ejecuta síncronamente. Ambos caminos llaman al mismo pipeline de BuildManager.

Cada etapa terminada se persiste inmediatamente. Después de un reinicio confirmado, recover_interrupted marca ejecuciones interrumpidas con un diagnóstico, reconcilia sus recursos y reintenta builds en DESTROYING. La recuperación es explícita para no interferir con otro proceso API que todavía esté trabajando.

Los logs viven bajo el workspace validado. La API solo lee rutas registradas cuyo padre directo sea el directorio logs del build y limita la respuesta a 100 KB.

Los puertos de preview se coordinan mediante leases transaccionales SQLite entre procesos locales. La recuperación elimina leases huérfanos y restaura leases ausentes cuando el runtime sigue activo.

Limitaciones

El ejecutor no es durable: las tareas en memoria se pierden al terminar el proceso. SQLite y el pool local son adecuados para este PoC de un solo host, no para builders distribuidos. Una cola durable queda aplazada hasta justificar la complejidad operativa.