--- issueRef: "#269" version: 6 updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} updatedAt: 1788802262284 --- ## Topologie git locale (décision Git, 2026-09-07) - **Base** : `develop` @ `8d2be75` (inclut le merge cross-project #260/#267 — fondation MCP inter-projets du chantier — + chore gitignore backups AppImage `.old-*`). - **Branches chantier** (pattern #260) : - `feature/269-backend` → worktree `.ideai/run/fe887179-933f-47d4-960f-c3b06827f86c/worktree` (DevBackend, ticket #271). - `feature/269-frontend` → worktree `.ideai/run/8f7da528-58df-4315-97e9-0562230ecc19/worktree` (UX + DevFrontend, ticket #272). Si #272 reste agent-facing (doc only), branche supprimée sans merge. - **QA (#273)** : pas de branche dédiée ; tests exécutés sur `feature/269-backend` puis sur develop après merge. - **Worktree principal** : reste sur `develop`, contient l'état runtime `.ideai/` vivant (tickets 269-273 non trackés, permissions). Ne pas stash, ne pas switcher. - **Branches #260** (`feature/260-backend/frontend/cross-project-agents`) : fusionnées dans develop, conservées comme historique (convention repo). Worktrees nettoyés/retargetés. - **Aucun push** : develop reste en avance de 238+ commits sur origin ; rien ne sort sans validation utilisateur. - **Fusion vers develop** : uniquement par Git, après QA verte, en merge commit référençant #269/#271/#272. ### Garde-fous devs - Travailler uniquement dans son worktree (checkout de sa branche déjà fait). Jamais de `git add -A` / `git add .` : `scripts/` et l'état `.ideai/` du worktree principal doivent rester hors commits de code. - Commits convention `type(scope): ... — #27x`. Pas de push, pas de merge, pas de rebase : à Git. ## Submodule sdk/IdeaSDK dans les worktrees (fix QA #273, 2026-09-07) `git worktree add` n'initialise pas les submodules, et `d1c3c00` (gitlink develop) n'existe que localement (jamais poussé) → `git submodule update --init` échoue sur gitea. Préparation appliquée par Git sur les DEUX worktrees (backend + frontend), sans rien toucher d'autre : ```bash WT= ; MOD=$(git -C $WT rev-parse --git-path modules/sdk/IdeaSDK) rm -rf "$MOD" $WT/sdk/IdeaSDK # restes d'un clone échoué éventuels git -C $WT \ -c submodule.sdk/IdeaSDK.url=/home/anthony/Documents/Projects/IdeA/sdk/IdeaSDK \ -c protocol.file.allow=always \ submodule update --init --recursive sdk/IdeaSDK ``` - Origine du submodule dans chaque worktree = chemin local du submodule principal (offline-safe). Config partagée du repo NON modifiée (reste gitea). - État vérifié : `git submodule status --recursive` → ` d1c3c00... sdk/IdeaSDK` propre sur les deux worktrees ; fixture `sdk/IdeaSDK/examples/hello-plugin` présente. - Travail non commité DevBackend vérifié intact (13 fichiers modifiés + `mcp/plugins.rs` non suivi). - Test QA relancé par Git dans le worktree backend : `cargo +stable test -p infrastructure --test plugin_install_load` → **5 passed / 0 failed** (dont les 2 `hello-plugin` rouges). QA peut reprendre l'exécution officielle. - Racine du blocage cargo en env agent : `RUSTUP_HOME` isolé sans default → utiliser `cargo +stable` (ou configurer le default). ## Cadrage produit/architecture initial (2026-09-07) Besoin livré par #269: permettre a un agent du projet A de demander a un projet/plugin B d'ajouter/modifier des tools, puis de recharger le plugin dans A sans relancer IdeA. Verdict Architect: faisable. Le backend relit deja registry/manifest a la demande et le protocole `idea-plugin:///current//...` evite le cache ESM si le hash change. Les blocages actuels sont le runtime plugin frontend charge une fois au mount et le catalogue MCP agent-facing statique. Limite a annoncer/tester: IdeA peut garantir que le serveur, le registry et les prochains `tools/list` voient le nouvel etat. Elle ne peut pas forcer tous les CLIs/providers actifs a refaire leur introspection interne instantanement; selon provider, le tool peut etre visible au tour suivant ou apres reconnexion MCP interne, sans redemarrage IdeA. Decision UX: pas de nouvelle surface humaine dediee en V1. Feedback dans la cellule/flux agent: reload en cours, succes, deja a jour, echec non bloquant avec anciens tools conserves. ## Intégration locale (Git, 2026-09-07) - **Commit branche** : `805b1b4` sur `feature/269-backend` — 14 fichiers du chantier uniquement (add explicite, pas de `.ideai`, pas d'artefacts), 863 insertions / 32 suppressions, créé `crates/infrastructure/src/orchestrator/mcp/plugins.rs`. - **Merge local** : `ad2c6b4` `merge(plugins)` `--no-ff` vers `develop` (réf. #269/#271/#272, QA verte #273). Aucune divergence pré-merge (base `8d2be75` = HEAD develop) → arbre develop == arbre branche, résultats QA transposables tels quels. - **Frontend** : #272 clos sans code → worktree `8f7da528…/worktree` retiré (`--force`, requis car submodule), branche `feature/269-frontend` supprimée, `git worktree prune` fait. Résidus session (AGENTS.md, patch #210-212) laissés dans le run dir. - **Backend** : worktree `fe887179…/worktree` conservé sur `feature/269-backend` (historique + session DevBackend), submodule local propre. - **Worktree principal** : état runtime `.ideai` + `scripts/` préservés à l'identique pendant le merge. - **Statuts** : #271 QA→closed par Git (v8). #269 parent laissé à Main (v4 au moment de l'intégration). - **Rien poussé** : develop avance localement uniquement. - Note : pas de rebuild AppImage dans ce cycle ; si validation live du hot reload est voulue, créer un ticket rebuild (comme #265 l'avait été pour #260).