chore(tickets): journalise le correctif session echo #149
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -96,4 +96,31 @@ updatedAt: 1785934744273
|
||||
- Conclusion de cette tentative:
|
||||
- aucune correction fonctionnelle n'est encore appliquee ; cette iteration sert a capturer une trace exploitable sur le repro reel.
|
||||
- prochaine etape obligatoire: reproduire le bug dans l'app avec la console ouverte et filtrer les logs `[ticket149]` pour capturer la sequence complete (`openOrAttach:start`, `launchAgentChat`, `reattachStructuredSession`, `vm.setSession`, `shouldFallbackCustomCliMode`).
|
||||
- la tentative suivante devra partir de cette trace runtime et non d'une nouvelle hypothese speculative sur `LayoutGrid.tsx`.
|
||||
- la tentative suivante devra partir de cette trace runtime et non d'une nouvelle hypothese speculative sur `LayoutGrid.tsx`.
|
||||
|
||||
## 2026-08-05 — Correctif minimal CustomAgentChatView/sessionId echo
|
||||
- Branche reelle: `feature/ticket149-customchat-session-instrumentation`, depart de cette reprise sur HEAD `525ea94b`, commit produit `ce9ba0dc` (`fix(chat): ignore self-emitted custom session echoes`).
|
||||
- Manip/code reel:
|
||||
1. inspection statique de `frontend/src/features/agents/CustomAgentChatView.tsx` et du test co-localise ;
|
||||
2. correction limitee a `CustomAgentChatView.tsx`: separation d'un `sessionId` externe (`externalSessionId`) et des `sessionId` auto-emis par le composant via `publishSessionId` / `selfEmittedSessionIdRef` ;
|
||||
3. l'effet `openOrAttach` ne depend plus de la prop brute `sessionId`, donc l'echo parent d'un `onSessionId(launched.sessionId)` ne nettoie plus l'ouverture en cours et ne relance plus `reattachStructuredSession` ;
|
||||
4. aucun changement fonctionnel dans `LayoutGrid.tsx`.
|
||||
- Test de non-regression ajoute: `CustomAgentChatView.test.tsx` simule un parent qui reinjecte le `sessionId` publie par le composant et verifie qu'un lancement neuf ne produit qu'un seul `launchAgentChat` et un seul `reattachAgentChat`.
|
||||
- Commandes executees et resultat:
|
||||
1. `npx vitest run src/features/agents/CustomAgentChatView.test.tsx` -> succes ; 1 fichier, 8 tests.
|
||||
2. `npx vitest run src/features/layout/LayoutGrid.chat.test.tsx` -> succes ; 1 fichier, 9 tests.
|
||||
3. `npm test` -> succes ; 116 fichiers, 1097 tests.
|
||||
4. `git diff --check` -> succes.
|
||||
5. tentative locale `git add ... && git commit ...` -> echec sandbox attendu: impossible de creer `.git/index.lock` (`Read-only file system`) ; delegation a l'agent Git.
|
||||
6. agent Git -> commit cree `ce9ba0dc`, worktree propre, `LayoutGrid` non touche.
|
||||
- Observation importante pendant les tests:
|
||||
- une premiere version du garde-fou a fait echouer `LayoutGrid.chat.test.tsx` car l'effet dependait encore de la prop brute et le cleanup React annulait l'ouverture en cours, laissant `opening=true`.
|
||||
- la version commitee corrige ce point en filtrant l'echo dans un effet separe et en ne relancant `openOrAttach` que sur changement externe effectif.
|
||||
- Resultat observe:
|
||||
- preuve statique traitee: la boucle d'effet `sessionId` auto-emis -> parent -> prop -> `openOrAttach` est neutralisee.
|
||||
- validation runtime utilisateur non faite dans ce tour ; le symptome terrain doit etre reteste sur un binaire reconstruit contenant `ce9ba0dc`.
|
||||
- Suite si le bug persiste encore en repro utilisateur:
|
||||
1. ne pas refaire une 5e variation speculative de `LayoutGrid.tsx`;
|
||||
2. rebuild/reinstall AppImage depuis la branche contenant `ce9ba0dc`, relancer IdeA, puis retester ;
|
||||
3. si la cellule retombe encore vers Plain/TUI, capturer les logs `[ticket149]` au moment exact du repro et comparer: `openOrAttach:self-session-echo:skip`, `vm.setSession`, `shouldFallbackCustomCliMode`, `customCliAvailable`, `effectiveCustomCliAvailable`, `trustedCustomCli`;
|
||||
4. si les logs montrent que `openOrAttach` reste stable, la prochaine hypothese doit sortir de `CustomAgentChatView` et porter sur la condition de rendu `customCliAgent/customCliProfile/effectiveCustomCliAvailable` ou sur un evenement externe qui remplace le mode/vue, avec trace runtime avant patch.
|
||||
|
||||
Reference in New Issue
Block a user