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

4.2 KiB

issueRef, version, updatedBy, updatedAt
issueRef version updatedBy updatedAt
#273 7
kind agent_id
agent a6c6ea12-bfc6-4bdc-8031-324102dfa34d
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.