Clôture #114/#115/#116/#117, suppression #111, ouverture #119/#120/#121, notes mémoire root-cause #113 et angle d'investigation #120. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.1 KiB
3.1 KiB
id, number, title, status, priority, sprint, links, agentRefs, attachments, createdBy, updatedBy, createdAt, updatedAt, version
| id | number | title | status | priority | sprint | links | agentRefs | attachments | createdBy | updatedBy | createdAt | updatedAt | version | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 66e80f94-780b-4856-806d-ba4b96673630 | 117 | Garantir la synchronie métier de idea_ask_agent malgré les background tasks | closed | high | null |
|
|
|
1785500280516 | 1785503128343 | 7 |
Constat : quand un agent A délègue une demande à un agent B via idea_ask_agent, B peut lancer une background task puis terminer son tour avant que cette tâche ne finisse. Dans ce cas, A peut recevoir une pseudo-réponse terminale trop tôt, alors que le travail réel n'est pas terminé.
Décision produit validée : idea_ask_agent doit rester synchrone d'un point de vue métier.
Cela implique :
Ane doit jamais recevoir comme réponse métier finale un simple "task lancée" si le résultat utile dépend encore d'une background task.- si
Ba besoin d'une background task pour produire sa réponse, la délégationA -> Breste ouverte. - la background task est une étape interne du traitement de
B, pas une réponse àA. - à la fin de la task, IdeA réveille
B, puisBrend la vraie réponse finale. Areste en attente du rendez-vous logique, même si techniquement le tour initial deBs'est terminé.
Objectif :
Faire en sorte qu'une background task lancée pendant un idea_ask_agent soit corrélée au rendez-vous inter-agent en cours, et que ce rendez-vous reste ouvert jusqu'à la réponse finale métier de B.
Invariants à garantir :
idea_ask_agentne se termine jamais par "task lancée" si le résultat utile dépend encore d'une background task.- toute background task lancée pendant une délégation porte la corrélation du rendez-vous source.
- la complétion de task réveille
B, pasAdirectement. Btransforme ensuite le résultat en vraie réponse finale àA.- la réponse capturée pour
An'est émise qu'après clôture logique du travail. - reboot, cancel, timeout et échec de task ne doivent pas casser cette corrélation.
Découpage attendu :
- Étendre le modèle de corrélation pour rattacher une background task à un rendez-vous délégué.
- Introduire un état explicite de rendez-vous du type
WaitingOnBackgroundTaskou équivalent. - Empêcher la clôture terminale d'un
idea_ask_agenttant qu'une task corrélée est encore ouverte. - À la complétion, réveiller
B, injecter le résultat dans son inbox, puis laisserBrépondre àA. - Ajouter les tests de reprise après reboot, timeout, cancel et double complétion.
Critères de validation :
Adélègue àB,Blance une task longue,An'obtient pas de faux terminal.- à la fin de la task,
Best réveillé et répond finalement àA. - après redémarrage, la réponse finale revient encore à
A. - échec ou annulation de task produisent une réponse terminale cohérente côté
A. - aucune complétion ne reste orpheline hors du rendez-vous initial.