Files
IdeA/.ideai/tickets/171/carnet.md
Blomios 5269315421 chore(tickets): sync miroir — #157/#171 + clôture #173 à #178
- counter.json : nextNumber 173 -> 179
- index.json : ajoute #173 à #178 (tous closed)
- dirs tickets/173-178 (carnet + issue)
- carnets/issues #157 #171 mis à jour

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 12:29:32 +02:00

81 lines
5.5 KiB
Markdown

---
issueRef: "#171"
version: 5
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
updatedAt: 1786380032763
---
# Journal d'itération (le plus récent en haut)
## Itération 2 — 2026-08-10 — Pipeline live corrigée pour Codex/custom CLI, QA verte ciblée, attente de preuve AppImage live
### Diagnostic final du cycle
Le soupçon utilisateur d'un trou avant le premier MCP était **fondé** côté backend Codex.
Le backend exposait bien certains `ReplyEvent::Progress` live (ex. `turn.started`), mais un `agent_message` d'intention avant `idea_ask_agent` pouvait être retenu comme candidat `Final` et ne jamais être projeté comme événement live si le tour continuait. En parallèle, certains événements tool/MCP Codex étaient doublés à la source parce qu'un `Progress` canonique cohabitait avec un `ToolActivity` de compatibilité.
### Correctif backend livré sur le périmètre `#171`
- Un `agent_message` pré-MCP devient désormais une `Announcement` dès qu'un événement suivant prouve que le tour continue, au lieu de rester un faux candidat `Final`.
- Les doublons `ToolActivity` de compatibilité sont supprimés quand un `ReplyEvent::Progress` canonique existe déjà pour l'événement concerné.
- Fichiers: `crates/infrastructure/src/session/codex.rs`, `crates/infrastructure/src/session/mod.rs`.
### Validation backend/transport
Commandes validées par QA:
- `CARGO_HOME=/tmp/idea-cargo-home cargo test -p infrastructure codex -- --nocapture` → **41 passed**
- `CARGO_HOME=/tmp/idea-cargo-home cargo test -p app-tauri --test chat_bridge -- --nocapture` → **25 passed**
Couvertures explicitement mentionnées par QA:
- le message d'intention pré-MCP est bien projeté avant le premier progress MCP quand le flux l'expose ;
- le tap live reste antérieur au `Final` ;
- les doublons `ToolActivity` / `Progress` ne survivent plus dans le transport canonique ;
- l'invariant d'un seul terminal `Final` reste préservé.
### Git / intégration locale
- Commit backend: `d6306bb5` — `fix(codex): intention pré-MCP reclassée en Announcement + doublon ToolActivity supprimé (#157 #171)`
- Commit miroir tickets: `1beeed8c` — `chore(tickets): sync miroir #157 #171 — QA verte ciblée (AppImage en attente)`
- Merge local vers `develop`: `fa613674` — `merge(codex/cli): cycle #157 #171 — dedup cartes tool/MCP + intention pré-MCP live`
### Réserve avant fermeture définitive
- Pas encore de validation live AppImage / UI bout-en-bout avec le binaire utilisateur final.
- Rouge Rust global préexistant et hors scope toujours présent: `crates/infrastructure/tests/mcp_server.rs:777` (37 tools attendus vs 38 exposés, `idea_context_update` en plus).
### Statut décidé
- Ticket placé en **QA** dans l'attente d'une preuve live AppImage.
- Si la vérification live confirme l'apparition du progress pré-MCP et l'ordre correct dans la vraie UI, le ticket pourra être fermé sans nouveau développement.
---
## 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.