v0.28.0.fr.md
docs/i18n/release-notes/v0.28.0.fr.md
Tesserae v0.28.0 — crochets qui ne peuvent pas dépenser votre argent par accident
<!-- translations:start -->
English · 한국어 · 中文 · 日本語 · Русский · Español · Deutsch
<!-- translations:end -->
Publié 2026-07-27 · PyPI · GitHub release · pip install --upgrade tesserae==0.28.0
Effectuez la mise à jour pour le premier problème. C'est un bug de dépense, et il a été reproduit sur une vraie machine.
Le piège $HOME
Une base de connaissances à ~/.tesserae fait que $HOME ressemble à une racine de projet. La résolution de resolve_project_root() du plugin remontait vers le haut à partir du répertoire de travail jusqu'au premier .tesserae/ trouvé — donc toute session commencée en dehors d'un projet enregistré se résolvait en $HOME, et le crochet PostToolUse lançait en arrière-plan tesserae compile --changed-only sur tout le répertoire personnel.
15k fichiers, un graphique de 795 MB, approximativement 10 heures de dépense LLM, à partir d'un processus setsid'd qui a survécu à la session qui l'a lancé. Il se déclenchait à chaque Edit/Write.
Le repli l'a rendu encore pire qu'il n'y paraît. Quand aucun .tesserae/ n'a été trouvé, le résolveur faisait ceci :
echo "$PWD"
return 0
Il prétendait que n'importe quel répertoire était un projet. Les appelants ont ensuite testé -d "$root/.tesserae" — ce qui passait pour n'importe quel répertoire de travail sous $HOME. Ce test était la dernière ligne de défense et le repli l'a franchie directement.
Deux refus maintenant. $HOME n'est jamais une racine de projet, par l'une ou l'autre voie (remontée ou racine git). Et une non-correspondance retourne vide avec un statut non-zéro, donc les appelants ne font rien au lieu de deviner.
Les crochets qui dépensent sont opt-in. TESSERAE_HOOK_AUTOCOMPILE=1 active les recompilations automatiques ; en l'absence de cela, ils ne font rien. Appliqué uniquement aux deux qui dépensent réellement — posttooluse-edit.sh et session-end.sh. session-start.sh exécute le code sync déterministe et pretooluse-compile.sh n'intercepte qu'une compilation que vous avez tapée vous-même, donc ni l'un ni l'autre n'est protégé.
Un crochet qui lance en arrière-plan du travail modèle devrait être activé délibérément, pas désactivé après l'arrivée de la facture.
Le CLI Python n'a jamais eu ce bug : ProjectWiki.load() utilise le chemin qu'il reçoit et ne remonte pas, donc un tesserae compile manuel en dehors d'un projet échoue proprement. Le piège était uniquement dans les crochets shell.
OKF v0.2
Le format de connaissance ouvert de Google v0.2 place la provenance, la confiance, le cycle de vie et l'attestation en première classe. Tesserae émet maintenant v0.2 et consomme toujours v0.1.
Émis : generated: {by, at} à partir des marqueurs d'extracteur et d'agent ; sources avec les signaux de crédibilité (usage_count à partir des décomptes de session, usage_window, last_modified, et author uniquement où il existe exactement une personne authored_by) ; status: deprecated et stale_after dérivés des arêtes supersedes.
Non émis : verified, et donc aucun niveau de confiance au-dessus de unverified. Tesserae n'a pas d'événement de vérification enregistré avec un acteur et un horodatage. Ses quatre classes de provenance sont des propriétés d'arête — la force avec laquelle le graphe autorise un triple — tandis que la famille de confiance d'OKF est un événement de vérification par concept. Des axes différents ; mapper l'un sur l'autre viderait la confiance à travers une spec. Vérifié sur 5,193 concepts réels : verified émis 0 fois, generated.by revendique human: 0 fois.
Trois bugs consommateur sont corrigés, tous trouvés en important l'Appendice A de la spec verbatim à travers le CLI réel, où il plantait précédemment : les horodatages YAML non cités se résolvent en datetime et ont cassé la sérialisation ; le repli timestamp v0.1 ne faisait silencieusement rien sur cette même forme non citée ; et le lien relatif au bundle recommandé de la §6.1 (/tables/customers.md) a produit zéro arêtes, donc un bundle respectant la spec s'importait comme nœuds déconnectés.
Un validateur écrit à partir des propres clauses de la spec passe une exportation de 5,193 concepts sans zéro échec, sans perte et byte-idempotent.
Les verdicts tautologiques sont nommés
Environ 40% des verdicts SUPPORTED de verify_claim étaient des arêtes evidenced_by dont l'étendue citée est la cible propre de l'arête — « C evidenced_by S », confirmé en lisant S. Vrai, non informatif, et précédemment indistinguible d'un véritable verdict appuyé par un document.
La charge utile indique maintenant lequel c'est. Parmi tous les 15,284 arêtes : chaque evidenced_by SUPPORTED signalé, rien d'autre signalé, et aucun jugement n'a changé de valeur de vérité. Additif, donc le contrat à sept verdicts de v0.27.0 est inchangé.
Mise à jour depuis v0.27.0
Drop-in pour la bibliothèque. Réinstallez le plugin pour obtenir le correctif de crochet, et si vous voulez les recompilations automatiques, définissez TESSERAE_HOOK_AUTOCOMPILE=1.
S'il existe un .tesserae errant à $HOME d'une compilation accidentelle antérieure, il est maintenant inert — mais il est aussi volumineux, et le supprimer est sûr une fois que vous avez confirmé que votre registre et votre config vivent ailleurs.