Files
IdeA/.ideai/tickets/273/carnet.md

73 lines
4.2 KiB
Markdown

---
issueRef: "#273"
version: 7
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
updatedAt: 1788801870891
---
## Plan QA initial (Architect + UX, 2026-09-07)
Backend/application:
- reload d'un plugin directory modifie => hash change et `restart_required=false`.
- manifest id mismatch => erreur.
- `expectedContentHash` mismatch => `CONFLICT`.
- source archive/non relodable => `UNSUPPORTED`/`INVALID` explicite.
- manifest invalide: etat/erreur robuste, anciens tools conserves.
Infra/protocole:
- package commit atomique.
- ancien bundle URL hash rejete apres registry update; nouveau hash servi.
- `PluginMcpSupervisor::reconcile` stoppe les serveurs retires et demarre les nouveaux.
MCP/tools:
- `tools/list` contient `idea_plugin_reload`.
- permission refusee par defaut.
- permission autorisee => retour JSON conforme.
- non-regression des tools IdeA existants.
Frontend si #272 implemente:
- provider recharge un seul plugin, appelle `dispose`, remplace commands/layouts/tools, conserve les autres plugins.
- feedback cellule: en cours, succes, deja a jour, echec non bloquant.
- echec conserve les anciens tools.
Scenario representatif:
- projet A demande a agent projet B/plugin de modifier un plugin directory.
- A appelle `idea_plugin_reload` sans redemarrer IdeA.
- A utilise le nouveau tool ou valide qu'un nouveau `tools/list` l'expose. Noter explicitement toute limite provider si un CLI actif garde un cache interne.
## Premier verdict QA (2026-09-07)
Verdict initial: ROUGE pour validation complète, mais les tests ciblés hot reload sont verts. Bloquant identifié: fixture SDK absente dans le worktree DevBackend, pas un défaut direct de `ReloadPlugin`.
Preuves vertes QA:
- `cargo test -p application plugin::tests -- --nocapture` => 32 passed.
- `cargo test -p infrastructure --test mcp_server -- --nocapture` => 38 passed.
- `cargo test -p backend openai_tools::tests -- --nocapture` => 10 passed.
- `cargo test -p backend plugin_reloaded_relays_hashes_and_changed_flag_to_wire -- --nocapture` => 1 passed.
- `cargo test -p app-tauri backend_core_builds_without_desktop_runtime -- --nocapture` => compile app-tauri OK, tests filtres OK.
KO initial:
- `cargo test -p infrastructure --test plugin_install_load -- --nocapture` => 3 passed, 2 failed, `No such file or directory` sur `sdk/IdeaSDK/examples/hello-plugin`.
Diagnostic Main/Git:
- Worktree principal: submodule `sdk/IdeaSDK` initialise, fixture presente.
- Worktree backend: submodule non initialise (`-d1c3c00... sdk/IdeaSDK`).
- Git a initialise `sdk/IdeaSDK` dans les worktrees backend + frontend via source locale `/home/anthony/Documents/Projects/IdeA/sdk/IdeaSDK`, sans modifier les changements DevBackend, push, merge ou rebase.
- Git a relance `cargo +stable test -p infrastructure --test plugin_install_load` dans le worktree backend => 5 passed / 0 failed.
## Verdict QA officiel (2026-09-07)
VERT pour #273/#271 sur `feature/269-backend`.
Commandes relancees:
- `cargo +stable test -p application plugin::tests -- --nocapture` => 32 passed.
- `cargo +stable test -p infrastructure --test mcp_server -- --nocapture` => 38 passed.
- `cargo +stable test -p backend openai_tools::tests -- --nocapture` => 10 passed.
- `cargo +stable test -p infrastructure --test plugin_install_load -- --nocapture` => 5 passed.
- `cargo +stable test -p infrastructure plugin -- --nocapture` => 10 passed.
- `cargo +stable test -p backend plugin_reloaded_relays_hashes_and_changed_flag_to_wire -- --nocapture` => 1 passed.
- `cargo +stable test -p app-tauri backend_core_builds_without_desktop_runtime -- --nocapture` => app-tauri compile OK, filtered binaries OK.
Couverture validee: `ReloadPlugin`, hash changé/identique/conflit, source archive refusée, store plugin reel, confinement install archive/directory, MCP `tools/list`, permission write refusee par defaut et autorisee explicitement, routage OpenAI/MCP camelCase, evenement backend, non-regression tools MCP existants.
Risque restant: la validation prouve exposition/routage cote serveur/provider. Elle ne prouve pas qu'un provider CLI actif invalide toujours son cache local de `tools/list`; selon provider, l'agent peut devoir relister les tools avant d'utiliser `idea_plugin_reload` ou un tool ajoute par le plugin recharge.