Files
IdeA/.ideai/tickets/117/issue.md
Blomios 5efb026a80 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>
2026-07-31 23:52:33 +02:00

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
agentId role
a6ced819-b893-4213-b003-9e9dc79b9641 assigned
kind
user
kind agent_id
agent cd0b4cf1-1bef-4fae-ade5-f0a6b49bbaf5
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 :

  • 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.