4.0 KB · updated 2026-07-06 · md

v0.8.0.es.md

docs/i18n/release-notes/v0.8.0.es.md

Tesserae v0.8.0 — tesserae engine --all: un solo motor para todos los proyectos

<!-- translations:start -->

English · 한국어 · 中文 · 日本語 · Русский · Français · Deutsch

<!-- translations:end -->

Publicado el 2026-06-13 · PyPI · GitHub release · pip install --upgrade tesserae==0.8.0

Hasta ahora el motor de actualización era un proceso por proyecto: N proyectos registrados significaban N demonios que arrancar, parar y recordar. v0.8.0 añade el modo flota — un único proceso que mantiene frescos todos los proyectos registrados en ~/.tesserae/registry.json.

tesserae engine --all

1. Un proceso, todos los proyectos registrados

tesserae engine --all supervisa una unidad de motor por entrada del registro, cada una con sus propios watchers y su bucle de recompilación con debounce. Registrar o dar de baja un proyecto surte efecto sin reiniciar — la flota se reconcilia con el registro cada 10 segundos, reinicia las unidades cuya raíz registrada se movió y revive las unidades cuyo hilo murió. Los proyectos cuyo directorio falta en disco se omiten con una advertencia en lugar de hacer fallar la flota.

El modo de proyecto único no cambia: tesserae engine --project X se comporta exactamente como antes, y la flota se niega a apropiarse de un proyecto que ya tiene un motor independiente en marcha.

2. Limitación de compilaciones a nivel de flota

Las compilaciones concurrentes de proyectos distintos comparten las mismas cuentas de CLI de LLM y sus límites de tasa. La flota las serializa mediante un semáforo compartido — --compile-slots N (por defecto 1) limita cuántas compilaciones corren a la vez en toda la flota. Esto se complementa con el bloqueo de compilación por proyecto de v0.7.2: el flock protege de compilaciones externas, el semáforo programa las internas.

3. Ciclo de vida robusto, revisado a fondo

La flota pasó por tres rondas de revisión adversarial (Codex, esfuerzo de razonamiento xhigh) antes de fusionarse; todo lo encontrado se corrigió y está cubierto por tests:

  • El apagado nunca abandona una compilación. Los hilos de las unidades son non-daemon y la propagación de parada espera — con advertencias periódicas en el log — hasta que cada unidad termina su pipeline actual, en todas las rutas de salida, incluida una reconciliación que falle.
  • Pidfile sin carreras. El ~/.tesserae/engine.pid global se adquiere con O_CREAT|O_EXCL bajo un flock sidecar, de modo que dos arranques concurrentes nunca pueden ganar ambos — y la flota solo elimina un pidfile que aún posee. Las plataformas sin flock rechazan la recuperación automática de un pidfile obsoleto con un mensaje claro de eliminación manual en lugar de arriesgar la carrera.
  • Un registro corrupto no puede matar la flota. JSON corrupto, archivos ilegibles, valores de projects con forma incorrecta o falsey, y entradas individuales malformadas: todo mantiene las unidades actuales en marcha (se registra y se reintenta en el siguiente tick) en lugar de derribarlo todo.

4. Detalles del CLI

--all es mutuamente excluyente con --project; en modo flota --debounce y --interval se aplican a cada unidad; --once ejecuta una actualización acotada por proyecto, secuencialmente (apto para CI). TESSERAE_REGISTRY y TESSERAE_FLEET_PIDFILE sobreescriben la ubicación del registro y del pidfile.

Actualización desde v0.7.2

Reemplazo directo; sin cambios de configuración. Las invocaciones existentes de tesserae engine se comportan igual. Para adoptar el modo flota, registra tus proyectos (tesserae projects / la herramienta MCP register_project) y ejecuta tesserae engine --all.