From ed58afa03450822b9fa450b7ed264e56e0da8e31 Mon Sep 17 00:00:00 2001 From: Blomios Date: Tue, 11 Aug 2026 12:29:32 +0200 Subject: [PATCH] =?UTF-8?q?docs(memory):=20nettoie=20la=20m=C3=A9moire=20p?= =?UTF-8?q?rojet=20obsol=C3=A8te=20(#178)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - MEMORY.md : index des notes recentré - remaining-work-idea-agent-control-ide.md : réécriture alignée sur l'app actuelle - ui-rework-sprint-scoping-contracts.md : mise à jour - supprime 3 notes périmées : cycle-151-167-155-git-topology, develop-realigned-to-cli-ui-baseline-2026-07-02, ticket4-restart-on-develop-ebd992e Co-Authored-By: Claude Opus 4.8 --- .ideai/memory/MEMORY.md | 8 +- .../memory/cycle-151-167-155-git-topology.md | 33 --- ...realigned-to-cli-ui-baseline-2026-07-02.md | 52 ---- .../remaining-work-idea-agent-control-ide.md | 274 +++--------------- .../ticket4-restart-on-develop-ebd992e.md | 20 -- .../ui-rework-sprint-scoping-contracts.md | 4 +- 6 files changed, 50 insertions(+), 341 deletions(-) delete mode 100644 .ideai/memory/cycle-151-167-155-git-topology.md delete mode 100644 .ideai/memory/develop-realigned-to-cli-ui-baseline-2026-07-02.md delete mode 100644 .ideai/memory/ticket4-restart-on-develop-ebd992e.md diff --git a/.ideai/memory/MEMORY.md b/.ideai/memory/MEMORY.md index b6a5fe0d..5e605e87 100644 --- a/.ideai/memory/MEMORY.md +++ b/.ideai/memory/MEMORY.md @@ -1,6 +1,7 @@ # Memory Index - [agent-context-memory-and-profile-handoff](agent-context-memory-and-profile-handoff.md) — Decisions sur l'injection de contexte, la memoire durable, l'etat live et le handoff de profil entre agents IA. +- [context-agent-token-offload-design](context-agent-token-offload-design.md) — Cadrage durable du rôle de l'agent Context comme assistant léger de compression/extraction factuelle. - [idea-product-directives-main-handoff](idea-product-directives-main-handoff.md) — Directives produit consolidees pour guider Main sur la robustesse, la persistance, le handoff cross-profile et la sobriete UX. - [remaining-work-idea-agent-control-ide](remaining-work-idea-agent-control-ide.md) — Etat des lieux des acquis et des chantiers restants pour aligner IdeA avec la cible d'IDE de controle d'agents IA. - [mcp-bridge-and-delegation-runtime-notes](mcp-bridge-and-delegation-runtime-notes.md) — Pieges runtime du pont MCP/delegation et regle de rebuild de l'AppImage (binaire qui tourne = AppImage, pas les sources). @@ -30,7 +31,6 @@ - [b8-in-app-trigger-run-in-background](b8-in-app-trigger-run-in-background.md) — Arbitrage de l'écart de périmètre #1 — la surface agent MCP idea_run_in_background ferme la boucle B8, contrat et lots figés. - [workstate-background-tasks-projection-fix](workstate-background-tasks-projection-fix.md) — Décision d'archi pour rendre visibles Cancel/Retry dans le panneau Work — extension du read-model GetProjectWorkState, contrat DTO et borne de livraison. - [tickets-t3-frontend-validation-verdict](tickets-t3-frontend-validation-verdict.md) — Verdict de validation frontend du fix T3 (projection backgroundTasks par agent) sur feature/background-tasks-first-class — vert, avec 3 désalignements de contrat mineurs. -- [ticket4-restart-on-develop-ebd992e](ticket4-restart-on-develop-ebd992e.md) — Cadrage du redémarrage des annonces inter-agent sur la base pré-canonique develop ebd992e — ce qui existe, l'écart live, la réutilisabilité du backup et le découpage B/F. - [ticket4-overlay-composition-leafview](ticket4-overlay-composition-leafview.md) — Règle de composition des deux voiles plein-cellule de LeafView (write-portal injection PTY vs F3 annonces busy) — exclusion mutuelle avec priorité F3, arbitrée pour éviter le double voile. - [ticket7-f2-delegated-limit-no-agentratelimited](ticket7-f2-delegated-limit-no-agentratelimited.md) — Écart backend ticket #7/F2 : le rendez-vous délégué n'émet pas AgentRateLimited pour la cible limitée. - [ui-rework-sprint-scoping-contracts](ui-rework-sprint-scoping-contracts.md) — Frontières hexagonales et contrats figés du sprint UI rework — les 4 tickets sont frontend-purs, la popup TicketPicker #18, l'échelle z-index et le curseur opaque. @@ -47,7 +47,6 @@ - [opencode-llamacpp-replaces-ollama](opencode-llamacpp-replaces-ollama.md) — memory note opencode-llamacpp-replaces-ollama - [f36-multi-opencode-profiles-frontend](f36-multi-opencode-profiles-frontend.md) — Multiplicité des profils OpenCode locaux côté UI first-run wizard — livrée, verte, sans gap backend. - [f35-config-crud-delivered](f35-config-crud-delivered.md) — F35.2 (config serveur local + sélection dans les profils OpenCode) livrée et verte sur feature/modeles-locaux ; clôt le sprint modèles locaux F34-F36. -- [develop-realigned-to-cli-ui-baseline-2026-07-02](develop-realigned-to-cli-ui-baseline-2026-07-02.md) — Décision de topologie (validée utilisateur) : develop réaligné sur la ligne UI CLI (pre-chat-ui-baseline). - [feature-agent-skill-awareness-design](feature-agent-skill-awareness-design.md) — Design validé + découpage de la feature « surfacer les skills assignés à un agent à la manière MCP » (manifeste + idea_skill_read). - [inter-agent-announcements-feature-and-codex-final-bug](inter-agent-announcements-feature-and-codex-final-bug.md) — Design figé des annonces inter-agent (UI live) + cause racine du bug Final Codex, validé utilisateur le 2026-07-02. - [inter-agent-live-context-shared-per-agent](inter-agent-live-context-shared-per-agent.md) — Décision d'architecture figée : le contexte live inter-agent est PAR AGENT (partagé), pas par paire (validée utilisateur 2026-07-02). @@ -72,6 +71,9 @@ - [codex-network-access-config-fix](codex-network-access-config-fix.md) — memory note codex-network-access-config-fix - [multi-profile-codex-claude-model-catalogue-scoping](multi-profile-codex-claude-model-catalogue-scoping.md) — memory note multi-profile-codex-claude-model-catalogue-scoping - [model-catalogue-compat-cadrage](model-catalogue-compat-cadrage.md) — Frontières hexagonales, ports, DTO, fallback et matrice de compatibilité versionnée pour l'évolution du catalogue de modèles des profils structurés Codex/Claude. +- [ticket95-adapter-aware-liveness-probe](ticket95-adapter-aware-liveness-probe.md) — Correctif durable de la sonde de vivacité du rendez-vous, désormais consciente de l'adapter structuré. +- [ticket97-opencode-provider-mutual-exclusion](ticket97-opencode-provider-mutual-exclusion.md) — Décision Architect sur l'exclusion mutuelle entre `opencode` local et `opencodeProvider` cloud dans les profils. +- [ticket98-opencode-modelsdev-cache-seed](ticket98-opencode-modelsdev-cache-seed.md) — Cadrage figé du seed best-effort du cache models.dev pour les providers OpenCode cloud. - [tickets-70-100-102-ux-surface-scoping](tickets-70-100-102-ux-surface-scoping.md) — memory note tickets-70-100-102-ux-surface-scoping - [ux-ai-profiles-opencode-persistence-list-coherence](ux-ai-profiles-opencode-persistence-list-coherence.md) — memory note ux-ai-profiles-opencode-persistence-list-coherence - [ticket113-controlled-args-field-rootcause](ticket113-controlled-args-field-rootcause.md) — memory note ticket113-controlled-args-field-rootcause @@ -79,5 +81,5 @@ - [ticket120-hello-plugin-blackscreen-recurrence](ticket120-hello-plugin-blackscreen-recurrence.md) — memory note ticket120-hello-plugin-blackscreen-recurrence - [plugin-asset-serving-and-owned-storage-contracts](plugin-asset-serving-and-owned-storage-contracts.md) — memory note plugin-asset-serving-and-owned-storage-contracts - [ticket156-reply-progress-foundation](ticket156-reply-progress-foundation.md) — memory note ticket156-reply-progress-foundation -- [cycle-151-167-155-git-topology](cycle-151-167-155-git-topology.md) — memory note cycle-151-167-155-git-topology - [opencode-streaming-progress-mcp-surfacing-157](opencode-streaming-progress-mcp-surfacing-157.md) — memory note opencode-streaming-progress-mcp-surfacing-157 +- [toolchain-rust-partage-acces-agents](toolchain-rust-partage-acces-agents.md) — Diagnostic et solution durable pour l'accès partagé au toolchain Rust/Tauri dans les run-dirs agents isolés. diff --git a/.ideai/memory/cycle-151-167-155-git-topology.md b/.ideai/memory/cycle-151-167-155-git-topology.md deleted file mode 100644 index ea3172ba..00000000 --- a/.ideai/memory/cycle-151-167-155-git-topology.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -name: cycle-151-167-155-git-topology -description: memory note cycle-151-167-155-git-topology -metadata: - type: project ---- -# Cycle correctif #151 #167 #155 — topologie Git (RÉSOLU) - -Cycle groupé custom CLI. Décision Git rendue/exécutée le 2026-08-06. - -## Issue finale -- **#151 (z-order Cancel) : CLOSED** — mergé dans develop, QA verte. -- **#167 (ordre événements avant Final) : CLOSED** — mergé dans develop, QA verte (backend `codex_send_with_tap...ok` + frontend 38/38 confirmés sur develop). -- **#155 (clipboard paste) : OUVERT** — partiel. Logique+tests verts, mais e2e presse-papiers natif Tauri/AppImage non validable dans l'env. Code NON mergé dans develop. - -## Commits -- `3d4ea685` chore(tickets): rouverture #151 #155 + création #167 (sur develop, début cycle) -- `b45deabe` **C1** fix(cli): z-order Cancel #151 + projection live événements #167 (+ résidu fixture #165/#166) — QA verte → **mergé** -- `388de4b8` **C2** fix(cli): collage presse-papiers clipboardData.files #155 (partiel) → **non mergé** -- `9f05ad6a` merge(cli): intègre #151 #167 (QA verte) — --no-ff sur develop -- `0390d182` chore(tickets): clôture #151 #167 — sync miroir - -## Branches -- `develop` : intègre #151 #167 (pas #155). En avance sur origin/develop, **pas de push**. -- `fix/cycle-151-167-155-custom-cli` : ramenée à C1 (b45deabe), mergée dans develop. -- `wip/155-clipboard-paste-e2e` : préserve C1+C2 (388de4b8) → porte le code #155 pour le cycle de clôture e2e AppImage. - -## Point de clôture #155 -Valider le collage presse-papiers image/fichier sur l'AppImage réelle. Reprendre depuis `wip/155-clipboard-paste-e2e`. - -## Notes -- `reset --hard` a révoqué hors-cycle les modifs miroir disque non committées (carnets QA, `.ideai/idea-android-plugin.json`) ; le store IdeA reste source de vérité, miroirs resyncés à la clôture. La modif 1-ligne `idea-android-plugin.json` (propriétaire inconnu) a été perdue du working tree — à refaire si besoin. -- Le toolchain Rust du shell n'a pas de default ; backend confirmé via cargo nightly sous `.ideai/run//.opencode/.rustup`. \ No newline at end of file diff --git a/.ideai/memory/develop-realigned-to-cli-ui-baseline-2026-07-02.md b/.ideai/memory/develop-realigned-to-cli-ui-baseline-2026-07-02.md deleted file mode 100644 index b4437129..00000000 --- a/.ideai/memory/develop-realigned-to-cli-ui-baseline-2026-07-02.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -name: develop-realigned-to-cli-ui-baseline-2026-07-02 -description: memory note develop-realigned-to-cli-ui-baseline-2026-07-02 -metadata: - type: project ---- -# develop réaligné sur la ligne UI CLI (pre-chat-ui-baseline) — 2026-07-02 - -**Type :** décision de topologie, validée utilisateur. - -## Contexte / erreur corrigée - -La feature « annonces inter-agent + fix Final Codex » avait été branchée par erreur sur -`develop` @ `0072aff`, qui portait le chantier **canonical-conversation / chat** (LC1→LC5). -Or l'UI de référence de l'utilisateur est la **ligne CLI** portée par -`feature/pre-chat-ui-baseline` @ `a9653bc` (UI CLI + commit « délégation toujours headless, -jamais d'injection PTY »). Le rebuild sur develop avait régressé l'UI (plus de terminaux CLI). -De plus, `a9653bc` — prémisse runtime de l'overlay — n'était QUE sur pre-chat-ui-baseline. - -## Opération effectuée (Git, réversible, locale, aucune sortante) - -1. Secours du chantier chat : branche `snapshot/develop-canonical-conversation-0072aff` + - tag homonyme → `0072aff` (récupérable à 100%). -2. `git branch -f develop feature/pre-chat-ui-baseline` → **develop == `a9653bc`** (arbre - exactement celui de la ligne CLI). Le chantier chat est SUPERSÉDÉ sur la mainline develop - mais non détruit. -3. Nouvelle branche de fix : **`feature/inter-agent-announcements-v2`** depuis le nouveau - develop (@ a9653bc). - -Retour arrière : `git branch -f develop snapshot/develop-canonical-conversation-0072aff`. - -## État des refs - -- `develop` = `a9653bc` (base de travail canonique désormais = ligne CLI). -- `feature/inter-agent-announcements-v2` = base de travail pour reporter les fix. -- `feature/inter-agent-announcements` = `71d307d` : ancien commit B0-B3 (basé sur l'ancien - develop chat), conservé pour cherry-pick. -- `snapshot/develop-canonical-conversation-0072aff` = chantier chat préservé. - -## Conséquences pour la suite - -- Reporter **B1/B2/B3** sur `feature/inter-agent-announcements-v2` (cherry-pick depuis - 71d307d). **B0 devient probablement REDONDANT** : `a9653bc` (headless alongside/toujours - headless) est déjà la base — à vérifier avant de le rejouer. -- **Re-planifier F1/F2/F3** : le design frontend (preview cellule demandeur + overlay cellule - cible) avait été cadré contre le modèle de cellules canonical-conversation de develop ; sur - la base CLI (`a9653bc`), il faut re-cibler le modèle de cellules CLI/PTY réel. À faire - cadrer par Architect avant dev frontend. -- Rebuild AppImage à faire depuis cette base → restaure l'UI CLI + embarque les fix. - -Liens : [[inter-agent-announcements-feature-and-codex-final-bug]], -[[inter-agent-live-context-shared-per-agent]]. \ No newline at end of file diff --git a/.ideai/memory/remaining-work-idea-agent-control-ide.md b/.ideai/memory/remaining-work-idea-agent-control-ide.md index ebf3f46a..b680a8ed 100644 --- a/.ideai/memory/remaining-work-idea-agent-control-ide.md +++ b/.ideai/memory/remaining-work-idea-agent-control-ide.md @@ -6,258 +6,70 @@ metadata: --- # Remaining Work For IdeA Agent Control IDE -## Resume +## Snapshot -Cette note sert de point de reprise pour l'agent `Main`. Elle distingue ce qui est deja implemente, ce qui reste a stabiliser, et ce qui reste a construire pour que IdeA corresponde pleinement a la vision "patron + employes IA" avec memoire projet partagee, contexte partage, messagerie inter-agents transparente, FIFO par agent, et persistance de reprise. +Cette note remplace l'ancien état des lieux trop large et partiellement daté. Elle sert de +point de reprise produit pour `Main` au **2026-08-11**. -See also: +Voir aussi : -- `idea-product-directives-main-handoff` for product priorities and UX constraints. -- `agent-context-memory-and-profile-handoff` for the structural model separating context, durable memory, live state, and handoff. +- `idea-product-directives-main-handoff` pour les priorités produit durables ; +- `agent-context-memory-and-profile-handoff` pour les frontières contexte/mémoire/live-state ; +- `live-state-persistence-program-closed-ls8` pour la base désormais livrée côté transcript/handoff/live-state. -Etat observe le 2026-06-11 sur le depot local: +## Ce qui est désormais considéré comme acquis -- L'orchestration inter-agents synchrone est deja reelle cote application. -- La FIFO par agent, la conversation par paire et `idea_reply` sont deja couvertes par des tests verts. -- Le transport MCP natif par projet et le loopback sont testes verts localement. -- La reprise de conversation cote session/layout est largement presente dans le code. -- En revanche, plusieurs briques produit restent inachevees ou non consolidees de bout en bout. +- L'orchestration inter-agents IdeA fonctionne de bout en bout via les outils MCP du projet. +- Le modèle de coordination `memory` / `handoff` / `log conversationnel` / `live-state` existe et est en production. +- Les sessions structurées multi-profils, le custom CLI, les surfaces tickets, plugins et web ont une base réellement livrée. +- La reprise technique par `conversationId` existe, mais la surface UX associée reste un choix produit, pas un invariant. -## Deja Livre Ou Tres Avance +## Points encore ouverts au niveau produit -### 1. Artefacts projet dans `.ideai/` +### 1. Fidélité de reprise conversationnelle côté surfaces humaines -- Les agents projet sont persistes dans `.ideai/agents.json` et `.ideai/agents/*.md`. -- Le contexte projet partage est modelise via `.ideai/CONTEXT.md`. -- La memoire projet partagee est modelisee via `.ideai/memory/*.md` + `.ideai/memory/MEMORY.md`. -- Les requetes d'orchestration fichier vivent sous `.ideai/requests/`. +Le backend sait reprendre une session et relire un transcript canonique. En revanche, la +reconstruction de la conversation **dans les vues utilisateur** n'est pas homogène entre TUI, +custom CLI et lecteurs dédiés. Le sujet ouvert n'est donc plus "est-ce qu'on sait reprendre ?" +mais "quelle continuité visible veut-on montrer, et dans quelle surface ?". -Conclusion: la direction "tout ce qui releve d'IdeA pour un projet doit vivre dans `.ideai/`" est deja la bonne direction architecturale. Il reste surtout a eliminer les ecarts pratiques et a consolider l'usage reel. +### 2. Stabilisation UX du custom CLI -### 2. Memoire projet partagee +Le custom CLI est une surface centrale mais encore mouvante : -- `FsMemoryStore` et `MemoryRecall` existent. -- Les agents peuvent recevoir un rappel de memoire projet a l'activation. -- Le frontend et les use cases CRUD memoire existent deja. +- wording/tests de callouts ; +- cohérence entre vue chat, TUI native et états busy ; +- choix de ce qui doit être silencieux vs explicitement surfacé. -Conclusion: la memoire partagee du projet n'est plus un concept a inventer. Le travail restant est plutot sur la qualite du rappel, la curation, et l'usage continu pendant la vie des sessions. +La suppression du popup de reprise par cellule va dans ce sens : réduire les affordances +expérimentales tant qu'une continuité visible claire n'est pas décidée. -### 3. Contexte partage et contexte agent +### 3. Curation de la mémoire projet -- Le contexte partage projet est separe du contexte agent. -- Les contextes agent sont persistes sous `.ideai/agents/*.md`. -- Le launcher injecte deja le contexte compose au demarrage. +Le socle mémoire est livré, mais l'index et certaines notes dérivent avec le temps. Le besoin +restant n'est plus la mécanique CRUD ; c'est la **curation** : -Conclusion: la separation `contexte projet` / `contexte agent` est en place. +- retirer les notes historiques devenues trompeuses ; +- conserver les décisions durables ; +- maintenir `MEMORY.md` aligné avec les fichiers réellement utiles. -### 4. Messagerie inter-agents transparente +### 4. Robustesse runtime et outillage partagé -- `AgentMailbox` + `InMemoryMailbox` existent. -- `ConversationRegistry` + `InMemoryConversationRegistry` existent. -- `OrchestratorService::ask_agent` et `reply` existent. -- Les outils MCP `idea_ask_agent`, `idea_reply`, `idea_launch_agent`, `idea_list_agents`, `idea_stop_agent`, `idea_update_context`, `idea_create_skill` existent. -- Les tests applicatifs passent sur FIFO, reponse synchrone, prevention de cycle, timeout, parallélisme entre cibles differentes. +Plusieurs chantiers runtime restent importants pour la productivité réelle des agents : -Verification locale du 2026-06-11: +- disponibilité du toolchain Rust/Tauri dans les environnements isolés ; +- robustesse des sondes de vivacité et des reprises longues ; +- stabilité des providers locaux/cloud OpenCode et de leur catalogue. -- `cargo test -p application --test orchestrator_service` : OK -- `cargo test -p infrastructure --test mcp_server` : OK -- `cargo test -p app-tauri --test orchestrator_wiring` : OK +Ces sujets ne remettent pas en cause l'architecture générale, mais ils influencent fortement la +qualité d'exécution au quotidien. -Conclusion: le coeur de la communication inter-agents n'est plus un chantier de conception. Il est deja implementé et teste. +## Règle de lecture pour Main -### 5. FIFO transparente quand un agent est occupe - -- La file d'entree par agent existe deja. -- La serialisation des tours vers une meme cible existe. -- Les `ask` concurrents vers des agents differents peuvent tourner en parallele. - -Conclusion: l'exigence "si l'utilisateur ou un autre agent parle a un agent deja occupe, la requete part en file FIFO de maniere transparente" est deja largement satisfaite au niveau coeur applicatif. - -### 6. Reprise de conversation et persistance de session - -- Les cellules/layouts persistent `conversation_id` et `agent_was_running`. -- Les use cases de reprise (`ListResumableAgents`, popup de reprise, relance avec `conversation_id`) existent. -- Les sessions structurees Claude/Codex savent porter un `conversation_id`. - -Conclusion: la persistance de reprise a deja une base concrete et substantielle. - -## Reste A Faire En Priorite - -### 1. Consolider la persistance "conversation continue" au niveau produit, pas seulement "resume technique" - -Le code sait deja reprendre une conversation via `conversation_id`, mais la cible produit demande plus qu'une simple reprise technique: - -- conserver une vraie continuite de conversation lisible pour l'utilisateur au redemarrage, -- permettre au nouvel agent/profil de repartir avec l'etat utile, -- rendre la reprise completement transparente dans l'UX. - -Reste donc a verrouiller: - -- la persistance canonique des conversations exploitable au niveau produit, -- la strategie de resume/handoff quand on change de profil IA, -- la coherence UX entre reprise de cellule, reprise de conversation, et reprise de travail. - -### 2. Implementer une couche persistante de handoff / resume cross-profile - -La memoire partagee existante dit explicitement qu'il faut persister: - -- un canonical conversation log, -- un cumulative handoff summary, -- l'etat agent, -- les identifiants de conversation utiles par provider. - -Ce point n'apparait pas comme livre de bout en bout dans le depot actuel. - -Le besoin produit reste ouvert: - -- si un agent passe de Claude a Codex, IdeA doit reconstituer l'etat de travail sans dependre d'une session native transferable, -- le handoff doit etre incremental, pas fabrique seulement au moment de la panne ou du swap. - -### 3. Introduire un vrai live-state partage au niveau projet - -La memoire durable ne doit pas servir de journal temps reel. La note memoire existante le dit deja. - -Il manque encore une couche explicite de "live operational state" pour: - -- qui travaille sur quoi, -- tickets/intentions en cours, -- etat d'avancement d'un agent, -- derniere delegation utile, -- elements transitoires de coordination inter-agents. - -Sans cette couche, une partie de la coordination reste soit volatile, soit repoussee dans des endroits qui ne sont pas faits pour ca. - -### 4. Verifier et finir l'integration MCP natif "IdeA-only" de bout en bout dans le flux reel de l'application - -Les tests locaux du transport MCP passent, ce qui place cette zone en fin de chantier plutot qu'au debut. - -Mais il reste a confirmer en situation reelle utilisateur: - -- qu'un agent lance par IdeA voit effectivement ses outils MCP sans action manuelle, -- que les profils supportes utilisent bien cette voie par defaut, -- que le fallback fichier+prose reste coherent quand MCP n'est pas disponible, -- que l'observabilite UI des delegations et des replies est suffisamment claire. - -Point important: l'architecture historique qui mentionne encore un verrou M5 ouvert est probablement en retard par rapport au worktree local. Avant de planifier le prochain lot, `Main` doit revalider la documentation d'architecture a la lumiere du code/tests actuels. - -### 5. Stabiliser le registre de sessions et clarifier le modele singleton d'agent - -Le produit veut "1 agent = 1 employe". Cela impose une verite unique sur: - -- la session vivante de l'agent, -- sa conversation courante, -- sa cellule visible ou son execution en arriere-plan, -- son etat occupé/libre/interrompu. - -Le code a deja beaucoup avance sur ce point, mais le worktree local montre encore un chantier actif autour de: - -- `application/src/terminal/registry.rs` -- `application/src/orchestrator/service.rs` -- `application/src/agent/lifecycle.rs` -- `app-tauri/src/state.rs` - -Conclusion: ne pas considerer le sujet comme totalement clos tant que le worktree n'est pas nettoye et que la suite de tests ciblee n'est pas executee sur l'ensemble du flux concerne. - -### 6. Rendre la mise a jour de memoire/contexte vraiment automatique pendant la vie d'un agent - -La cible utilisateur dit qu'il ne doit jamais demander: - -- de charger une memoire, -- de charger un contexte, -- de mettre a jour la memoire, -- de mettre a jour le contexte. - -Le lancement injecte deja beaucoup de choses automatiquement, mais il reste a verrouiller le comportement "pendant la vie" d'un agent: - -- quand regenerer le contexte effectif, -- quand promouvoir une information stable vers la memoire durable, -- comment distinguer signal utile et bruit, -- comment eviter de compter sur des consignes manuelles a l'utilisateur. - -### 7. Unifier la conversation utilisateur <-> agent et agent <-> agent dans l'UX - -Le backend sait deja distinguer `User<->Agent` et `Agent<->Agent`. - -Le travail restant est surtout produit/frontend: - -- affichage clair des delegations et des retours, -- visualisation non confuse des conversations par paire, -- reprise lisible des threads, -- transparence totale pour l'utilisateur final. - -Le diff local frontend suggere justement un remaniement en cours de la surface terminal/chat. - -### 8. Consolider la restriction et l'affordance des profils supportes - -Le modele actuel oriente fortement vers Claude/Codex structures, ce qui est coherent avec la fiabilite attendue. - -Reste a clarifier produit: - -- quels profils sont officiellement "employes IdeA" de premiere classe, -- quel fallback proposer pour les profils non structures, -- quelle UI montrer quand un profil ne supporte pas la delegation native fiable. - -### 9. Persistance conversationnelle globale de l'application - -La demande utilisateur mentionne explicitement qu'en relancant IdeA il faut retrouver la conversation. - -La reprise par `conversation_id` et layouts existe, mais il reste a confirmer ou completer: - -- la persistance lisible de l'historique conversationnel pour l'utilisateur, -- la restauration des vues au redemarrage, -- la coherence entre session technique, resume visuel et histoire de travail. - -Autrement dit: "reprendre une session moteur" n'est pas encore automatiquement equivalent a "retrouver sa conversation produit" dans tous les cas. - -## Chantiers Secondaires Mais Importants - -### 1. Mettre la documentation d'architecture a jour - -Le code local et les tests verts semblent avoir depasse certains passages de `ARCHITECTURE.md` et de briefs anciens. - -Il faut une passe de synchronisation documentaire pour eviter que `Main` suive un etat obsolete, en particulier sur: - -- statut reel du transport MCP, -- statut reel de la FIFO inter-agents, -- statut reel des conversations par paire, -- ce qui reste vraiment ouvert entre handoff, live-state et UX. - -### 2. Curater le dossier `.ideai/` - -Le principe "tout ce qui est IdeA-projet va dans `.ideai/`" est bon, mais il faudra surveiller: - -- la proliferation de fichiers run/request/debug, -- ce qui est durable vs derivable, -- ce qui doit etre committe vs ignore. - -### 3. Formaliser les regles de promotion memoire - -Le systeme doit savoir quand enregistrer une connaissance stable sans polluer la memoire partagee. - -Il manque probablement encore: - -- une politique claire de promotion, -- des heuristiques/outils explicites pour les agents, -- des garde-fous contre la memoire bruit. - -## Worktree Local A Prendre En Compte - -Le depot local est actuellement dirty avec un chantier large non committe autour de: - -- orchestration MCP / loopback / serveur Tauri, -- mailbox / conversations / session registry, -- adaptation frontend terminal/chat/layout, -- fichiers `.ideai/` du projet lui-meme. - -Consequence pour `Main`: - -- ne pas planifier a partir de `ARCHITECTURE.md` seulement, -- d'abord relire le diff local, -- ensuite reexecuter la suite de tests ciblee des zones touchees, -- puis seulement decider si le prochain lot est "finition", "integration UI", ou "harden/persistence". - -## Ordre Recommande Pour La Suite +- Ne plus utiliser cette note comme backlog exhaustif historique. +- S'en servir comme **boussole produit courte**. +- Pour une zone précise, relire d'abord la note mémoire spécialisée correspondante avant de + planifier un lot. 1. Revalider et documenter l'etat reel du chantier MCP/orchestration a partir du code courant, puis remettre `ARCHITECTURE.md` a jour. 2. Fermer proprement le sujet "1 agent = 1 session vivante coherente" en nettoyant le registre/session lifecycle encore en mouvement. diff --git a/.ideai/memory/ticket4-restart-on-develop-ebd992e.md b/.ideai/memory/ticket4-restart-on-develop-ebd992e.md deleted file mode 100644 index e3ab2ce1..00000000 --- a/.ideai/memory/ticket4-restart-on-develop-ebd992e.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: ticket4-restart-on-develop-ebd992e -description: Cadrage du redémarrage des annonces inter-agent sur la base pré-canonique develop ebd992e — ce qui existe, l'écart live, la réutilisabilité du backup et le découpage B/F. -metadata: - type: reference ---- -Redémarrage #4 sur base réalignée main=develop=feature/background=feature/agent-live-announcements=ebd992e (pré-canonique). Vérifié sur le dépôt le 2026-07-04. - -**Signaux sur develop :** -- Émission intermédiaire : AUCUNE. codex.rs draine via run_turn BATCH (process.rs:268/321 lit ligne-à-ligne mais collecte en Vec, renvoie à EOF ; codex.rs:260 Box::new(events.into_iter())). structured.rs:266-271 jette TextDelta/ToolActivity/Heartbeat, ne renvoie que Final. -- Busy PAR AGENT : PRÉSENT ET COMPLET. DomainEvent::AgentBusyChanged{agent_id,busy} (domain/events.rs:171), autorité mediator (infrastructure/input/mod.rs:433), relay (app-tauri/events.rs:484), front event domain/index.ts:22 + read-model agents[].busy {state,ticket,sinceMs} (:220,304) réconcilié reboot. ⇒ autorité overlay F3 dispo telle quelle. -- Fix Final : PRÉSENT (62915ee) mais dégrade les agent_message intermédiaires en ToolActivity{label} en JETANT leur texte, et reste batch → inexploitable pour annonces. - -**Écart live (faisable SANS moteur canonique) :** run_turn lit déjà incrémentalement ; le batch n'est qu'un artefact de sa signature ->Vec. Ajouter un tap Option> dans run_turn/drain/drain_sandboxed (boucle existante) ; l'orchestrateur (qui détient requester/target/ticket) publie DomainEvent::AgentAnnouncement au fil de l'eau. Thread Landlock n'envoie que des lignes brutes ; publication bus hors thread. Pas de spawn_turn/AgentTurnEvent/ConversationId. - -**Réutilisabilité backup (backup/announcements-work-20260704, 691b2ce) :** frontend features/announcements/ (store borné, provider, AnnouncementsPreview=F2, TargetAnnouncementsOverlay=F3) réutilisable ; F3 sur busy = intact sur develop. Dépend d'agentAnnouncement{requester,target,ticketId,text,atMs} (absent→B) et agentTurnEvent{final} (absent, secondaire → RETIRER du store). Backend backup non réutilisable (canonique) ; contrat/attribution repris. - -**Découpage :** B1 domaine/appli (ReplyEvent::Announcement + DomainEvent::AgentAnnouncement + publish au drain) ; B2 infra = CŒUR (tap mpsc process.rs + codex émet Announcement{text} live) ; B3 relay/DTO ; F1 store (–hook final) ; F2 preview (filtre ticketId+requester==self) ; F3 overlay (réutilisé, busy seul autorité). - -Liens : [[ticket4-f3-overlay-driven-by-agentbusychanged]], [[ticket4-announcements-reintegration-topology]], [[inter-agent-announcements-feature-and-codex-final-bug]], [[inter-agent-live-context-shared-per-agent]]. \ No newline at end of file diff --git a/.ideai/memory/ui-rework-sprint-scoping-contracts.md b/.ideai/memory/ui-rework-sprint-scoping-contracts.md index 5e687c06..322f4e2b 100644 --- a/.ideai/memory/ui-rework-sprint-scoping-contracts.md +++ b/.ideai/memory/ui-rework-sprint-scoping-contracts.md @@ -16,8 +16,8 @@ Sprint « UI rework » (order 1), cadré 2026-07-06. Les **4 tickets sont fronte **Contrat #18 figé** — `TicketPicker` props `{open, projectId, title?, confirmLabel?, selectionMode?:"single"|"multi" (défaut single), excludeRefs?: TicketRef[] (filtré client-side), initialQuery?: TicketListQuery, onSelect(TicketPickerResult|[]), onClose}`. `TicketPickerResult={ref,id,number,title,status,priority}`. Extraire `TicketFacetsBar` (fieldsets statut/priorité + recherche depuis TicketsPanel.tsx) + hook `useTicketSearch` (ne PAS réutiliser useTickets, trop lourd). #17 et #19 consomment en single. -**Échelle z-index figée (G2)** : in-cell inchangé (chrome 2-5, F3 z-20, write-portal z-4, resume z-5) ; chrome full-window menuDropdown=40, floatingWindow=50, floatingWindowNested=60, toast=70. +**Échelle z-index figée (G2)** : in-cell inchangé (chrome 2-5, F3 z-20, write-portal z-4) ; chrome full-window menuDropdown=40, floatingWindow=50, floatingWindowNested=60, toast=70. **Règle intégration (G5)** : fenêtres flottantes/menus montées niveau chrome (ProjectsView/App), JAMAIS dans LayoutGrid/LeafView. Ne pas toucher shouldShowWritePortalVeil ni exclusion write-portal↔F3 (cf. [[ticket4-overlay-composition-leafview]]). Focus-trap obligatoire (xterm garde le focus clavier). -**Ordre** : A(#16) ∥ B(#18) racines → prioriser B (chemin critique #17+#19) ; D(#19) après B ; C(#17) après A+B. Tout DevFrontend ; DevBackend = ticket dette basse (matching #ref + curseur opaque/stable). \ No newline at end of file +**Ordre** : A(#16) ∥ B(#18) racines → prioriser B (chemin critique #17+#19) ; D(#19) après B ; C(#17) après A+B. Tout DevFrontend ; DevBackend = ticket dette basse (matching #ref + curseur opaque/stable).