--- name: ticket43-backend-b1-b4-qa-validation description: memory note ticket43-backend-b1-b4-qa-validation metadata: type: project --- --- title: Validation QA backend B1-B4 du système de plugins #43 type: reference description: Verdict QA du périmètre backend plugin B1-B4 sur feature/ticket43-plugin-system, tests ajoutés et limites sandbox constatées. --- # Validation QA backend B1-B4 du système de plugins #43 Sur `feature/ticket43-plugin-system`, QA a validé le périmètre backend B1-B4 sans modifier le frontend. Tests/ajustements QA ajoutés : - `crates/domain/tests/layout.rs` : les helpers de tests existants ignorent explicitement `LayoutNode::CustomPluginLayout(_)`, ce qui rétablit l'exhaustivité de compilation des tests domaine après l'ajout du layout plugin custom. - `crates/application/src/plugin/mod.rs` : tests in-memory des ports plugin pour vérifier : - catalogue runtime vide pour `Disabled`, `PendingUninstall`, `Invalid` ; - réconciliation MCP limitée aux plugins enabled + serveurs `autoStart`, identité `plugin::` et résolution sous `pluginRoot` ; - disable stoppe le MCP, publie `PluginDisabled`, retire le plugin du runtime catalog ; - uninstall stoppe le MCP, retire registry + package et publie `PluginUninstalled`. Commandes vertes constatées : ```text cargo test -p application plugin --offline --no-fail-fast # 7 passed; 0 failed cargo test -p domain -p application -p infrastructure -p backend -p app-tauri plugin --offline --no-fail-fast # plugin-filtered targeted suite green; application 7 plugin tests, domain 3 plugin tests, # serde roundtrip custom plugin layout, infrastructure 3 plugin tests, dto plugin filtered test all ok. cargo test -p app-tauri --test dto_plugins --offline --no-fail-fast # 2 passed; 0 failed cargo fmt --check # OK ``` Workspace complet : ```text cargo test --workspace --offline --no-fail-fast -- --test-threads=1 ``` Résultat KO attendu dans ce sandbox, hors périmètre plugin : - `-p infrastructure --lib` : 10 échecs `session::openai_compat::*` sur `bind: Os { code: 1, kind: PermissionDenied, message: "Operation not permitted" }`. - `-p web-server --lib` : 2 échecs de bind `127.0.0.1:0 Operation not permitted` et 5 scénarios websocket/terminal recevant `error` au lieu de `terminal.attached`, cohérents avec restrictions loopback/PTY du sandbox. Verdict : backend plugins B1-B4 validé QA avec réserve uniquement environnementale sur le workspace global.