v0.28.4.fr.md
docs/i18n/release-notes/v0.28.4.fr.md
Tesserae v0.28.4 — vos autres comptes n'étaient jamais utilisés
<!-- translations:start -->
English · 한국어 · 中文 · 日本語 · Русский · Español · Deutsch
<!-- translations:end -->
Released 2026-07-31 · PyPI · GitHub release · pip install --upgrade tesserae==0.28.4
Tesserae passe en revue vos comptes CLI connectés pour qu'un compte ayant atteint sa limite laisse la place au suivant, plutôt que de perdre le reste de l'exécution en extraction déterministe. Cette boucle était désactivée — et précisément dans la manière la plus courante d'exécuter Tesserae.
Une variable d'environnement désactivait tout le mécanisme
Définir CLAUDE_CONFIG_DIR ou CODEX_HOME remplaçait la liste des comptes découverts par ce seul répertoire. Tout processus lancé depuis une session Claude Code hérite de CLAUDE_CONFIG_DIR : une compilation ne pouvait donc utiliser que le compte de la session qui l'avait lancée, et quand celui-ci se tarissait, la rotation n'avait nulle part où aller.
Mesuré sur le graphe du projet lui-même, en une seule journée :
- une compilation a épuisé la limite de 5 heures d'un compte et basculé 1 531 documents en extraction déterministe pendant que deux autres comptes connectés restaient inutilisés avec un quota entier ;
- une exécution ultérieure en a perdu 1 590 de plus à cause de l'OAuth expiré d'un compte, alors qu'un compte sain se trouvait juste à côté.
Le graphe était passé silencieusement d'environ 13 000 nœuds à 5 155 avant que quiconque ne le remarque.
La variable d'environnement désigne désormais le compte à essayer en premier, et non le seul autorisé.
C'est vous qui choisissez les comptes dépensés
llm_claude_config_dirs et le nouveau llm_codex_homes (une liste, dans l'ordre de rotation) font autorité lorsqu'ils sont définis : rien en dehors n'est essayé, et ils l'emportent sur la variable d'environnement ambiante, héritée plutôt que choisie.
{
"llm_codex_homes": ["/Users/you/.codex-work", "/Users/you/.codex-personal"]
}
Chaque fournisseur garde sa propre clé, car un répertoire de configuration Claude CLI et un home Codex sont des choses différentes sur disque. La découverte Codex exige maintenant aussi auth.json, ce qui a écarté sur une machine réelle 24 fichiers ~/.codex-*.log égarés, chacun coûtant un codex exec voué à l'échec par document.
Un compte épuisé ne coûte plus un sous-processus par document
Le quota est un fait relatif au compte, pas au document. Une fois que tous les comptes configurés avaient signalé leur limite, l'exécution lançait encore un enfant du CLI par compte et par document restant pour s'entendre dire la même chose. Ce verdict est désormais mémorisé pour le reste de l'exécution.
Il est délibérément difficile à déclencher : chaque compte essayé doit être une impasse prouvée, et au moins un doit avoir dit explicitement « you've hit your … limit ». Un seul délai d'attente parmi eux et l'exécution continue d'essayer — transitoire n'est pas épuisé. Le verdict est propre au client, si bien qu'un démon de longue durée ne reste pas bloqué après la réinitialisation de la limite.
Une compilation qui perd sa couche conceptuelle le dit désormais
Compiled project wiki: processed=2492 skipped=0 fallbacks=1531 nodes=… edges=…
WARNING: 1531 of 2492 document(s) (61.4%) fell back to deterministic extraction —
their concept layer is missing from this graph.
fallbacks=N figure sur la ligne de résumé lisible par machine, pour que la CI puisse s'y adosser ; la ligne destinée aux humains passe de note: à un avertissement au-delà de 50 %. Les deux nomment la récupération, qui n'exige pas de recompiler le corpus :
tesserae compile --changed-only --retry-fallbacks
C'est #92. Ce silence est ce qui a rendu tous les bugs ci-dessus invisibles pendant une journée. Le code de sortie reste inchangé : ce serait un changement de contrat pour tout ce qui scripte compile, et cela mérite sa propre décision.
Également
L'extracteur Claude ne passe plus --max-turns 1. Ce drapeau compte les appels d'outils et non les réponses : sur une machine avec des serveurs MCP configurés, le premier appel d'outil du modèle consommait l'unique tour et le CLI sortait avant d'émettre du JSON. Ce que l'intention « un seul coup » exige réellement, c'est --strict-mcp-config.
@jokerized/tesserae est désormais publié depuis GitHub Actions via la publication de confiance OIDC de npm : les versions portent des attestations de provenance et il n'existe plus de jeton npm de longue durée.
Mise à niveau depuis la v0.28.3
Remplacement direct. Aucun changement d'API ni de schéma ; llm_codex_homes est additif et le singulier llm_codex_home fonctionne toujours.
Si vous utilisez plusieurs comptes, recompilez. Les versions précédentes ont pu laisser des documents dégradés qu'une nouvelle exécution récupère, et le cache fait que seuls les fichiers concernés ont un coût :
tesserae compile --changed-only --retry-fallbacks