chore(tickets): sync store local — cycle #276 writer du contexte global (branche feature/276-orchestrator-context-writer, QA verte) + reliquats lots #269-#275, note memory plugin hot reload, permissions systeme agent Main

This commit is contained in:
2026-09-07 22:49:29 +02:00
parent ee6f6531ea
commit 68b96e7b55
23 changed files with 806 additions and 9 deletions

View File

@ -0,0 +1,61 @@
---
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=<worktree> ; 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://<pluginId>/current/<contentHash>/...` 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).

View File

@ -0,0 +1,17 @@
---
id: "9386e2dc-5dd1-488c-afe6-0e99ad297a0b"
number: 269
title: "Hot reload des plugins sans relancer IdeA pour les agents inter-projets"
status: "closed"
priority: "high"
sprint: null
links: []
agentRefs: []
attachments: []
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
createdAt: 1788799296392
updatedAt: 1788802262284
version: 6
---
Besoin produit: un agent d'un projet A doit pouvoir demander a un projet/plugin B de creer ou modifier des tools, puis recharger le plugin concerne et utiliser les nouveaux tools sans redemarrer IdeA. Le chantier doit etablir ce qui est techniquement faisable, livrer le chemin minimal robuste et couvrir le flux inter-projets. Contraintes: architecture hexagonale, pas de relance IdeA, pas de push/publication sans validation utilisateur, compatibilite avec les outils MCP/skills existants et le contexte injecte aux agents actifs.