---
id: "a5bac900-806d-4e13-866f-7ebae686a43d"
number: 139
title: "SDK plugins: aligner l’API publique et les exemples sur une persistance plugin-owned hors projet"
status: "qa"
priority: "critical"
sprint: null
links: [{"target":"#138","kind":"dependsOn"}]
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: 1785702774592
updatedAt: 1785709504027
version: 3
---
Implémenter le contrat décidé en #138. Ce ticket ne doit démarrer qu’après arbitrage architecture, car la forme exacte de l’API publique peut varier (`ctx.storage` canonique seul, ou nouvelle API publique de document structuré plugin-scopé hors projet).\n\nPérimètre attendu après #138 :\n1. Faire de la voie canonique plugin-owned celle décidée en #138, et retirer l’incitation actuelle à écrire l’état interne du plugin dans le workspace utilisateur / `.ideai/`.\n2. Mettre à jour `sdk/IdeaSDK/README.md` et `sdk/IdeaSDK/examples/hello-plugin` pour que l’exemple de référence n’écrive plus `.ideai/hello-plugin.txt` ni `.ideai/hello-plugin.json` comme état interne par défaut.\n3. Si #138 décide qu’une nouvelle API SDK publique est nécessaire (par ex. document structuré plugin-scopé hors projet), l’exposer de bout en bout : types SDK, façade runtime publique, adaptateurs hôte nécessaires, et documentation d’usage.\n4. Garantir que la désinstallation du plugin purge aussi l’état plugin-owned correspondant, conformément au contrat #138, sans supprimer les fichiers métier du projet que le plugin aurait modifiés explicitement.\n\nCritères d’acceptation :\n- Le README SDK sépare explicitement données project-owned vs plugin-owned.\n- L’exemple de référence n’emploie plus `.ideai/...` pour stocker son état interne.\n- Si une nouvelle API publique a été décidée en #138, elle est documentée, typée et couverte par des tests.\n- La purge de l’état plugin-owned à la désinstallation est prouvée par tests ciblés sur le chemin réellement choisi par #138.\n- Aucun message public du SDK ne laisse entendre que `.ideai/` est le lieu normal de persistance interne d’un plugin.