2026-08-01T20:01:34.654Z
Surveillance des agents pour l'annulation: saisir le travail des enfants orphelins
Construisez un reçu d'annulation qui prouve que les agents enfants et le travail externe ont effectivement cessé en rejoignant la lignée, les reconnaissances, les délais de grâce et les preuves d'effet.
Une demande d'annulation n'est pas la preuve qu'un agent de AI s'est arrêté. L'annulation est considérée comme vérifiée uniquement lorsque chaque descendant connu a été achevé avant la demande ou a reconnu l'arrêt, qu'aucun effet secondaire surveillé n'apparaît après un délai de grâce limité, et que tout emploi externe a un état reconcilié. Si un enfant continue à appeler des outils, à écrire des objets ou à dépenser des jetons après cette date limite, vous avez perdu votre travail. Le primitif pratique de surveillance des agents est un reçu de suppression : un enregistrement qui rejoint la demande des parents, la lignée descendante, les reconnaissances, la fenêtre de grâce, l'effet observé dernier, la couverture et le verdict final. Il s'avère que nous avons envoyé une annulation dans une réclamation inspectable qui peut être stopped , orphaned , ou uncertain . L'annulation est un protocole, pas un bouton. Les API d'annulation commencent généralement par communiquer l'intention. Node.js décrit AbortController comme un utilitaire qui signale l'annulation dans les API basées sur la promesse sélectionnées; son AbortSignal notifie les observateurs après que abort() soit appelé. Le signal de la bannière est la preuve que le contrôleur a tiré. Que chaque opération en aval ait observé le signal, arrêté de créer des effets et reconcilié le travail à distance est une question distincte. Le courant Documentation des tâches asyncio de Python rend une autre limite visible. L'annulation d'une tâche soulève CancelledError à la prochaine occasion, et le nettoyage de routine appartient à try/finally . La même documentation indique que TaskGroup annule les tâches restantes après une défaillance de non annulation et attend les tâches regroupées lorsque le contexte sort. La synchronisation structurée donne une durée de vie propre au travail associé; les tâches détachées feu et oubli nécessitent leurs propres références et la discipline du cycle de vie. Même un processus local terminé ne retire pas un e mail, ne supprime pas un objet téléchargé, n'annule pas un lot du côté du fournisseur ou n'arrête pas un enfant en cours d'exécution sur un autre hôte. Kubernetes documente de même une finition de Pod gracieuse comme un cycle de vie en phase avec une période de grâce, et met en garde qu'une phase Pod n'est qu'un résumé de haut niveau plutôt qu'une machine d'état complète. L'analogie est limitée, mais utile: une commande du cycle de vie et un effet externe final sont des preuves différentes. Pour les opérations de l'agent, suivez trois moments: 1. Requested: la société mère ou l'opérateur a émis l'annulation avec une raison et une autorité. 2. Aa reconnu: chaque descendant accessible a observé la demande et est entré en fermeture. 3. Vérifié: la date limite de grâce a passé sans nouvel effet de surveillance, et le travail externe a été réconcilié. Sauter le troisième moment crée une fausse récupération. Le parent semble calme tandis qu'un enfant détaché continue le comportement que vous aviez l'intention d'arrêter. Construire un reçu d'annulation autour de la lignée et des effets Vous ne pouvez pas vérifier les descendants que vous ne pouvez pas nommer. Donnez à chaque enfant un identifiant de course stable et conservez son identifiant de parent ou de root à travers les limites des passages, des files d'attente et de l'hôte. Les identifiants de trace sont utiles pour le transport, mais le contrat de suivi a également besoin de l'identité opérationnelle des emplois des fournisseurs et des effets secondaires. Un reçu minimal peut utiliser les champs suivants: champs Les preuves requises rootRunId Le champ d'application de l'annulation parentale descendantRunIds Tous les enfants connus au moment de la demande, plus les enfants découverts pendant la fermeture cancelRequestedAt Temps de la source, raison, acteur et référence de l'autorité cancelAckAt Reconnaissance par descendance, pas un booléen agrégé graceDeadlineAt Le dernier délai acceptable pour les effets d'arrêt lastEffectAt Dernier appel à l'outil, mutation d'artefact, demande de file d'attente, appel de modèle ou effet spécifique à la tâche effectCoverage complete , partial ou unavailable avec fraîcheur de source externalJobState Résumé du fournisseur, état d'annulation ou inconnu explicite verdict stopped , orphaned ou uncertain , plus les éléments de preuve décisifs Ne stockez pas les prompts ou les charges utiles d'outils bruts pour prouver la lignée. Les identifiants d'exécution opaques, les identifiants d'emploi du fournisseur, les classes d'exploitation, les timestamps et les digestes d'artefacts canoniques suffisent généralement. Réécrire des secrets sur l'hôte. Utilisez un ordre de décision conservateur: Au niveau familial, tout descendant orphelin fait l'annulation orphaned . Sinon, tout descendant incertain le rend uncertain . Seule une famille entièrement arrêtée gagne stopped . La couverture précède l'assurance. Un poste de fournisseur qui a accepté une demande d'annulation mais n'expose aucun signal d'état ou d'effet reste incertain; une observation manquante ne doit jamais être convertie en nothing happened. Testez le reçu contre cinq familles d'annulation L'artefact qui l'accompagne évalue cinq familles synthétiques parent enfant contenant six descendants. Chaque famille a un verdict prédéterminé et un délai de cinq secondes. Cinq secondes est une valeur fixe, pas une recommandation de production. Le rapport exécutable reproduit tous les verdicts attendus: Le clean lineage contient deux descendants. Ils reconnaissent en une ou deux secondes, et aucun ne produit un effet de surveillance après le délai de cinq secondes. already finished n'a pas besoin d'une attestation car son enfant a été terminé avant que l'annulation ne soit demandée. Les deux familles sont stopped . post deadline effect est l'affaire de l'adversaire. Son enfant reconnaît en une seconde, mais un autre effet outil apparaît neuf secondes après la demandequatre secondes après la date limite. Un moniteur qui n'enregistre que cancelAckAt rapporterait le succès. Le reçu renvoie orphaned . Le missing ack n'a ni un canal de reconnaissance ni un canal d'effet silencieux: son travailleur détaché produit un effet après la date limite. Il s'agit aussi de orphaned . external unknown reconnaît rapidement, mais la couverture des effets du fournisseur externe n'est pas disponible, donc le verdict reste uncertain . L'appareil prouve que la règle distingue ces affaires faites à la main. Il n'estime pas la fréquence avec laquelle le travail orphelin se produit dans la production ou ne valide pas une période de grâce universelle. L'instrument la limite où les effets se produisent Commencez par des vies structurées à l'intérieur d'un processus. Préférer un groupe de tâches ou une portée équivalente qui possède des descendants, propage l'annulation et attend la fermeture. Passer un signal d'annulation dans les requêtes de modèle, les appels à l'outil, les files d'attente et les sous processus locaux lorsque l'API le prend en charge. Un enfant qui engendre un autre enfant doit l'enregistrer avec la même lignée racinaire avant le début du travail. Puis des effets d'inventaire qui peuvent survivre au contrôle local: les lots du côté du fournisseur et les emplois de fond; les messages en file d'attente déjà réclamés par un travailleur; les sous processus et les séances à distance; les téléchargements, les commissions, les mutations de la base de données et les messages publics; les appels à l'aide de modèles ou d'outils mesurés déjà acceptés en amont. Pour chaque classe d'effet, définissez la condition d'arrêt observée la plus forte. Un sous processus local peut exposer l'heure de sortie et l'identité de PID. Un poste de fournisseur a besoin d'un reçu d'annulation et d'un état de fournisseur de terminal. Un téléchargement peut être irréversible après l'engagement; la surveillance peut vérifier qu'aucune version d'objet ultérieure n'est apparue, mais elle ne peut pas prétendre que le premier téléchargement a été annulé. Choisissez la fenêtre de grâce du comportement d'arrêt réel. Mesurer séparément la latence de reconnaissance et la latence d'effet, puis ajouter des tampons de clock skew et de transport explicites. Un outil réseau peut reconnaître immédiatement une demande déjà acceptée lorsqu'un serveur l'achève. Cet intervalle est dans le reçu. Gardez l'heure de l'événement et l'heure d'ingestion. Un paquet de télémétrie arrivant en retard peut sembler un travail post annulation même si son timestamp source est antérieur à la date limite. Classifier en utilisant le timestamp de source fiable lorsqu'il est disponible, retenir le retard d'ingestion et retourner incertain lorsque les horloges ou les commandes ne peuvent pas être reconciliées. Enfin, testez les sentiers malheureux: le gestionnaire ne lit jamais le signal d'annulation; une corroutine arrête l'annulation et continue de fonctionner; un enfant manque de la lignée racinaire; la tâche locale s'arrête, mais le travail d'un fournisseur à distance se poursuit; un événement tardif survient après la fenêtre de surveillance; l'API d'état externe n'est pas disponible. Revoir ces appareils avant de joindre des alertes ou des mesures de récupération au verdict. Répondre au travail orphelin sans étendre l'autorité Un verdict orphaned est une preuve pour enquête, pas une autorisation générale pour tuer des processus ou inverser les effets. Montrez au descendant, le dernier effet, l'autorité d'annulation, la grâce écoulée, et l'action la plus sûre limitée. Un enfant local réversible peut être admissible à une tentative d'arrêt approuvée. Un travail de fournisseur à distance a besoin d'une opération d'annulation soutenue. Un message public, une écriture destructrice ou un changement d'identité peuvent nécessiter une personne et une action compensatoire. Ne pas éliminer le problème parce qu'une deuxième commande annulation a été couronnée de succès. Il ne doit être nettoyé qu'après que le descendant a cessé de produire l'effet de surveillance et que l'état externe concerné a été réconcilié. Si la couverture reste partielle, gardez le verdict incertain et dites quel signal manque. La méthode a aussi des limites. La lignée peut être incomplète, les identifiants peuvent être réutilisés de manière incorrecte, les horloges peuvent dériver et certains effets secondaires n'ont pas d'état consultable. Une fenêtre silencieuse ne couvre que les effets que vous avez joués. Il ne peut pas prouver l'absence d'un enfant inconnu. La règle d'exploitation est étroite: envoyer l'annulation par la lignée propriétaire, collecter la reconnaissance par enfant, observer les effets spécifiques à la tâche à travers une fenêtre de grâce limitée, concilier les emplois externes et préserver les inconnus. C'est suffisant pour attraper le faux arrêt le plus dangereux: un parent silencieux avec un enfant qui agit encore. Sidewisp est actuellement en préversion privée. Son site public et sa bibliothèque d'articles sont en direct, mais la collecte de l'agent de production santé, les adaptateurs de temps d'exécution et la récupération ne sont généralement pas expédiés. Le Sidewisp est conçu pour fonctionner aux côtés des temps d'exécution existants, et non comme un fixateur de remplacement de l'heure d'exécution ou de fixation autonome. Si l'intégrité de l'annulation est un signal de santé dont vous avez besoin, vous pouvez rejoindre l'accès anticipé sans considérer l'aperçu comme une revendication de surveillance déployée.