- Met à jour le carnet avec la preuve runtime returned cellKind=pty; expected chat
- Documente les hypothèses invalidées et la nouvelle cible de correction
- Met à jour issue.md avec le titre et le diagnostic consolidés
- Incrémente le compteur et ajoute les tickets 150-158 à l'index
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Pourquoi cette tentative change d'hypothese: on ne repart pas sur LayoutGrid ni sur un nouveau patch NOT_FOUND. La tentative cible explicitement le desalignement possible entre la reponse reelle de launch_agent et ce que le frontend croit lancer en session structuree.
Manip/code reel cote DevFrontend:
frontend/src/adapters/agent.ts relaie maintenant cellKind dans LaunchAgentResponse et refuse explicitement toute reponse cellKind !== "chat" dans launchAgentChat().
En cas de routage non-chat, le frontend loggue [ticket149] launchAgentChat:routed-to-non-chat avec requete/reponse completes et leve STRUCTURED_ROUTED_TO_PTYavant de publier un faux sessionId structure.
frontend/src/ports/index.ts borne AgentChatHandle avec cellKind: "chat".
frontend/src/adapters/mock/index.ts est aligne avec cellKind: "chat".
Tests ajoutes/etendus:
frontend/src/adapters/agent.test.ts: cas cellKind: "chat" accepte + cas cellKind: "pty" refuse.
frontend/src/features/agents/CustomAgentChatView.test.tsx: non-regression garantissant qu'un lancement route vers PTY ne publie pas de sessionId et n'appelle pas reattachAgentChat.
Commandes executees par DevFrontend et resultat exact:
cd frontend && npx vitest run src/adapters/agent.test.ts src/features/agents/CustomAgentChatView.test.tsx -> succes ; 2 passed, 23 passed.
cd frontend && npx vitest run -> succes ; 116 passed, 1102 passed.
cd frontend && npm run build -> succes ; tsc --noEmit && vite build OK.
tentative de commit locale -> echec sandbox: fatal: Unable to create '/home/anthony/Documents/Projects/IdeA/.git/index.lock': Read-only file system ; aucun commit cree dans ce tour.
Validation QA reelle sur commande:
cd frontend && npx vitest run src/adapters/agent.test.ts src/features/agents/CustomAgentChatView.test.tsx -> succes ; Test Files 2 passed, Tests 23 passed.
cd frontend && npm test -> succes ; Test Files 116 passed, Tests 1102 passed.
Verdict QA: lot frontend vert sur la branche feature/ticket149-customchat-session-instrumentation.
Resultat exact de cette tentative:
le frontend ne peut plus accepter silencieusement une reponse launch_agent routee en PTY comme si c'etait une vraie session chat structuree ;
si le runtime route en pty, l'erreur devient explicite et exploitable, sans publication de faux sessionId ni boucle de reattach impossible.
Risque residuel maintenu explicitement:
ce verdict reste un verdict frontend/tests ; il manque encore la preuve runtime Tauri/AppImage du comportement reel sur un clic utilisateur, en particulier pour confirmer si le backend renvoie effectivement cellKind: "pty" dans le cas qui t'affecte.
Etape suivante:
faire retester la CLI custom sur le runtime reel contenant ce diff ; selon le message exact observe, trancher entre:
STRUCTURED_ROUTED_TO_PTY -> anomalie de routage/runtime a creuser ;
aucune erreur mais retombee -> bug frontend post-DTO restant ;
autre erreur -> nouveau symptome a classifier avec les logs [ticket149].
2026-08-05 — Reprise Main: recadrage borne pour casser la boucle
Retour utilisateur de cette reprise: la CLI custom ne se relance toujours pas, et le probleme est confirme comme etant anterieur a la tentative de fix sur not found: structured session ....
Commandes / manipulations reelles executees:
git -C /home/anthony/Documents/Projects/IdeA status --short --branch -> succes ; branche feature/ticket149-customchat-session-instrumentation, changements uniquement .ideai/* + changement non lie .ideai/idea-android-plugin.json.
git -C /home/anthony/Documents/Projects/IdeA log --oneline --decorate -n 15 -> succes ; HEAD 7071c53b, avec historique des fixes ce9ba0dc et des commits d'instrumentation/journalisation.
Delegation Architect -> succes ; recadrage: ne plus traiter LayoutGrid ni le simple NOT_FOUND comme racine sans preuve runtime nouvelle.
Delegation DevFrontend -> succes ; nouvelle piste concrete: l'adapter frontend ignore cellKind dans la reponse de launch_agent, alors que le backend peut router effectivement en pty.
Delegation DevBackend -> succes ; confirmation que reattach_agent_chat n'est pas une cause racine et qu'un NOT_FOUND est coherent si aucune session structuree stable n'a existe.
Delegation Git -> l'agent n'a pas rendu de reponse exploitable ; la decision court terme reste celle deja consignée: conserver la branche actuelle et interdire tout merge direct vers develop.
Decision de pilotage issue de cette reprise:
Le message not found: structured session ... est desormais a classer comme symptome secondaire.
La prochaine preuve utile n'est pas un nouveau patch speculatif, mais la reponse brute de launch_agent au moment du clic CLI custom: sessionId, cellKind, assignedConversationId, engineSessionId.
Nouvelle hypothese de travail prioritaire:
Si launch_agent repond cellKind: "pty", le frontend croit a tort avoir ouvert une session structuree et entre ensuite dans une boucle de reattach impossible.
Si aucun launch_agent n'est appele, le bug est frontend pre-launch.
Si cellKind: "chat" revient bien et que la vue retombe quand meme, le bug est frontend post-DTO.
Interdictions explicites pour eviter de reboucler:
ne pas refaire une nouvelle variation de shouldFallbackCustomCliMode / LayoutGrid.tsx ;
ne pas ajouter encore du handling NOT_FOUND dans CustomAgentChatView.tsx ;
ne pas reconsiderer l'echo sessionId comme cause racine ;
ne pas pointer reattach_agent_chat tant qu'on n'a pas prouve qu'une vraie session chat a existe juste avant.
Etape suivante imposee:
demander a DevFrontend un patch borne d'instrumentation/guard sur LaunchAgentResponse.cellKind pour distinguer explicitement chat vs pty au moment du lancement custom, puis faire valider ce comportement par QA sur un repro reel.
2026-08-05 — Décision Git court terme
État Git actuel
Branche active : feature/ticket149-customchat-session-instrumentation
Branche à conserver : feature/ticket149-customchat-session-instrumentation (contient ce9ba0dc et 7071c53b qui ne sont PAS dans develop)
Statut worktree : RISQUE MINIMAL - modifications uniquement .ideai/*, pas de conflit prévisible
Politique commit/merge : INTERDICTION de merge direct vers develop. STRATÉGIE : cherry-pick sélectif des fixes fonctionnels (ce9ba0dc et/ou 7071c53b) seulement quand validé, jamais les commits d'instrumentation
Règle anti-boucle : NE PAS retoucher LayoutGrid.tsx fallback pour une 4e fois sans trace runtime nouvelle. 3 tentatives sans effet valide, et TOUJOURS vérifier que le binaire testé contient bien les commits source (date AppImage vs date commit)
2026-08-05 — NOUVEAU RECADRAGE APRES RETOUR UTILISATEUR CRITIQUE
Retour utilisateur: "je ne peux de nouveau plus lancer la cli custom" ET "on tourne en rond, c'etait deja le souci avant qu'on essaie de regler le message not found: structured session ..."
Consequence decisive: le message NOT_FOUND N'EST PAS le bug source. Le bug original est revenu: la CLI custom s'ouvre 1/2 seconde puis retombe vers Plain/TUI avant meme qu'une session structurée soit créée.
Racine architecturale identifiée: le symptôme NOT_FOUND n'était qu'un symptôme secondaire d'une tentative de reattach sur une session qui n'a jamais réussi à se stabiliser. Le vrai problème est dans le pipeline de création/initialisation de session entre l'action utilisateur et la stabilisation effective.
Hypothèses INVALIDÉES (ne plus jamais retenter):
✗ Fallback premature dans LayoutGrid.tsx pendant chargement catalogue (3 tentatives sans effet)
✗ Echo sessionId auto-émis dans CustomAgentChatView (fixé mais n'a pas résolu le symptôme)
✗ Absorption de la forme brute NOT_FOUND (symptôme secondaire, pas la racine)
✗ reattach_agent_chat backend (idempotent par design, jamais démontré fautif)
Périmètre DEVFRONTEND (nouvelle hypothèse):
Investiger le pipeline complet d'initialisation custom — depuis l'action utilisateur jusqu'à la stabilisation de la session — en identifiant où la transition custom→Plain se produit AVANT même l'appel launch_agent.
Vérifier particulièrement si un effet React ou une validation dans CustomAgentChatView ou LayoutGrid interrompt l'ouverture AVANT la création de session.
Périmètre DEVBACKEND (nouvelle hypothèse):
Vérifier la logique d'initialisation de session structurée côté Rust — en particulier si launch_agent peut échouer silencieusement ou retourner un état non valide qui déclenche un fallback frontend.
Règle stricte pour les prochaines entrées de carnet:
Toujours vérifier si le symptôme observé se produit avant ou après la création de session structurée
Si avant: se concentrer sur le pipeline d'initialisation, pas sur la gestion des erreurs de session
Si après: alors seulement considérer la gestion NOT_FOUND / reattach
Documenter explicitement le point chronologique exact du fail dans chaque tentative
2026-08-05 — Nouvelle preuve runtime: returned cellKind=pty; expected chat
Retour utilisateur exact: custom CLI launch for agent a6c6ea12-bfc6-4bdc-8031-324102dfa34d in project 97b49ac2-8376-4aa3-8ea9-bf3ac81d0023 returned cellKind=pty; expected chat. sessionId=28b18fd2-e70c-4509-a633-e57e568234d9; nodeId=3e5d083c-4d04-41d6-a4e9-2970fc5b1fd6.
Ce que cette preuve tranche:
le frontend a bien envoye une intention chat et a correctement refuse une reponse backend routee en pty ;
le symptome n'est donc plus un fallback UI silencieux ni un NOT_FOUND tardif ;
la prochaine cible de correction est le routage backend/launcher humain ou le contrat de profil structured, pas LayoutGrid.tsx ni un nouveau handling frontend du NOT_FOUND.
Retour Architecture:
cause probable: profil de l'agent sans structured_adapter effectif ou routage backend qui ne transforme pas l'intention cellKind:"chat" en exigence structured ;
cellKind cote DTO est derive de la presence d'une session structured, donc pty prouve l'absence de session structured reelle au runtime.
Retour DevFrontend:
le frontend fait maintenant ce qu'on attend face a pty ;
le message observe vient explicitement du garde launchAgentChat() et constitue une preuve que le runtime a renvoye cellKind: "pty" a une demande chat.
Retour DevBackend:
points de verite signales: crates/application/src/agent/lifecycle.rs pour le routage LaunchAgent::execute, crates/backend/src/dto.rs pour la derivation de cellKind, crates/app-tauri/src/commands.rs pour la conversion de la requete Tauri ;
cause probable la plus plausible: le launch humain ne propage pas toujours correctement l'intention chat jusqu'au routage structured, ce qui laisse un fallback PTY possible.
Hypotheses INVALIDÉES supplementaires:
✗ refaire un patch CustomAgentChatView pour tolérer pty ; ce serait masquer un contrat casse ;
✗ revenir encore sur les effets de chargement catalogue / LayoutGrid.tsx ; la preuve runtime est plus forte ;
✗ traiter sessionId=28b18fd2-e70c-4509-a633-e57e568234d9 comme une vraie session structured ; le backend a explicitement renvoye cellKind=pty.
Règles anti-boucle a respecter desormais:
Toute nouvelle tentative doit noter si le correctif vise profil/config, routing backend, ou frontend ; ne plus melanger ces pistes dans une meme iteration.
Aucun nouveau patch frontend de fallback/reattach tant qu'on n'a pas prouve que le backend renvoie bien cellKind:"chat".
Toute validation doit citer la commande exacte et le type de preuve: test unitaire, test integration, ou repro runtime AppImage/Tauri.
Si un message futur mentionne encore returned cellKind=pty; expected chat, classer immediatement l'echec comme routage/backend ou contrat profil, pas comme regression NOT_FOUND.
Prochaine etape imposee:
faire valider par QA les tests backend/frontend lies a cette propagation chat -> structured, puis demander a Git de cadrer le commit local du correctif backend si la worktree contient bien le diff correspondant.