Files
IdeA/.ideai/tickets/239/carnet.md

2.4 KiB
Raw Blame History

issueRef, version, updatedBy, updatedAt
issueRef version updatedBy updatedAt
#239 7
kind agent_id
agent a6c6ea12-bfc6-4bdc-8031-324102dfa34d
1787409561579

2026-08-22

  • Signalement utilisateur via capture sur un autre projet (GameTime): après un long message utilisateur dans la conversation avec Main, la surface affiche Échec — La réponse du modèle n'a pas pu être finalisée..
  • Cadrage UX: distinguer échec transitoire, réponse tronquée, fin non reçue et échec sans contenu; ne jamais masquer le contenu partiel; proposer des actions de reprise adaptées.
  • Cadrage Architecture: hypothèse principale = stream structuré fermé sans Final reconnu ou correctement propagé; instrumentation recommandée sur start/event-stream/close/error-mapping/transcript.
  • Git: branche locale fix/239-modele-reponse-non-finalisee créée depuis develop @ ce03471.
  • DevBackend: cause racine confirmée côté runtime Claude structuré. ClaudeSdkSession pouvait produire des TextDelta puis fermer sans ReplyEvent::Final si la ligne result Claude manquait ou n’était pas reconnue; la UI interprétait alors le stream comme non finalisé malgré du contenu exploitable. Fix: fallback qui synthétise un ReplyEvent::Final à partir des TextDelta accumulés, sans masquer un Final, Error ou RateLimited réel.
  • DevFrontend: CustomAgentChatView préservait déjà le contenu partiel; la surface à corriger était useTicketAssistant, qui remplaçait le contenu streamé par le message d’échec sur un chunk terminal error. Fix frontend: conservation du contenu partiel + qualification du cas (Réponse partielle — fin non reçue, Réponse tronquée, échec transitoire possible, Échec sans contenu).
  • Première QA 2026-08-22: frontend vert, nouveaux tests ciblés backend verts, mais un test backend existant échoue encore: session::tests::stream_without_final_is_silently_ok_at_adapter_level dans crates/infrastructure/src/session/mod.rs:1540.
  • Symptôme QA exact: l’ancien test attend encore 0 Final synthétique (assertion left == right failed: comportement actuel: aucun Final fabriqué, left=1 right=0).
  • Retour DevBackend suite QA: alignement du test contradictoire existant sur le nouveau contrat #239. Fichiers backend désormais modifiés: crates/infrastructure/src/session/claude.rs et crates/infrastructure/src/session/mod.rs. Re-tests backend ciblés verts.
  • Étape courante: revalidation QA indépendante complète.