diff --git a/.ideai/tickets/157/carnet.md b/.ideai/tickets/157/carnet.md index bb6332c0..dafa037a 100644 --- a/.ideai/tickets/157/carnet.md +++ b/.ideai/tickets/157/carnet.md @@ -1,11 +1,44 @@ --- issueRef: "#157" -version: 16 +version: 17 updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} -updatedAt: 1786346556578 +updatedAt: 1786378849914 --- # Journal d'itération (le plus récent en haut) +## Itération 3 — 2026-08-10 — Régression CLI custom: doublons tool/MCP + progress potentiellement manquants avant le premier MCP + +**Remontée user (capture live AppImage, 2026-08-10)** : sur la CLI custom, l'usage de `idea_ask_agent` affiche les événements tool/MCP en double (deux cartes `Delegation idea_ask_agent` et deux cartes `Provider tool: idea_ask_agent`) alors que l'attendu produit est de ne conserver qu'une première carte `start` et une première carte `done`. En parallèle, l'utilisateur suspecte que tous les messages de progression/intention ne sont pas surfacés, notamment possiblement avant le premier appel MCP (ex. "Je vais d'abord regarder la liste de tools MCP..."). + +### Arbitrage Main + Architect + +- **#157 reste le ticket principal du rendu CLI custom** pour la hiérarchie visuelle et le dédoublonnage des cartes tool/MCP/delegation. +- **#171 porte la pipeline d'observabilité live** (`ReplyEvent::Progress -> UI`) pour les progress/messages d'intention qui ne doivent pas dépendre du `Final`. +- **#167 reste fermé** : le bug historique traité sur l'ordre `events after Final` n'est pas rouvert à ce stade ; si DevBackend démontre un nouveau défaut d'émission/ordering backend, il faudra alors créer un delta dédié ou rouvrir en second temps. + +### Hypothèse de travail pour ce cycle + +- Le backend expose déjà une part significative des progress live via la fondation #156 et le correctif OpenCode de l'itération 2. +- Le symptôme utilisateur courant est **probablement** un split : + 1. problème frontend de réconciliation/rendu (dédoublonnage des cartes `start/done`), et/ou + 2. défaut de projection live UI de certains `ReplyChunk::Progress` en amont du premier appel MCP. + +### Cycle relancé + +- Architect consulté pour arbitrage ports/contrats/tickets. +- Décision Git préparatoire récupérée : branche de cycle existante `fix/171-conversation-observability-pipeline` à privilégier, sauf preuve backend contraire. +- DevBackend mandaté pour vérifier si les progress pré-MCP existent bien dans le flux backend actuel et si les doublons tool/MCP naissent avant ou après transport UI. +- DevFrontend mandaté pour inspecter la logique de rendu/réconciliation des cartes progress/tool/MCP/delegation dans la custom CLI, corriger si nécessaire et préparer les tests. +- QA passera après implémentation réelle avec preuve de commandes/tests. + +### Attendus de validation pour clôture + +- Pour un appel `idea_ask_agent`, la CLI custom n'affiche qu'une carte `start` et une carte `done` pertinentes, sans doublons parasites. +- Les messages de progression/intention disponibles dans le flux sont visibles **avant** le premier MCP quand ils existent réellement côté provider/IdeA. +- Aucun faux streaming n'est simulé pour les profils qui n'exposent pas ce niveau de granularité. + +--- + ## Itération 2 — 2026-08-09 — Régression profil OpenCode/GLM (pas de progress, pas de bulle MCP) **Remontée user** : sur la CLI custom avec un profil OpenCode/GLM, aucun message de progress pendant le traitement de l'agent, et aucune bulle d'appel de tool MCP quand l'agent invoque un outil. @@ -23,7 +56,7 @@ Les deux vraies causes : Branche `fix/ticket157-opencode-progress-mcp-surfacing`, commit `836137a3` (base `develop` `a3d94d4d`). Fichier unique : `crates/infrastructure/src/session/opencode.rs` (+408/−69). - **`send_with_tap` override** (pattern codex.rs/claude.rs) : lecture stdout ligne par ligne, projection live au tap des events non-terminaux (Progress/TextDelta/ToolActivity/Heartbeat), Final assemblé à la fin (jamais envoyé au tap). `send()` sans tap reste batch (inchangé). -- **Tagging MCP** : `tool_use` préfixé `idea_` → `ReplyProgress{source:IdeaLocal, kind:Mcp, stage:Completed, tool_name}` (remplace la Progress Tool provider-native, pas de double card). Les autres outils restent `ProviderNative/Tool`. +- **Tagging MCP** : `tool_use` préfixé `idea_` → `ReplyProgress{source:IdeaLocal, kind:Mcp, stage:Completed, tool_name}` (remplace la Progress Tool provider-native, pas de double card). - **Protection replay** : sur session continuée (`--session`), le premier messageID est tamponné puis supprimé si un nouveau messageID arrive (évite de projeter l'historique rejoué). ### Tests & QA diff --git a/.ideai/tickets/157/issue.md b/.ideai/tickets/157/issue.md index 2117086f..65b518e1 100644 --- a/.ideai/tickets/157/issue.md +++ b/.ideai/tickets/157/issue.md @@ -11,7 +11,7 @@ attachments: [] createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} createdAt: 1785965383914 -updatedAt: 1786346556578 -version: 16 +updatedAt: 1786378849914 +version: 17 --- Régression/remontée utilisateur (profil OpenCode/GLM) sur la CLI custom : aucun message de progress ne s'affiche pendant le traitement de l'agent, et aucune bulle/carte d'appel de tool MCP n'apparaît quand l'agent invoque un outil MCP. Périmètre initial (surfacer progress + activité MCP + délégations inter-agent) à valider à nouveau sur le profil OpenCode. \ No newline at end of file diff --git a/.ideai/tickets/171/carnet.md b/.ideai/tickets/171/carnet.md index ade3c2e0..af789c28 100644 --- a/.ideai/tickets/171/carnet.md +++ b/.ideai/tickets/171/carnet.md @@ -1,6 +1,34 @@ --- issueRef: "#171" -version: 1 +version: 3 updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} -updatedAt: 1786371966186 +updatedAt: 1786378881038 --- +# Journal d'itération (le plus récent en haut) + +## Itération 1 — 2026-08-10 — Ouverture du cycle live progress depuis régression AppImage CLI custom + +**Signal utilisateur (capture live du 2026-08-10)** : sur la custom CLI, tous les messages d'intention/progression de l'agent ne semblent pas remonter pendant le tour. Suspicion forte d'un trou avant le premier appel MCP (`idea_ask_agent`), alors que l'agent a vraisemblablement déjà émis des progress du type "Je vais d'abord regarder la liste de tools MCP...". En parallèle, des cartes tool/MCP apparaissent en double ; ce point de rendu est traité en articulation avec #157. + +### Rôle de #171 dans le cycle + +Ce ticket porte **la pipeline d'observabilité conversationnelle live** entre le backend (`ReplyEvent::Progress`, `ReplyChunk::Progress`, événements de tool/delegation observables localement) et la surface UI/CLI. Il ne porte pas la cosmétique visuelle elle-même, mais la garantie que l'UI reçoive effectivement les événements non terminaux en temps réel, sans attendre `Final`. + +### Arbitrage de cycle + +- **#157** : rendu/dédoublonnage/hierarchie visuelle de la custom CLI pour les cartes tool/MCP/delegation. +- **#171** : vérifier et, si nécessaire, corriger la chaîne backend -> transport -> store UI pour les progress/messages d'intention qui devraient apparaître avant le premier appel MCP. +- **#167** : reste fermé tant qu'aucune preuve ne montre un nouveau défaut backend d'ordering/post-Final distinct du bug déjà corrigé. + +### Mandats actifs + +- **DevBackend** : vérifier si les progress pré-MCP existent déjà dans le flux backend live pour le profil et la surface testés, et identifier tout buffer/relais/filtrage qui empêcherait leur projection temps réel. +- **DevFrontend** : vérifier si les `ReplyChunk::Progress` précoces arrivent mais sont ignorés, écrasés, réordonnés ou non rendus dans la custom CLI/store courant. +- **QA** : à venir après implémentation, avec scénario réel ciblant l'apparition d'un progress avant le premier MCP et l'absence de dépendance au `Final` pour l'affichage. + +### Critères d'acceptation de #171 pour ce cycle + +- Un progress/message d'intention disponible dans le flux source apparaît dans l'UI/CLI **avant** le premier événement MCP, sans attendre la fin de tour. +- Aucun `ReplyChunk::Progress` légitime n'est perdu entre émission backend, transport et affichage. +- La limite provider est traitée honnêtement : si un provider n'émet rien avant le premier MCP, l'UI n'invente pas de faux message. +- Les preuves QA permettent de distinguer clairement un manque d'émission backend d'un simple problème de rendu frontend. diff --git a/.ideai/tickets/171/issue.md b/.ideai/tickets/171/issue.md index 4680114c..ebe58499 100644 --- a/.ideai/tickets/171/issue.md +++ b/.ideai/tickets/171/issue.md @@ -2,16 +2,16 @@ id: "dcd6a2c9-c819-43b0-acf2-5d7dd9ada284" number: 171 title: "[OBS] Pipeline d'observabilité conversationnelle — ReplyEvent progress -> UI en temps réel" -status: "open" +status: "inProgress" priority: "high" sprint: null links: [{"target":"#58","kind":"relatesTo"},{"target":"#93","kind":"relatesTo"}] -agentRefs: [] +agentRefs: [{"agentId":"fe887179-933f-47d4-960f-c3b06827f86c","role":"assigned"},{"agentId":"8f7da528-58df-4315-97e9-0562230ecc19","role":"assigned"}] attachments: [] createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} createdAt: 1786371966186 -updatedAt: 1786371966186 -version: 1 +updatedAt: 1786378881038 +version: 3 --- Dérivé de la régression CLI/UI signalée le 2026-08-10: les messages process ne s'affichent pas pendant le tour et les usages d'outils MCP (ex. idea_ask_agent) n'apparaissent qu'après terminaison du tool / Final cible. Ticket transverse pour établir un pipeline live des événements conversationnels (progress/tool activity/process) du backend vers l'UI/CLI, sans dépendre du Final. \ No newline at end of file diff --git a/.ideai/tickets/index.json b/.ideai/tickets/index.json index 32ece8d8..bad7d3c3 100644 --- a/.ideai/tickets/index.json +++ b/.ideai/tickets/index.json @@ -2068,7 +2068,7 @@ "kind": "agent", "agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d" }, - "updatedAt": 1786346556578 + "updatedAt": 1786378849914 }, { "issueRef": "#158", @@ -2282,15 +2282,18 @@ "issueRef": "#171", "path": "171", "title": "[OBS] Pipeline d'observabilité conversationnelle — ReplyEvent progress -> UI en temps réel", - "status": "open", + "status": "inProgress", "priority": "high", "sprint": null, - "assignedAgentIds": [], + "assignedAgentIds": [ + "fe887179-933f-47d4-960f-c3b06827f86c", + "8f7da528-58df-4315-97e9-0562230ecc19" + ], "createdBy": { "kind": "agent", "agent_id": "a6c6ea12-bfc6-4bdc-8031-324102dfa34d" }, - "updatedAt": 1786371966186 + "updatedAt": 1786378881038 } ] } \ No newline at end of file