4.1 KB · updated 2026-07-06 · md

v0.8.0.fr.md

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

Tesserae v0.8.0 — tesserae engine --all : un seul moteur pour tous les projets

<!-- translations:start -->

English · 한국어 · 中文 · 日本語 · Русский · Español · Deutsch

<!-- translations:end -->

Publié le 2026-06-13 · PyPI · GitHub release · pip install --upgrade tesserae==0.8.0

Jusqu'ici, le moteur de rafraîchissement était un processus par projet : N projets enregistrés signifiaient N démons à démarrer, arrêter et surveiller. v0.8.0 ajoute le mode flotte — un seul processus qui maintient à jour tous les projets enregistrés dans ~/.tesserae/registry.json.

tesserae engine --all

1. Un processus, tous les projets enregistrés

tesserae engine --all supervise une unité de moteur par entrée du registre, chacune avec ses propres watchers et sa boucle de recompilation avec debounce. L'enregistrement ou le retrait d'un projet prend effet sans redémarrage — la flotte se réconcilie avec le registre toutes les 10 secondes, redémarre les unités dont la racine enregistrée a changé et relance les unités dont le thread est mort. Les projets dont le répertoire manque sur le disque sont ignorés avec un avertissement plutôt que de faire échouer la flotte.

Le mode mono-projet existant ne change pas : tesserae engine --project X se comporte exactement comme avant, et la flotte refuse de s'approprier un projet dont un moteur autonome tourne déjà.

2. Régulation des compilations à l'échelle de la flotte

Les compilations concurrentes de projets différents partagent les mêmes comptes CLI LLM et leurs limites de débit. La flotte les sérialise via un sémaphore partagé — --compile-slots N (1 par défaut) plafonne le nombre de compilations simultanées dans toute la flotte. Cela se compose avec le verrou de compilation par projet de v0.7.2 : le flock protège des compilations externes, le sémaphore ordonnance les internes.

3. Cycle de vie robuste, passé au crible

La flotte a traversé trois tours de revue adversariale (Codex, effort de raisonnement xhigh) avant fusion ; tout ce qui a été trouvé a été corrigé et est couvert par des tests :

  • L'arrêt n'abandonne jamais une compilation. Les threads des unités sont non-daemon et la propagation d'arrêt attend — avec des avertissements périodiques dans les logs — que chaque unité termine son pipeline en cours, sur tous les chemins de sortie, y compris un crash de la réconciliation.
  • Pidfile sans course. Le ~/.tesserae/engine.pid global est acquis via O_CREAT|O_EXCL sous un flock sidecar : deux démarrages concurrents ne peuvent jamais gagner tous les deux — et la flotte ne supprime qu'un pidfile qu'elle possède encore. Les plateformes sans flock refusent la récupération automatique d'un pidfile périmé avec un message clair de suppression manuelle plutôt que de risquer la course.
  • Un registre corrompu ne peut pas tuer la flotte. JSON corrompu, fichiers illisibles, valeurs projects mal formées ou falsey, entrées individuelles invalides : tout cela laisse les unités actuelles tourner (journalisé, retenté au tick suivant) au lieu de tout démolir.

4. Détails CLI

--all est mutuellement exclusif avec --project ; en mode flotte --debounce et --interval s'appliquent à chaque unité ; --once exécute un rafraîchissement borné par projet, séquentiellement (adapté à la CI). TESSERAE_REGISTRY et TESSERAE_FLEET_PIDFILE permettent de surcharger l'emplacement du registre et du pidfile.

Mise à niveau depuis v0.7.2

Remplacement direct ; aucun changement de configuration. Les invocations existantes de tesserae engine se comportent à l'identique. Pour adopter le mode flotte, enregistrez vos projets (tesserae projects / l'outil MCP register_project) puis lancez tesserae engine --all.