diff --git a/docs/QW_SUITE_MAI.md b/docs/QW_SUITE_MAI.md new file mode 100644 index 000000000..26f97ad01 --- /dev/null +++ b/docs/QW_SUITE_MAI.md @@ -0,0 +1,101 @@ +# QW Suite Mai 2026 — Synthèse de livraison + +Sprint d'amélioration RPA Vision V3, branche `feature/qw-suite-mai`, +inspiré par exploration comparative de 5 frameworks computer-use +(Simular Agent-S, browser-use, OpenAI CUA, Coasty, Showlab OOTB). + +## Trois quick wins livrés + +- **QW1 — Multi-écrans** : capture/grounding par `monitor_index` avec fallbacks + focus actif puis composite. Backward 100% sur workflows existants. + Ajoute `screeninfo>=0.8` aux dépendances Agent V1. +- **QW2 — LoopDetector composite** : détection passive de stagnation via + 3 signaux (CLIP screen_static + action_repeat + retry_threshold). + Bascule en `paused_need_help` automatique. +- **QW4 — Safety checks hybrides** : `pause_for_human` enrichi de checks + déclaratifs (workflow) + LLM contextuels (`medgemma:4b` local, timeout 5s, + fallback safe). UX VWB avec ChecklistPanel acquittable + audit trail. + +## Kill-switches en cas de problème + +```bash +sudo systemctl edit rpa-streaming +# Ajouter sous [Service] : +Environment=RPA_LOOP_DETECTOR_ENABLED=0 +Environment=RPA_SAFETY_CHECKS_LLM_ENABLED=0 +sudo systemctl restart rpa-streaming +``` + +Rollback complet : `git checkout backup/pre-qw-suite-mai-2026-05-05`. + +## Variables d'environnement utiles + +| Variable | Défaut | Effet | +|---|---|---| +| `RPA_LOOP_DETECTOR_ENABLED` | `1` | Kill-switch QW2 (composite) | +| `RPA_LOOP_SCREEN_STATIC_THRESHOLD` | `0.99` | Seuil similarité CLIP | +| `RPA_LOOP_SCREEN_STATIC_N` | `4` | Nb captures consécutives | +| `RPA_LOOP_ACTION_REPEAT_N` | `3` | Nb actions identiques | +| `RPA_LOOP_RETRY_THRESHOLD` | `3` | Nb retries cumulés | +| `RPA_SAFETY_CHECKS_LLM_ENABLED` | `1` | Kill-switch QW4 LLM contextuel | +| `RPA_SAFETY_CHECKS_LLM_MODEL` | `medgemma:4b` | Modèle Ollama | +| `RPA_SAFETY_CHECKS_LLM_TIMEOUT_S` | `5` | Timeout dur (secondes) | +| `RPA_SAFETY_CHECKS_LLM_MAX_CHECKS` | `3` | Max checks LLM ajoutés | + +## Smoke tests manuels à effectuer avant la démo GHT + +Ces tests demandent une interaction VWB et un Agent V1 actif — non automatisables. + +1. **QW1 multi-écrans** : rejouer un workflow Easily Assure validé. Vérifier + logs `[BUS] lea:monitor_routed` dans `journalctl -u rpa-streaming`. Le clic + doit atterrir au bon endroit même sur un poste à 2 écrans. +2. **QW2 LoopDetector** : optionnel, difficile à reproduire fiable. Si tu + constates un bouclage en démo, vérifier que `paused_need_help` se déclenche + automatiquement avec `pause_reason="loop_detected"`. +3. **QW4 safety_checks** : + - Workflow ancien sans `safety_checks` → bulle simple legacy s'affiche + - Workflow avec `safety_checks` déclaratifs → ChecklistPanel s'affiche, + bouton Continuer désactivé tant que required non cochés + - Workflow `safety_level: medical_critical` → checks LLM ajoutés en + plus (badge `[Léa]`), apparaissent dans les 5s + - POST `/api/v3/replay/resume` sans required acquitté → 400 toast UI + +## Tests automatisés (référence) + +``` +.venv/bin/pytest tests/unit/test_monitor_router.py \ + tests/integration/test_grounding_offset.py \ + tests/unit/test_loop_detector.py \ + tests/integration/test_loop_detector_replay.py \ + tests/unit/test_safety_checks_provider.py \ + tests/integration/test_replay_resume_acknowledgments.py \ + -v +``` + +Référence : 24 tests QW + 89 baseline = 113 passed. + +## Référence design + +`docs/superpowers/specs/2026-05-05-qw-suite-mai-design.md` + +## Référence plan d'exécution + +`docs/superpowers/plans/2026-05-05-qw-suite-mai.md` + +## Backup + +Branche backup poussée Gitea avant le sprint : +`backup/pre-qw-suite-mai-2026-05-05` + tag `backup-pre-qw-suite-mai-2026-05-05`. + +## Statut au 2026-05-05 + +| Composant | État | Smoke démo nécessaire | +|---|---|---| +| QW1 monitor_router + offsets | Livré, tests verts | Oui (multi-écran physique) | +| QW1 enrichissement Agent V1 | Livré, fallback gracieux si screeninfo absent | Oui (Windows réel) | +| QW1 hook serveur + cablage executor | Livré (commit fix fc01afa59) | Oui | +| QW2 LoopDetector module | Livré, tests verts | Non (impossible à reproduire fiable) | +| QW2 hook api_stream | Livré, tests verts | Non | +| QW4 SafetyChecksProvider | Livré, tests verts | Oui (avec workflow `medical_critical`) | +| QW4 endpoint /replay/resume + proxy VWB | Livré, tests verts | Oui (POST avec acknowledged_check_ids) | +| QW4 PauseDialog + PropertiesPanel | Livré, 0 nouvelle erreur TS | Oui (rendre la bulle dans VWB) |