Les étiquettes
Chaque valeur de l’état porte une étiquette : l’ensemble des sources qui ont servi à la calculer.
L’étiquette survit à tout : recopie par
SET, arithmétique, EFFECT, branche. Aucune transformation ne retire une source.
Le flux implicite est suivi. Une valeur affectée sous une décision porte aussi l’étiquette de cette décision :
env vaut un littéral, mais il a été choisi par le message : il porte la source EVENT. Sans cela, une injection choisirait une constante « de confiance ».
Les fonctions de garde
x est un chemin : un argument de l’action jugée, ou tout chemin de l’état. action désigne l’action entière, ses arguments et la décision qui l’a produite.
NEVER s’évalue avant l’approbation. Un opérateur pressé qui approuve tout ne lève pas le refus.
Attester n’est pas faire confiance
Quand un outil s’exécute avec succès, chaque valeur de ses arguments est attestée par cet outil.ATTESTED(x, check_wipeable) le lit. L’étiquette de x ne change pas : une valeur validée reste une valeur venue du modèle.
Côté hôte
Un capteur qui lit du texte écrit par un tiers peut le dire :EXTERNAL en plus d’OBSERVED. L’hôte peut dégrader une valeur, jamais l’élever : aucune fonction ne rend une valeur fiable.
Sens de sûreté
- Une valeur sans étiquette connue est
UNKNOWN, donc non fiable. - Une valeur absente rend la fonction indéfinie, donc la garde indéterminée : un
NEVERs’applique, unALLOWne compte pas. - Écrivez la protection en
NEVER. UnALLOW outil WHEN TRUSTED(x)est fermé tant qu’il est seul, mais une autre règleALLOWsur le même outil suffit à le contourner.
Diagnostics
Tester une garde de provenance
Les scénarios voient les mêmes étiquettes qu’en production. Un cheminOBSERVE posé par GIVEN est OBSERVED, une réponse REASON est LLM :
EXPECT BLOCKED prouve que c’est la politique qui a refusé, et pas un plan jamais atteint.
Limite actuelle
Les gardes de provenance agissent à l’exécution. Les diagnostics statiques
W119 et W125 et le théorème T6 ne les créditent pas encore. Pour une cible risquée, écrivez les deux : le paramètre ATTESTS, qui rend T6 démontrable, et la garde UNTRUSTED, qui tient quand la valeur arrive par un chemin que l’analyse statique ne suit pas.Politiques
Ordre de décision et gardes indéterminées.
Banc comparatif
La même injection face à LangGraph, PydanticAI et CrewAI.