62 lines
5.6 KiB
Markdown
62 lines
5.6 KiB
Markdown
---
|
|
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).
|