Un mandat est un artefact, pas un réglage.
La délégation bornée est une capacité à l’intérieur d’Execution Authorization, pas une catégorie à part. Un Task Contract encadre la chaîne ; il n’en remplace aucune pièce. Chaque étape produit toujours son propre Execution Grant à usage unique et son propre Action Receipt.
Conception
TaskContractV1
Le contrat lie, dans un seul objet signé : le tenant, les acteurs autorisés à agir sous son couvert, le Guardian et l’audience auxquels il s’adresse, la révision, les étapes, leurs contraintes, le budget et ses unités, la fenêtre de validité, la politique et le manifeste en vigueur, et le compteur de révocation.
taskId · revisionIdentité et version. Un contrat approuvé ne se modifie jamais sur place : tout changement d’une étape produit une nouvelle révision à relire.
tenant · guardianId · audienceÀ qui il appartient et quel unique point d’exécution peut le consommer. Un mandat s’adresse à un Guardian.
actors[]Chaque acteur lie un identifiant à une clé et à son empreinte. Une étape est réclamée en prouvant la possession de cette clé face à un défi frais, consommé de façon atomique.
authorityFixée par opération par le protocole. L’appelant ne la choisit pas et ne peut pas la dégrader dans la même requête, et un mandat approuvé n’abaisse jamais le seuil d’une étape.
steps[]Chaque étape nomme son opération canonique, son fournisseur, sa liste de ressources, l’empreinte de ses paramètres exacts, et porte maxUses fixé à un.
budgetDurable et atomique par tenant, tâche, révision et étape. Engagé signifie consommé plus tout ce qui est réservé dont le résultat est en attente ou incertain, de sorte qu’un grant ne peut pas réserver deux fois.
issuedAt · expiresAtLa fenêtre. Ensuite aucune nouvelle étape n’est envoyée ; il n’y a ni délai de grâce ni renouvellement depuis l’intérieur de la tâche.
policyVersion · revocationVersionLa politique locale signée en vigueur et le compteur de révocation. Si le stockage ou la révocation sont indisponibles, aucun nouvel effet ne sort.
L’intersection s’applique toujours
permission effective = mandat ∩ grant ∩ politique locale signée ∩ contraintes de l’adaptateur ∩ budget ∩ identité ∩ validité et révocation
Le cloud n’élargit jamais le plafond local. Un mandat est un terme de plus dans l’intersection, jamais un moyen de la contourner, et le Guardian les applique tous avant de contacter un fournisseur.
Machine à états
Une tâche occupe exactement un état, et c’est la transition que le registre consigne, pas l’intention.
- draft
- approved
- running
- paused
- completed
- revoked
- expired
Exclusions délibérées
- Pas de sous-délégation. Un mandat, un Guardian, un budget ; une tâche ne peut pas céder une partie d’elle-même à un autre acteur ni dresser un second point d’exécution.
- Pas d’effets ouverts. Une étape sans opération canonique et sans empreinte de paramètres n’est pas une étape.
- Pas d’autorisation permanente. Tout mandat expire, et l’expiration n’est pas renouvelable depuis l’intérieur de la tâche.
- Ce que l’acteur lit — documents, sorties d’outils, contenu web, mémoire — est une entrée, jamais une autorité. Cela ne peut pas étendre le contrat.
- L’adaptateur détermine l’effet canonique et l’état antérieur. Le résumé d’un agent, un schéma en lecture seule ou une destination tirée du contenu ne sont pas acceptés comme vérité.
Le rôle du lecteur
Le lecteur local est explicatif. Dans ce profil, un constat isolé, une abstention, une non-évaluation ou une lecture partielle ne bloquent pas, ne révoquent pas et n’imposent pas d’approbations supplémentaires sur un effet exact déjà approuvé et permis. L’autorité n’est jamais relevée pour compenser une alerte, et jamais abaissée parce qu’aucune alerte n’est apparue. Identité, signature, budget, précondition et révocation continuent d’échouer en position fermée — ce n’est pas une permission d’exécuter sans contrôles.
Statut
Conception. Le schéma et ses invariants existent et sont couverts par des tests. Aucun mandat délégué n’a été exécuté contre un fournisseur réel, ce profil est donc étiqueté simulé. Un résultat n’est jamais extrapolé depuis un mock ni depuis un autre connecteur, et un connecteur hérité testé avec MFA ou quorum ne crédite pas la délégation à plusieurs étapes.
Questions ouvertes
Les détails de canonisation, les limites de taille et de nombre, la gestion de l’horloge et le rejet des champs inconnus sont fixés avant de construire le moindre runtime, et publiés comme vecteurs de test versionnés aux côtés du vérificateur. Le vérificateur sort avant le profil : rien n’est émis qui ne puisse encore être vérifié de façon indépendante.