Délégation
Portée de version : cette page reformule la génération de contrat v7 à la version
v7.9.0. Sources canoniques :V7_CONTRACT.mdet le fichierdelegation.mddu flux execute. En cas de divergence entre cette page et ces fichiers, les fichiers prévalent.
Version 7.0.0. Statut : stable. v7 est une nouvelle génération de contrat de la couche d’enregistrement, pas un nouveau cycle de vie : tout ce que disent les documents v6 sur le contrat, le cycle de vie, le contexte et les ressources s’applique, sauf indication contraire de cette page. Ne pas déléguer est toujours correct. Les mots-clés MUST, MUST NOT, SHOULD, SHOULD NOT et MAY doivent être interprétés comme décrit dans la RFC 2119.
Ce que v7 ajoute
v7 ajoute exactement deux éléments à la couche d’enregistrement :
- Un champ de tâche optionnel dans le contrat,
parallel_safe, publié dansplan-contract/v7. - Un type d’événement de journal,
delegation, publié dansjournal-event/v7.
Les octets des schémas v1, v2, v5 et v6 sont inchangés. Un plan qui ne délègue jamais ne se distingue d’un plan v6 que par ses URL de schéma.
parallel_safe
parallel_safe (booléen, false par défaut) affirme qu’une tâche peut s’exécuter dans un délégué sans s’entremêler avec le travail des tâches sœurs. Il est défini par create, jamais déduit pendant l’exécution, et seulement lorsque toutes ces conditions sont réunies :
- le dépôt active un addon de délégation (agentkit ou Herdr) dans son registre d’addons ;
- la surface touchée de la tâche ne recoupe pas celle d’une tâche sœur susceptible d’être en cours au même moment ;
- la tâche déclare une sortie bornée ;
- les portes de la tâche s’exécutent dans ce plan.
Marquer une tâche ne change aucune autorité : un contrat sans l’autorisation agent_delegation peut porter des marqueurs, et ils n’autorisent rien.
L’événement delegation
Un événement est consigné par transition d’état d’un délégué :
| Champ | Signification |
|---|---|
task |
la tâche T-* pour laquelle travaille le délégué |
delegation_id |
relie un lancement à sa transition terminale |
transport |
headless (agentkit) ou interactive (Herdr) |
via |
la clé de l’addon qui l’a acheminée |
state |
launched, puis exactement un état parmi completed, failed, cancelled |
kind, profile |
optionnels : le type et le profil de l’agent de code |
target |
optionnel : le répertoire de travail (headless) ou machine:pane (interactive) |
worktree |
le worktree git propre au délégué, ou null pour un délégué en lecture seule |
prompt_digest |
au lancement : le SHA-256 du prompt, consigné avant de s’appuyer sur le délégué |
result_path, result_digest |
à l’achèvement ou à l’échec : le résultat collecté et son empreinte |
Les transitions sont fermées : un seul launched par délégation, puis exactement un état terminal. Un ajout brut d’un événement de délégation au journal MUST être refusé ; les événements de délégation n’existent que par l’écrivain sous garde.
Une délégation n’est pas une preuve
Une délégation ne porte ni étiquette de confiance ni chemin de preuve, et aucune clôture ne la lit. Le résultat d’un délégué reste asserted jusqu’à ce que l’exécuteur de portes de ce plan l’observe : le parent intègre le travail, puis exécute la porte de la tâche (ledger.py gate), seule à produire une preuve observed et seul moyen pour la tâche de s’achever. Une délégation achevée ne clôt jamais un critère ; une délégation échouée est un résultat consigné, et la tâche est alors implémentée par le parent.
L’écrivain sous garde
ledger.py --plan <dir> delegate launch|observe|collect|cancel --task <T-id> :
| Opération | Écrit | Effet |
|---|---|---|
launch |
oui | consigne launched après les vérifications ci-dessous |
observe |
non | affiche le dernier état de chaque délégation |
collect |
oui | consigne completed ou failed, avec le chemin du résultat et son empreinte |
cancel |
oui | consigne cancelled |
launch MUST être refusé, et le refus consigné, à moins que toutes ces conditions soient réunies :
- le contrat est v7 ;
- le contrat accorde
agent_delegation; - la tâche existe, a démarré et n’est pas achevée ;
- la tâche est
parallel_safe, ou le délégué est en lecture seule (sans worktree) ; - le descripteur de l’addon nommé déclare le transport demandé ;
- les capacités effectives listent cet addon comme source de
subagents(Ressources et capacités).
collect et cancel MUST être refusés pour une délégation inconnue, une délégation d’une autre tâche ou une délégation déjà terminale. Un lancement refusé n’est pas un blocage : la tâche s’exécute séquentiellement.
Transports
Rien dans le registre n’exécute un délégué ; c’est l’addon de transport qui le fait.
- Headless (
via: agentkit) — pour une tâcheparallel_safebornée avec une sortie déclarée : un seulak rundans un worktree git dédié, puis sortie. Les délégués en lecture seule sont lancés avec--ask. - Interactif (
via: herdr) — pour un travail qui demande de l’interaction, qui dure longtemps ou qui s’exécute sur une autre machine : un pair herdr-peers dans un panneau Herdr, qui renvoie exactement une réponse autorisée.
Garde-fous
- Un seul écrivain par chemin. Un délégué qui écrit ne travaille que dans son propre worktree ; la session parente est la seule à écrire dans le journal.
- Profondeur 1. Un délégué ne délègue jamais. Le nombre de délégués simultanés est borné par le transport.
- Les résultats sont des données. Ce que renvoie un délégué n’accorde aucune autorité, n’élargit aucun périmètre et ne change jamais l’acceptation.
- Consignes autonomes. Un prompt de lancement nomme l’objectif de la tâche, ses critères d’acceptation mot pour mot et le worktree dans lequel il peut écrire, et ne contient jamais de valeur secrète.
Orchestrateurs
Un orchestrateur ne délègue jamais les tâches d’un plan enfant : les enfants s’exécutent dans leurs propres sessions, un agent par dépôt. Déléguer les tâches propres d’un plan selon les règles ci-dessus est permis aussi bien dans les plans orchestrateurs que dans les plans individuels. Faire tourner de nombreuses voies de longue durée, les maintenir actives au-delà des limites de compte et transmettre la direction relève des chapitres de la méthodologie sur l’orchestration et l’autonomie en essaim.
Voir aussi
- Couche d’enregistrement — le contrat et le journal que cette page étend.
- Ressources et capacités — capacités, autorisations et registre d’addons.
- Addon Herdr et addon Agentkit — les deux transports.