31 lines
4.5 KiB
Markdown
31 lines
4.5 KiB
Markdown
---
|
||
issueRef: "#231"
|
||
version: 13
|
||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||
updatedAt: 1787337990284
|
||
---
|
||
2026-08-20 Main
|
||
- Ticket créé suite au signalement utilisateur sur la version web de la custom CLI.
|
||
- Recherche code: occurrences de `chat.send` côté frontend et docs; le serveur web possède un rejet générique `unknown websocket frame kind`.
|
||
- Architect: cause immédiate backend `crates/web-server`; le frontend consomme déjà correctement le contrat `chat.*`.
|
||
- Git: branche de travail `fix/231-web-custom-cli-chat-send` créée depuis `develop`.
|
||
- DevBackend a livré le support WS structured chat côté `crates/web-server` avec tests ciblés verts.
|
||
- QA indépendant: `cargo fmt --package web-server --check` OK; `cargo check -p web-server` OK; `cargo test -p web-server websocket_chat -- --nocapture` OK; `cargo test -p web-server websocket -- --test-threads=1` OK.
|
||
- QA: `cargo test -p web-server` ROUGE avec `Too many open files (os error 24)`; en mono-thread il reste 7 échecs PTY/WebSocket terminal historiques, hors preuve d’un défaut du ticket `chat.*`.
|
||
- Conclusion QA: périmètre utilisateur structured chat websocket VALIDÉ, suite complète crate non verte dans cet environnement.
|
||
|
||
2026-08-21 Main
|
||
- Ticket réouvert et redéfini pour l’erreur de fin de tour `Le modèle n'a renvoyé aucune réponse.`
|
||
- UX: le message actuel est un faux diagnostic; recommandation par défaut plus neutre `La réponse n’a pas pu être affichée.` tant que la cause n’est pas classée.
|
||
- Architect: la cause historique `mauvais Final Codex choisi` n’est plus l’hypothèse prioritaire; distinction clé = vérifier s’il existe un `ReplyChunk::Final` dans le scrollback de la session fautive.
|
||
- Lecture code: `crates/app-tauri/src/commands.rs` synthétise ce message uniquement si le drain se termine sans chunk terminal visible (`Final`/`Error`) et sans texte streamé.
|
||
- DevBackend: cause la plus plausible aujourd’hui = un adapter provider ferme le flux sans émettre `ReplyEvent::Final`; un `Final` vide produirait un autre message (`Réponse vide du modèle.`), et une perte bridge/UI est jugée moins probable.
|
||
- QA: les tests couvrent déjà bien `pas de Final` côté bridge et la purge d’un stale no-response au replay, mais pas un scénario live instrumenté qui prouve `Final reçu par l’UI puis perdu à l’affichage`.
|
||
- Architect (fix concret): priorité backend = rendre impossible un succès structured sans `Final`, ou au minimum remonter une erreur typée explicite plutôt que laisser le bridge synthétiser un faux diagnostic; fallback UX neutre recommandé: `La réponse du modèle n'a pas pu être finalisée.` / `Le tour du modèle s'est terminé sans réponse finale exploitable.`
|
||
- Git: plan validé = parquer le WIP #117 en commit local sur sa branche, créer une branche dédiée `fix/231-modele-aucune-reponse` depuis `develop` @ `c1d7f6d`, livrer #231 isolément, puis revenir merger `develop` dans #117.
|
||
- Git a créé le commit WIP local `06c4c16` sur `feature/117-ask-agent-sync-background-tasks` et la branche dédiée `fix/231-modele-aucune-reponse` depuis `develop` @ `c1d7f6d`.
|
||
- DevBackend a livré le correctif minimal sur `fix/231-modele-aucune-reponse`: suppression du faux diagnostic `Le modèle n'a renvoyé aucune réponse.`; EOF structured sans `Final` devient une erreur explicite `La réponse du modèle n'a pas pu être finalisée.`; le cas `Final` vide conserve `Réponse vide du modèle.`.
|
||
- Fichiers touchés: `crates/app-tauri/src/chat.rs`, `crates/app-tauri/src/commands.rs`, `crates/app-tauri/tests/chat_bridge.rs`, `crates/app-tauri/tests/dto.rs`.
|
||
- DevBackend a exécuté: `cargo fmt`; `cargo test -p app-tauri --test chat_bridge`; `cargo test -p app-tauri --test dto error_dto_preserves_structured_no_final_code`; `cargo test -p application --test orchestrator_service ask_structured_ -- --nocapture`; `cargo check -p app-tauri -p application`; `rg "Le modèle n'a renvoyé aucune réponse" ...` => plus aucune occurrence dans le périmètre ciblé.
|
||
- QA indépendant: VERT sur le périmètre #231. Commandes exécutées: `cargo test -p app-tauri --test chat_bridge -- --nocapture` => 31/31 verts; `cargo test -p app-tauri --test chat_bridge pump_with_heartbeat_then_eof_emits_visible_error -- --nocapture` => OK; `cargo test -p app-tauri --test dto_chat -- --nocapture` => 24/24 verts.
|
||
- Réserve QA hors périmètre: une suite plus large `app-tauri` tombe sur des erreurs de compilation existantes dans `tests/dto_agents.rs` (`runtime_state`/`node_id` manquants), sans remettre en cause la validation ciblée du ticket. |