- 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>
126 lines
13 KiB
Markdown
126 lines
13 KiB
Markdown
---
|
|
issueRef: "#149"
|
|
version: 25
|
|
updatedBy: {"kind":"user"}
|
|
updatedAt: 1785964173499
|
|
---
|
|
# Historique des tentatives
|
|
|
|
## 2026-08-05 — Implementation frontend bornee `cellKind` + validation QA verte
|
|
- **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**:
|
|
1. `frontend/src/adapters/agent.ts` relaie maintenant `cellKind` dans `LaunchAgentResponse` et refuse explicitement toute reponse `cellKind !== "chat"` dans `launchAgentChat()`.
|
|
2. En cas de routage non-chat, le frontend loggue `[ticket149] launchAgentChat:routed-to-non-chat` avec requete/reponse completes et leve `STRUCTURED_ROUTED_TO_PTY` **avant** de publier un faux `sessionId` structure.
|
|
3. `frontend/src/ports/index.ts` borne `AgentChatHandle` avec `cellKind: "chat"`.
|
|
4. `frontend/src/adapters/mock/index.ts` est aligne avec `cellKind: "chat"`.
|
|
5. 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**:
|
|
1. `cd frontend && npx vitest run src/adapters/agent.test.ts src/features/agents/CustomAgentChatView.test.tsx` -> succes ; `2 passed`, `23 passed`.
|
|
2. `cd frontend && npx vitest run` -> succes ; `116 passed`, `1102 passed`.
|
|
3. `cd frontend && npm run build` -> succes ; `tsc --noEmit && vite build` OK.
|
|
4. 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**:
|
|
1. `cd frontend && npx vitest run src/adapters/agent.test.ts src/features/agents/CustomAgentChatView.test.tsx` -> succes ; `Test Files 2 passed`, `Tests 23 passed`.
|
|
2. `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:
|
|
1. `STRUCTURED_ROUTED_TO_PTY` -> anomalie de routage/runtime a creuser ;
|
|
2. aucune erreur mais retombee -> bug frontend post-DTO restant ;
|
|
3. 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**:
|
|
1. `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`.
|
|
2. `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.
|
|
3. Delegation `Architect` -> succes ; recadrage: ne plus traiter `LayoutGrid` ni le simple `NOT_FOUND` comme racine sans preuve runtime nouvelle.
|
|
4. 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`.
|
|
5. 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.
|
|
6. 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`
|
|
- **HEAD courant** : `7071c53b` (fix frontend NOT_FOUND)
|
|
- **Worktree** : modifications uniquement `.ideai/*` (métadonnées), aucun code source
|
|
|
|
### Décision Git EXPLOITABLE
|
|
1. **Branche à conserver** : `feature/ticket149-customchat-session-instrumentation` (contient `ce9ba0dc` et `7071c53b` qui ne sont PAS dans `develop`)
|
|
2. **Statut worktree** : RISQUE MINIMAL - modifications uniquement `.ideai/*`, pas de conflit prévisible
|
|
3. **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
|
|
4. **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:
|
|
1. Toujours vérifier si le symptôme observé se produit **avant** ou **après** la création de session structurée
|
|
2. Si avant: se concentrer sur le pipeline d'initialisation, pas sur la gestion des erreurs de session
|
|
3. Si après: alors seulement considérer la gestion `NOT_FOUND` / reattach
|
|
4. 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**:
|
|
1. Toute nouvelle tentative doit noter si le correctif vise **profil/config**, **routing backend**, ou **frontend** ; ne plus melanger ces pistes dans une meme iteration.
|
|
2. Aucun nouveau patch frontend de fallback/reattach tant qu'on n'a pas prouve que le backend renvoie bien `cellKind:"chat"`.
|
|
3. Toute validation doit citer la commande exacte et le type de preuve: test unitaire, test integration, ou repro runtime AppImage/Tauri.
|
|
4. 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.
|