docs(qw): synthèse de livraison QW suite mai 2026
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:
101
docs/QW_SUITE_MAI.md
Normal file
101
docs/QW_SUITE_MAI.md
Normal 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) |
|
||||
Reference in New Issue
Block a user