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:
72
.ideai/tickets/273/carnet.md
Normal file
72
.ideai/tickets/273/carnet.md
Normal file
@ -0,0 +1,72 @@
|
||||
---
|
||||
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.
|
||||
17
.ideai/tickets/273/issue.md
Normal file
17
.ideai/tickets/273/issue.md
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
id: "08564396-1229-4cf0-8a1d-b26957bbfd27"
|
||||
number: 273
|
||||
title: "QA hot reload plugin sans relance IdeA"
|
||||
status: "closed"
|
||||
priority: "high"
|
||||
sprint: null
|
||||
links: [{"target":"#269","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"ab328d90-c307-4771-a3b6-6c56089c8506","role":"assigned"}]
|
||||
attachments: []
|
||||
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
createdAt: 1788799296523
|
||||
updatedAt: 1788801870891
|
||||
version: 7
|
||||
---
|
||||
Ecrire et executer les tests pertinents pour valider le hot reload plugin: unitaires backend, integration MCP/tools, non-regression des outils existants, et scenario representatif ou un outil ajoute/modifie devient utilisable par un agent actif sans relancer IdeA. Inclure les commandes et sorties reelles.
|
||||
Reference in New Issue
Block a user