chore(tickets): synchronise l'état runtime des tickets et de la mémoire
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>
This commit is contained in:
6
.ideai/tickets/117/carnet.md
Normal file
6
.ideai/tickets/117/carnet.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
issueRef: "#117"
|
||||
version: 7
|
||||
updatedBy: {"kind":"agent","agent_id":"cd0b4cf1-1bef-4fae-ade5-f0a6b49bbaf5"}
|
||||
updatedAt: 1785503128343
|
||||
---
|
||||
51
.ideai/tickets/117/issue.md
Normal file
51
.ideai/tickets/117/issue.md
Normal file
@ -0,0 +1,51 @@
|
||||
---
|
||||
id: "66e80f94-780b-4856-806d-ba4b96673630"
|
||||
number: 117
|
||||
title: "Garantir la synchronie métier de idea_ask_agent malgré les background tasks"
|
||||
status: "closed"
|
||||
priority: "high"
|
||||
sprint: null
|
||||
links: []
|
||||
agentRefs: [{"agentId":"a6ced819-b893-4213-b003-9e9dc79b9641","role":"assigned"}]
|
||||
attachments: []
|
||||
createdBy: {"kind":"user"}
|
||||
updatedBy: {"kind":"agent","agent_id":"cd0b4cf1-1bef-4fae-ade5-f0a6b49bbaf5"}
|
||||
createdAt: 1785500280516
|
||||
updatedAt: 1785503128343
|
||||
version: 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 :
|
||||
- `A` ne 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 `B` a besoin d'une background task pour produire sa réponse, la délégation `A -> B` reste 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`, puis `B` rend la vraie réponse finale.
|
||||
- `A` reste en attente du rendez-vous logique, même si techniquement le tour initial de `B` s'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_agent` ne 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`, pas `A` directement.
|
||||
- `B` transforme ensuite le résultat en vraie réponse finale à `A`.
|
||||
- la réponse capturée pour `A` n'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 :
|
||||
1. Étendre le modèle de corrélation pour rattacher une background task à un rendez-vous délégué.
|
||||
2. Introduire un état explicite de rendez-vous du type `WaitingOnBackgroundTask` ou équivalent.
|
||||
3. Empêcher la clôture terminale d'un `idea_ask_agent` tant qu'une task corrélée est encore ouverte.
|
||||
4. À la complétion, réveiller `B`, injecter le résultat dans son inbox, puis laisser `B` répondre à `A`.
|
||||
5. Ajouter les tests de reprise après reboot, timeout, cancel et double complétion.
|
||||
|
||||
Critères de validation :
|
||||
- `A` délègue à `B`, `B` lance une task longue, `A` n'obtient pas de faux terminal.
|
||||
- à la fin de la task, `B` est 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.
|
||||
Reference in New Issue
Block a user