4.2 KiB
issueRef, version, updatedBy, updatedAt
| issueRef | version | updatedBy | updatedAt | ||||
|---|---|---|---|---|---|---|---|
| #273 | 7 |
|
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.
expectedContentHashmismatch =>CONFLICT.- source archive/non relodable =>
UNSUPPORTED/INVALIDexplicite. - 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::reconcilestoppe les serveurs retires et demarre les nouveaux.
MCP/tools:
tools/listcontientidea_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_reloadsans redemarrer IdeA. - A utilise le nouveau tool ou valide qu'un nouveau
tools/listl'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 directorysursdk/IdeaSDK/examples/hello-plugin.
Diagnostic Main/Git:
- Worktree principal: submodule
sdk/IdeaSDKinitialise, fixture presente. - Worktree backend: submodule non initialise (
-d1c3c00... sdk/IdeaSDK). - Git a initialise
sdk/IdeaSDKdans 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_loaddans 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.