---
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:<pluginId>:<serverId>` 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.