Files
IdeA/.ideai/tickets/111/carnet.md
Blomios 5be5c5975e chore(tickets): synchronise l'état runtime des tickets et du contexte main
Met à jour l'index/compteur de tickets, les tickets #111/#113/#114 et le
contexte de Main suite au traitement du ticket #114.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-30 12:56:07 +02:00

5.2 KiB

issueRef, version, updatedBy, updatedAt
issueRef version updatedBy updatedAt
#111 3
kind agent_id
agent a6ced819-b893-4213-b003-9e9dc79b9641
1785390694060

Enquete /tmp IdeA — inventaire et fenetres de cleanup

Methode

  • Scan du code sur les usages std::env::temp_dir() / prexifes idea-* hors frontend.
  • Lecture des blocs source pour separer runtime vs #[cfg(test)].
  • Verification du contenu live de /tmp au moment de l'analyse : aucun dossier idea-* visible a la racine de /tmp pendant ce tour.

Conclusion courte

  • Les noms cites dans le ticket (idea-structured-session-factory-*, idea-web-root-*, idea-server-test-*, idea-openai-compat-*, etc.) ne correspondent pas, dans l'etat actuel du code, a des artefacts runtime produit. Ils proviennent majoritairement de tests embarques dans les crates Rust.
  • Le seul artefact runtime clair lie a IdeA/MCP trouve pendant l'analyse est le repertoire parent idea-mcp qui heberge les sockets Unix par projet quand le runtime tombe sur /tmp comme base.
  • Donc le modele un call MCP -> un dossier temp -> suppression en fin de call n'est pas le bon modele pour la majorite des cas observes.

Runtime reel identifie

1. idea-mcp (runtime MCP par projet)

  • Source : crates/backend/src/mcp_endpoint.rs et miroir crates/app-tauri/src/mcp_endpoint.rs.
  • Role : repertoire parent des sockets Unix du serveur MCP local, ex. <runtime-dir>/idea-mcp/<project-id>.sock.
  • Creation : a la determination du endpoint MCP du projet si le sous-dossier idea-mcp n'existe pas deja.
  • Granularite : par projet / par listener MCP, pas par appel d'outil MCP.
  • Cleanup deja present :
    • le fichier socket est unlink sur fermeture propre via reclaim_name(true) ;
    • un socket cadavre est supprime avant rebind si c'est bien un socket stale ;
    • refs utiles : crates/backend/src/lib.rs autour de bind_endpoint() et crates/backend/src/mcp_endpoint.rs.
  • Cleanup opportun :
    • pas a la fin de chaque call MCP ;
    • oui a la fermeture du listener / fermeture du projet pour le fichier .sock ;
    • oui au prochain demarrage / prochain bind pour nettoyer un socket stale d'un crash precedent ;
    • amelioration possible : supprimer aussi le dossier parent idea-mcp s'il devient vide apres drop du dernier socket, ou faire un sweep best-effort au demarrage des endpoints MCP.
  • Importance : c'est le seul candidat clairement runtime et potentiellement visible sous /tmp si XDG_RUNTIME_DIR / TMPDIR ne sont pas utilisables et que le fallback tombe sur /tmp.

Faux positifs / test-only observes

Ces prefixes existent dans le code mais dans des blocs de tests ou helpers de test. Ils ne semblent pas correspondre a des dossiers runtime utilisateur :

  • idea-openai-compat-* : crates/infrastructure/src/session/openai_compat.rs
  • idea-structured-session-* : crates/infrastructure/src/session/mod.rs
  • idea-web-root-*, idea-server-test-*, idea-server-lock-*, idea-app-data-env-*, idea-shared-core-*, idea-empty-web-* : crates/web-server/src/lib.rs
  • idea-embedded-server-* : crates/app-tauri/src/embedded_server.rs
  • idea-openai-mcp-tools-list-*, idea-openai-mcp-permissions-*, variantes app-tauri-* : tests dans crates/backend/src/openai_tools.rs et crates/app-tauri/src/openai_tools.rs
  • idea-pty-sandbox-*, idea-landlock-*, idea-opencode-*, idea-devices-store-*, idea-secrets-store-*, etc. : helpers de tests avec Drop/remove_dir_all.

Lecture sur leur cleanup

  • Dans la majorite des cas de tests lus, le cleanup nominal existe deja (Drop, remove_dir_all, remove_file).
  • Le vrai risque residuel de ces dossiers est surtout : crash/abort de test, kill brutal, ou interruption d'une suite de tests. Dans ce cas, le residue reste dans /tmp.
  • Comme /tmp est borne a 16 Go, ces residues peuvent devenir un probleme d'hygiene, mais ce n'est pas un sujet de lifecycle MCP par call ; c'est plutot un sujet de hygiene de tests / sweep de reliquats.

Fenetres de cleanup recommandes

Runtime produit

  • idea-mcp/<project>.sock : cleanup a la fermeture du listener MCP (deja en place) ; stale cleanup avant bind (deja en place).
  • idea-mcp/ parent dir : cleanup best-effort si vide apres fermeture du dernier listener, ou sweep au demarrage de l'app / ouverture projet.

Artefacts de tests

  • Cleanup nominal dans chaque test/helper (souvent deja fait).
  • Ajouter si besoin un sweep best-effort des prefixes idea-* generes par les tests au debut/fin des jobs de test locaux/CI.
  • Ne pas melanger cela avec la logique runtime MCP : c'est un chantier distinct.

Recommandation de perimetre pour le ticket #111

  1. Cadrer #111 sur les artefacts runtime visibles par l'utilisateur.
  2. Traiter en priorite idea-mcp :
    • verifier si le dossier parent vide reste parfois en place ;
    • si oui, le supprimer quand il devient vide ou au prochain demarrage.
  3. Ouvrir si necessaire un second ticket dedie a l'hygiene des reliquats de tests sous /tmp.

Reponse a la question produit initiale

  • Oui, IdeA peut produire un artefact sous /tmp pour le MCP runtime (idea-mcp), mais ce n'est pas cree par appel MCP individuel.
  • Non, les dossiers cites dans la description ne semblent pas, a ce stade, etre crees par les appels MCP IdeA de production ; ils sont majoritairement issus de tests.