StructureClerk

Où StructureClerk se situe face à AARM

StructureClerk ne revendique aucun niveau de conformité AARM.

AARM (Autonomous Action Runtime Management) est une spécification ouverte de sécurité runtime pour agents IA, publiée sur arXiv en février 2026 puis donnée au Cloud Security Alliance, où elle est devenue un groupe de travail technique.

Un système AARM intercepte les actions avant exécution, les évalue contre une politique et l'intention contextuelle, applique une décision d'autorisation et enregistre des reçus infalsifiables liant action, contexte et résultat.

C'est la catégorie à laquelle StructureClerk appartient. Cette page reprend les neuf exigences une par une, et celles qui ne sont pas satisfaites s'affichent exactement comme les autres.

ExigenceNiveauÉtatCe que fait StructureClerk
R1Interception avant exécutionCoreMUSTNon satisfaite

Le moteur est consultatif. Il rend une décision ; il ne s'interpose pas dans le chemin d'exécution et ne bloque rien. C'est un choix de conception, expliqué plus bas.

R2Accumulation de contexteCoreMUSTPartielle

Le contexte est évalué par requête : juridictions, secteur, destination, enregistrements déclarés auprès du régulateur, profil d'organisation. Rien ne s'accumule d'une action à la suivante, parce que la fonction de décision est pure et ne porte aucun état.

R3Évaluation de politique avec alignement d'intentionCoreMUSTPartielle

L'évaluation de politique est là : une table de règles versionnée, une seconde passe juridictionnelle qui ne peut que resserrer une décision, et un seuil du doute qui fait escalader quand la confiance est basse. L'alignement d'intention, non.

R4Cinq décisions d'autorisationCoreMUSTPartielle

Quatre sur cinq. Le moteur rend ALLOW, APPROVE, DENY et ESCALATE. MODIFY n'existe pas.

R5Reçus infalsifiablesCoreMUSTSatisfaite

Une empreinte SHA-256 du couple requête et décision, une signature Ed25519, un chaînage de hachage, des ancres RFC 3161, et une vérification publique gratuite et sans compte.

Verrouillée par tests/authority-engine.test.mts

R6Liaison d'identitéCoreMUSTPartielle

L'identifiant d'agent fourni par l'appelant entre dans le hash signé, donc la décision s'y engage. StructureClerk ne vérifie pas que cet identifiant appartient à l'agent qui le présente : il atteste de ce qui lui a été présenté. Lier n'est pas authentifier.

R7Suivi de distance sémantiqueExtendedSHOULDNon satisfaite

Aucune notion de distance sémantique.

R8Export de télémétrie (OpenTelemetry)ExtendedSHOULDNon satisfaite

Aucun export OpenTelemetry dans les sources.

R9Application du moindre privilègeExtendedSHOULDNon satisfaite

L'application du moindre privilège suppose un point d'application. Il n'y en a pas.

États des exigences dérivés le 19 septembre 2026.

Pourquoi R1 n'est pas satisfaite

StructureClerk est un point de décision, pas un point d'application. L'application appartient à l'infrastructure qui fait tourner l'agent : StructureClerk décide, votre infrastructure applique. Intégrer l'application au service contredirait la thèse produit, donc R1 n'est pas une lacune en attente d'implémentation. La façon de la satisfaire sans se contredire est un point d'application de référence qui tourne dans votre propre infrastructure et appelle l'API de décision avant chaque appel d'outil. Ce travail est prévu et n'est pas livré.

Travail en cours

  • Une cinquième décision, MODIFY : l'action autorisée sous forme contrainte, avec la transformation exigée rendue à l'intérieur du hash signé.
  • Un contexte de session accumulé par le service et passé en entrée à la fonction de décision, qui reste pure.
  • Une liaison d'identité vérifiable, avec l'énoncé explicite de ce qui est vérifié et de ce qui n'est qu'attesté.
  • Un alignement d'intention déclaratif et déterministe. Aucun modèle de langue n'entre dans la fonction de décision.
  • Un point d'application de référence, publié séparément et tournant dans votre infrastructure, qui échoue fermé quand l'API de décision est injoignable.

Aucune date de listing n'est promise. La soumission n'est possible qu'une fois le travail ci-dessus fait, et la revue prend le temps qu'elle prend.

Sources, et ce qui n'a pas été vérifié

Les intitulés et les niveaux des deux premières colonnes viennent de la note de chantier qui a ouvert ce travail, et non d'une lecture du texte normatif publié : l'environnement qui a produit cette page n'a pas d'accès sortant vers aarm.dev ni vers arXiv. La dernière colonne, ce que fait StructureClerk, est dérivée de ce dépôt et verrouillée par des tests. Lisez la spécification aux liens ci-dessous avant de vous fier aux deux premières colonnes.