docs(qw): synthèse de livraison QW suite mai 2026
Some checks failed
tests / Lint (ruff + black) (push) Successful in 14s
tests / Tests unitaires (sans GPU) (push) Failing after 13s
tests / Tests sécurité (critique) (push) Has been skipped

Doc condensée des 3 quick wins livrés (QW1 multi-écrans, QW2 LoopDetector,
QW4 safety_checks hybrides) avec :
- procédures kill-switch et rollback
- table des env vars
- smoke tests manuels à effectuer avant démo GHT
- statut composant par composant

Pointe vers spec et plan d'exécution complets.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dom
2026-05-05 23:48:26 +02:00
parent 65da557310
commit aa47172f0f

101
docs/QW_SUITE_MAI.md Normal file
View File

@@ -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) |