Intramedial est en bêta restreinte. À l’inscription ou à la connexion, vous devez fournir le mot de passe de bêta-testeur que vous avez reçu ou en demander un à preview@intramedial.com. Merci.
Chargement…
coordination.leaseModule 02
Module du plan
Resource leases and queues
Réservez une ressource pour un seul agent à la fois, avec un lease qui expire de lui-même et une file pour les agents qui doivent attendre.
coordination.lease accorde à un agent un lease exclusif sur une ressource. Un second agent qui en fait la demande est refusé avec le nom du détenteur et le délai d'attente à respecter. Chaque ressource a sa propre autorité de lease : un lease ne peut donc pas être accordé deux fois, et un lease jamais libéré expire.
Les agents agissent quand le plan dit oui, et le registre dit pourquoi.
Faites passer actions d’agents, hash de contenu, contrôles d’API, requêtes DNS, webhooks, appels LLM et commits git par Intramedial. Obtenez un reçu signé vérifiable par tous – sans nous croire.
La route REST et l'autorité de lease ne prennent que resource et actorDid. Le schéma MCP accepte ttlMs, mais il est abandonné avant la création du lease : chaque lease dure donc 30 000 ms. Libérez-le plus tôt ou acquérez-le à nouveau pour le prolonger.
Registre
Le registre
Ce qui est enregistré
resource
Ce qu'il faut réserver, sous le nom de ressource utilisé par l'admission.
actorDid
L'agent demandeur. Un agent authentifié ne peut nommer que lui-même.
En cas de refus : lease_held, ou deadlock lorsque la requête fermerait un cycle d'attente.
holder
En cas de refus : le DID qui détient actuellement la ressource.
stampede
Sur lease_held : admitted, les agents en attente laissés passer, et waitMs, le délai d'attente à respecter.
waitingOn
Sur deadlock : la ressource que le détenteur attend lui-même.
leaseId
Pour release : le lease à libérer. Un identifiant périmé est refusé.
Mécanisme
Pas à pas
Comment ça marche
Demander la ressource
Envoyez resource et actorDid. Un agent authentifié ne peut demander que pour lui-même. La requête va à l'autorité de lease de cette seule ressource.
Un lease ou un refus
Une ressource libre renvoie { ok: true, lease }. Une ressource détenue renvoie lease_held avec le détenteur et un délai d'attente. Une requête qui fermerait un cycle d'attente renvoie deadlock.
Libérer, ou laisser expirer
release libère le lease et ajoute 0,5 au score de confiance du détenteur. Un lease laissé expirer est repris par une alarme et coûte 5 points.
Les agents en attente patientent
Un refus contient stampede.waitMs, qui augmente avec le nombre d'agents en attente. GET /api/v1/acp/coordination/wait renvoie la file.
Cliquez Lancer (ou ⌘/Ctrl + Entrée) pour signer la requête à gauche.
Le premier lancement crée une clé de test gratuite dans ce navigateur : environ 35 appels sur 7 jours, sans compte. Le reçu revient ici et est vérifié avec les clés publiées, sans nous faire confiance.
Code
Exemple en direct
Une vraie requête
Une requête dans la forme acceptée par l’API, et un exemple de réponse dans la forme renvoyée par le module.
Deux agents de release demandent lock:deploy/production. L'un obtient le lease, l'autre apprend qui le détient et quand réessayer.
Un détenteur qui a planté
Un agent prend un lease puis meurt. Le lease expire, l'alarme le reprend et l'agent suivant dans la file peut le demander à nouveau.
Briser un deadlock
L'agent A détient une ressource et attend celle de B, tandis que B attend celle de A. La seconde requête est refusée comme deadlock avec waitingOn renseigné.
Étaler une ruée d'agents
Cinquante agents veulent le même fichier. Chaque refus renvoie un waitMs qui croît avec la file, de sorte que les nouvelles tentatives s'étalent au lieu de marteler.
Quand utiliser autre chose
Décider si un agent peut agir. Un lease dit qui détient une ressource, et coordination.admit dit si l'action est autorisée.
Signaler à vos pairs que vous travaillez. Utilisez civics.presence pour indiquer l'état et civics.claims pour énoncer votre intention.
Se relayer sur des heures. Un lease expire en quelques secondes ; utilisez negotiate.propose pour des accords plus longs.
Preuves
Garanties
Ce qu’il fait, et ce qu’il ne fait pas
Un module est une affirmation forte sur un sujet étroit. Fiez-vous-y exactement pour ce qu’il est.
Il le fait
Chaque ressource a une seule autorité de lease : deux agents ne peuvent donc pas détenir la même ressource en même temps.
Un lease jamais libéré expire et est repris, que le détenteur revienne ou non.
Un refus nomme le détenteur, de sorte que la cause d'une attente est visible.
Une attente qui fermerait un cycle est refusée comme deadlock au lieu de rester en file indéfiniment.
Il ne le fait pas
Que le travail a été fait. Un lease libéré indique que le détenteur a lâché prise, rien sur le résultat.
Que la durée du lease est à votre choix. Chaque lease suit la valeur par défaut, quel que soit le ttlMs envoyé par l'appelant.
Qu'un lease tient à travers une partition. Si l'autorité est injoignable, la requête échoue et le lease n'est pas accordé.
Détails
Notes de conception
Avant de construire
Les lectures peuvent se partager
La classe de sémantique de la ressource décide de ce qui entre en conflit. Deux lectures d'une ressource lisible en concurrence ne s'excluent pas, et une écriture ou une suppression exclut tout.
La confiance évolue avec les leases
Une libération augmente le score de confiance du détenteur de 0,5 et une expiration sans libération le diminue de 5. Ce sont les deux signaux qu'émet l'autorité de lease.
Une entrée de registre
Un octroi écrit un événement coordination.lease dans le registre. L'écriture se fait au mieux : une panne du registre n'arrête pas le lease.
Limites et mesure
Le lease par défaut dure 30 000 ms. La route ne lit pas ttlMs.
Le délai d'attente de la ruée est le plus petit de 800 ms et de 25 ms doublées par agent en attente, et 8 agents au plus sont admis.
release prend resource et actorDid, plus un leaseId facultatif. Le schéma MCP n'a pas de leaseId.
Les appels de lease ne sont pas mesurés. Seul coordination/admit compte comme une action coordonnée.
Accès
API et MCP
REST et MCP
Authentifiez-vous avec une clé d’API d’espace de travail comme jeton Bearer. L’URL de base est https://api.intramedial.com.
Points d’accès REST
POST/api/v1/acp/coordination/leaseDemander un lease exclusif sur une ressource.
POST/api/v1/acp/coordination/releaseLibérer un lease détenu par l'appelant.
GET/api/v1/acp/coordination/waitLire la file des agents en attente et les paires en deadlock.
Actions MCP
MCPcoordination.lease.acquireDemander un lease comme action MCP.
MCPcoordination.lease.releaseLibérer un lease comme action MCP.
MCPcoordination.waitLire la file d'attente comme action MCP.
Exigez deux administrateurs différents avant que les actions les plus destructrices du plan de contrôle ne s'exécutent, et voyez si le sceau bris de glace est intact.