docs: add POC specs, handoffs, and research notes

This commit is contained in:
Dom
2026-06-02 16:28:34 +02:00
parent 18ed6cb751
commit f2e9aac6b7
86 changed files with 27615 additions and 25 deletions

View File

@@ -0,0 +1,474 @@
# Cartographie des briques existantes — modèle Mandat / Protocoles
Date : 2026-05-25
Statut : lecture structurelle, pas une spec d'implémentation
## Synthèse
Le projet contient déjà la plupart des briques nécessaires au modèle :
```text
intention / mandat -> agent_chat + working_memory + ORA
protocoles / gestes -> gesture_catalog + autonomous_planner + workflows VWB
observation visuelle -> capturers + grounding + SomEngine + OCR/VLM
scènes / dialogues -> DialogResolver + window guards + UI patterns
action -> agent_v1 executor + replay engine
vérification retour -> ReplayVerifier + Validator V2 + shadow validator
apprentissage -> replay_learner + target_memory + correction packs + coaching
évaluation -> LeaBench + tests replay + démo DPI
supervision -> pause supervisée + UI Léa + confirmation loop
```
La faiblesse principale n'est pas l'absence de composants. C'est leur absence de **contrat unificateur** autour de :
```text
mandat -> intention -> scène -> affordance -> geste -> retour -> preuve apprenable
```
## Briques runtime live
### Agent Windows live
Fichiers :
```text
agent_v0/agent_v1/core/executor.py
agent_v0/agent_v1/core/grounding.py
agent_v0/agent_v1/core/policy.py
agent_v0/agent_v1/core/recovery.py
agent_v0/agent_v1/core/system_dialog_guard.py
agent_v0/agent_v1/ui/*
```
Rôle actuel :
```text
exécuter les actions ;
résoudre les cibles visuelles ;
faire les fallbacks ;
pauser/demander de l'aide ;
gérer certains dialogues ;
remonter les résultats au serveur.
```
Lien avec le modèle :
```text
geste
observation locale
doute de localisation
doute de scène
retour action
pause supervisée
```
Manque conceptuel :
```text
pas encore de trace causale complète ;
pas de mandat/intention actif porté explicitement ;
fallbacks encore trop locaux si non encadrés par le contrat ;
pas de typage explicite du doute dans l'API résultat.
```
### Serveur replay / coordination
Fichiers :
```text
agent_v0/server_v1/api_stream.py
agent_v0/server_v1/stream_processor.py
agent_v0/server_v1/replay_engine.py
agent_v0/server_v1/replay_watchdog.py
agent_v0/server_v1/replay_verifier.py
agent_v0/server_v1/replay_learner.py
agent_v0/server_v1/replay_memory.py
agent_v0/server_v1/resolve_engine.py
```
Rôle actuel :
```text
construire/rejouer les actions ;
distribuer les actions à l'agent ;
résoudre les cibles côté serveur ;
vérifier les retours ;
planifier retries ou pauses ;
enregistrer résultats et apprentissages.
```
Lien avec le modèle :
```text
protocole candidat sous forme workflow/replay ;
résolution scène/affordance via resolve_engine ;
retour via ReplayVerifier ;
preuve potentielle via replay_learner/replay_memory ;
pause supervisée ;
temporalité via watchdog/retry.
```
Manque conceptuel :
```text
le workflow reste la structure dominante ;
les expected_result existent mais ne forment pas encore une trace causale ;
la vérification ne sait pas toujours quelle intention elle valide ;
les retries ne sont pas encore arbitrés par doute typé.
```
## Briques cognitives déjà présentes
### Mémoire de travail
Fichier :
```text
core/cognition/working_memory.py
```
Points forts :
```text
objective ;
current_step ;
observation courante ;
historique d'actions ;
faits appris ;
expected_screen ;
confidence ;
needs_help ;
timing.
```
Correspondance modèle :
```text
mandat/intention embryonnaire ;
trace courte ;
précondition attendue via expected_screen ;
temporalité ;
doute via confidence/needs_help.
```
Manque :
```text
pas encore de scène d'intention typée ;
pas de trace causale formelle geste/scène/intention/hypothèse/retour ;
pas de distinction correction/démonstration/validation.
```
### Boucle ORA
Fichier :
```text
core/execution/observe_reason_act.py
```
Points forts :
```text
observe -> reason -> act -> verify ;
Decision avec expected_after ;
VerificationResult ;
mode instruction via VLM ;
erreurs typées de base.
```
Correspondance modèle :
```text
base naturelle pour le contrat d'action ;
hypothèse de retour via expected_after ;
vérification post-geste.
```
Manque :
```text
encore orienté step/workflow ;
pas de protocole ouvert ;
pas de preuve apprenable structurée ;
pas d'opérateur d'extension de grammaire.
```
## Briques intention / gestes / risque
### Agent chat et planification autonome
Fichiers :
```text
agent_chat/intent_parser.py
agent_chat/autonomous_planner.py
agent_chat/gesture_catalog.py
agent_chat/confirmation.py
agent_chat/urgences_orchestrator.py
```
Points forts :
```text
parseur d'intentions utilisateur ;
planner libre sans workflow pré-enregistré ;
catalogue de gestes universels Windows/navigateur/édition ;
évaluation de risque ;
confirmation utilisateur ;
orchestrateur urgence avec intentions nommées.
```
Correspondance modèle :
```text
mandat ;
protocoles universels ;
gestes types ;
niveau de risque ;
protocole métier urgence.
```
Manque :
```text
cette couche semble parallèle au runtime live, pas intégrée au replay agent_v1 ;
le risque est lexical et statique, pas encore tutoré par niveau de délégation ;
les gestes ne sont pas encore reliés à scènes/affordances/retours qualifiés.
```
## Briques scènes / dialogues
### DialogResolver
Fichiers :
```text
agent_v0/server_v1/core/dialog/catalog.py
agent_v0/server_v1/core/dialog/resolver.py
tests/unit/test_dialog_resolver.py
tests/integration/test_dialog_resolver_endpoint.py
```
Points forts :
```text
catalogue de dialogues connus ;
policy auto/pause/skip ;
protection modaux système ;
pause conservative sans match ;
evidence title + OCR/UIA.
```
Correspondance modèle :
```text
scènes d'intention simples ;
affordances compatibles par dialogue ;
affordances anti-intention potentielles ;
rupture de scène.
```
Manque :
```text
pas encore branché sur une intention active ;
un dialogue est connu en absolu, pas encore "compatible avec ce mandat" ;
les scènes composées métier restent hors catalogue.
```
## Briques vérification / preuve
### ReplayVerifier et Validator V2
Fichiers :
```text
agent_v0/server_v1/replay_verifier.py
core/validation/orchestrator.py
core/workflow/shadow_validator.py
tests/unit/test_replay_critic.py
tests/integration/test_validator_step10.py
```
Points forts :
```text
vérification pixel ;
critic sémantique avec expected_result ;
verdicts agrégés ;
shadow validation.
```
Correspondance modèle :
```text
qualification du retour ;
preuve apprenable potentielle ;
doute d'effet ;
temporalité post-action.
```
Manque :
```text
le retour n'est pas toujours rattaché à intention/scène/affordance ;
le "rien ne change" n'est pas encore qualifié par protocole ;
la preuve apprenable n'est pas encore un objet explicite.
```
## Briques apprentissage / correction
### Mémoire et corrections
Fichiers :
```text
core/learning/target_memory_store.py
agent_v0/server_v1/replay_learner.py
agent_v0/server_v1/replay_memory.py
core/corrections/*
core/coaching/*
```
Points forts :
```text
mémoire de cible persistante JSONL + SQLite ;
résultats replay enregistrés ;
correction packs versionnés ;
statistiques succès/échec ;
sessions de coaching avec accept/reject/correct/manual/skip.
```
Correspondance modèle :
```text
preuve apprenable ;
correction ;
démonstration ;
validation ;
désapprentissage par baisse confiance / failure_count ;
niveau de délégation tutoré.
```
Manque :
```text
les preuves actuelles sont très orientées cible UI ;
il manque intention/scène/affordance/retour dans la clé d'apprentissage ;
correction et démonstration sont proches mais pas encore distinguées au niveau modèle ;
le niveau de délégation par protocole/environnement n'est pas centralisé.
```
## Briques évaluation / terrains d'essai
### LeaBench
Fichiers :
```text
core/evaluation/computer_use_bench.py
core/evaluation/ollama_lea_bench_adapter.py
tools/lea_bench.py
tools/lea_bench_ollama.py
benchmarks/computer_use/cases/*.jsonl
```
Rôle :
```text
mesurer décisions computer-use ;
cas Bloc-notes/replay ;
adapter modèles locaux ;
scorer abstention/danger.
```
Usage modèle :
```text
tester scène/intention/affordance ;
mesurer action fiable vs abstention ;
convertir échecs réels en cas reproductibles.
```
### Maquette DPI / urgence
Fichiers :
```text
demo/facturation_urgences/*
tests/e2e/test_urgence_aiva_demo.py
tests/e2e/fixtures/urgence_aiva_demo/*
```
Rôle :
```text
terrain métier ;
cas urgences synthétiques ;
workflow démo existant ;
stress test scènes composées et protocole métier.
```
Usage modèle :
```text
protocole métier générique ;
adaptateur applicatif ;
apprentissage sans contenu sensible réel ;
validation de la généralisation hors Bloc-notes.
```
## Diagnostic structurel
Le projet a déjà presque toutes les pièces, mais elles ne sont pas au même étage :
```text
agent_chat sait raisonner intention/risque mais n'est pas le runtime live principal ;
agent_v1 sait exécuter live mais raisonne encore action/cible ;
server_v1 sait vérifier/apprendre mais pas sous trace causale complète ;
core/cognition a la mémoire de travail mais elle n'est pas encore le fil commun ;
core/learning sait mémoriser mais pas encore apprendre une grammaire d'action ;
LeaBench sait mesurer mais doit recevoir des cas "mandat/protocole/scène".
```
## Assemblage conceptuel recommandé
Sans parler encore de code, la bonne direction est d'utiliser :
```text
core/cognition/working_memory.py
comme fil de mandat/intention/trace causale ;
agent_chat/gesture_catalog.py
comme base des protocoles universels ;
agent_v0/server_v1/core/dialog/*
comme catalogue initial de scènes/dialogues ;
agent_v0/server_v1/replay_verifier.py + core/validation/*
comme qualification du retour ;
core/learning + core/corrections + core/coaching
comme apprentissage tutoré et désapprentissage ;
LeaBench + Bloc-notes + maquette DPI
comme banc de validation progressif.
```
## Point d'attention immédiat
Une correction technique est déjà en attente dans :
```text
agent_v0/agent_v1/core/grounding.py
```
Elle bloque le fallback texte local après rejet sémantique serveur. Elle correspond directement à la règle :
```text
un rejet sémantique doit dominer les fallbacks opportunistes.
```
Elle devra être testée et intégrée quand on repassera en exécution.

View File

@@ -0,0 +1,99 @@
# Cartographie micro-apprentissage Lea - 2026-05-27
## But
Passer du replay metier fragile a une boucle courte ou Lea observe des gestes simples, les interprete, verifie leur effet, puis memorise ce qui marche.
On reutilise l'existant. On ne fabrique pas une boite a clic.
Premiere competence retenue: `ouvrir le menu Demarrer`. C'est plus atomique que "ouvrir Chrome" ou "ouvrir Word" et sert de base aux competences composees suivantes.
## Briques a reutiliser maintenant
| Besoin | Brique existante | Chemin |
|---|---|---|
| Demarrer une demonstration humaine | Bouton `Apprenez-moi` + `SharedState.start_recording()` | `agent_v0/agent_v1/ui/chat_window.py`, `agent_v0/agent_v1/ui/shared_state.py` |
| Capturer clics/frappes/ecran | `AgentV1.start_session()` + `TraceStreamer` | `agent_v0/agent_v1/main.py`, `agent_v0/agent_v1/network/streamer.py` |
| Recevoir les evenements | endpoint `/event` + `StreamProcessor.process_event()` | `agent_v0/server_v1/api_stream.py`, `agent_v0/server_v1/stream_processor.py` |
| Construire une trace exploitable | `StreamProcessor.finalize_session()` + `GraphBuilder` | `agent_v0/server_v1/stream_processor.py`, `core/graph/graph_builder.py` |
| Apprendre des corrections humaines | `ReplayLearner.record_human_correction()` | `agent_v0/server_v1/replay_learner.py` |
| Memoriser les cibles fiables | `memory_record_success()` / `memory_lookup()` | `agent_v0/server_v1/replay_memory.py`, `core/learning/target_memory_store.py` |
| Verifier qu'une action a eu un effet | `ReplayVerifier.verify_action()` | `agent_v0/server_v1/replay_verifier.py` |
| Parler clairement a l'humain | contrat 4 champs | `agent_v0/agent_v1/ui/message_contract.py` |
| Verifier le socle technique | preflight read-only | `tools/lea_micro_preflight.py` |
## Briques a eviter pour la V1 micro-learning
- Replay VWB/DAG comme moteur principal.
- Coordonnees brutes comme verite finale.
- Clipboard global Linux/Windows/NoMachine comme transport de donnees.
- Scenarios metier longs.
- Corrections injectees a la main dans un workflow pour faire passer une demo.
## Flux minimal
1. Observation
Dom lance `Apprenez-moi`, nomme une micro-tache, puis montre 1 geste court.
2. Interpretation
Le serveur conserve les evenements, les screenshots, les titres de fenetre, les indices UIA/OCR/SoM disponibles.
3. Generalisation prudente
Lea derive une competence courte: intention, contexte d'ecran attendu, signaux visuels, postcondition observable.
4. Tentative encadree
Lea ne tente en autonomie que si la cible est suffisamment decrite et verifiable.
5. Verification
Pixel diff seul ne suffit pas. Il faut verifier un effet observable: fenetre ouverte, champ rempli, titre change, application fermee, texte present.
6. Memoire
Les succes repetes alimentent `TargetMemoryStore`. Les echecs et corrections humaines alimentent `ReplayLearner`.
7. Demande humaine
Si Lea ne sait pas, elle doit afficher:
```text
J'essaie de : <INTENTION>
J'attendais : <ATTENDU>
Je vois : <VU>
Peux-tu : <DEMANDE>
```
## Etats d'une competence
| Etat | Sens |
|---|---|
| OBSERVATION | Lea a seulement vu le geste humain. |
| COACHING | Lea peut proposer une tentative, mais demande confirmation/correction. |
| AUTO_CANDIDATE | Lea a reussi plusieurs fois avec verification. |
| AUTO | Lea peut executer seule avec garde-fous. |
## Fichiers a lire/modifier ensuite
Priorite 1:
- `agent_v0/agent_v1/ui/chat_window.py` : texte de lancement/fin d'apprentissage.
- `agent_v0/agent_v1/ui/shared_state.py` : metadata de session micro-learning.
- `agent_v0/agent_v1/main.py` : nommage session + mode capture.
- `agent_v0/server_v1/stream_processor.py` : sortie de finalisation orientee competence courte.
- `agent_v0/server_v1/replay_learner.py` : persistance des corrections et resultats.
Priorite 2:
- `agent_v0/server_v1/replay_memory.py` : fiabilite et collisions sur boutons generiques.
- `agent_v0/server_v1/replay_verifier.py` : verifier des postconditions simples.
- `agent_v0/agent_v1/core/executor.py` : mode correction humaine et messages visibles.
## Risques prioritaires
1. Confondre trace de demonstration et competence generalisable.
2. Valider une action seulement parce que les pixels bougent.
3. Apprendre une coordonnee dependante DPI/ecran.
4. Produire un message conforme au contrat mais pauvre en contexte.
5. Recharger le VLM au mauvais moment et ajouter une latence cold start.
6. Melanger session de capture et replay actif.
## Regle de travail
Chaque micro-tache doit tenir en moins de deux minutes, avec une postcondition observable. Si on ne peut pas formuler la postcondition, on ne l'apprend pas encore.

View File

@@ -0,0 +1,609 @@
# Modèle Mandat / Protocoles / Scènes pour Léa
Version : 0.1 brainstorming
Date : 2026-05-25
Statut : modèle conceptuel, pas une spec technique
## Thèse
Léa n'est pas une boîte à clics et ne doit pas rejouer un workflow. Léa est une collaboratrice visuelle mandatée.
Elle reçoit une fin à atteindre, choisit un chemin connu ou apprend un chemin nouveau, observe le retour de ses actions, qualifie réussite/échec/doute, puis adapte son comportement.
Formule centrale :
```text
Un protocole est une grammaire d'action autour d'une intention.
```
Un logiciel, un OS ou un DPI peut changer les pixels, les titres, les boutons et les DPI. Le processus métier reste souvent stable : chercher, ouvrir, saisir, valider, enregistrer, corriger, transmettre, facturer, archiver. Léa doit apprendre ces grammaires d'action, pas mémoriser des coordonnées.
## Vocabulaire
### Mandat
Un mandat est une fin déléguée à Léa.
Exemples :
```text
Ecris ce texte et enregistre-le.
Trouve une vidéo de jazz et lance-la.
Ouvre le dossier patient de Mme X.
Saisis cette information dans le logiciel métier.
```
Le mandat n'est pas une suite de clics. Il donne le but, le contexte et éventuellement les limites.
### Intention active
L'intention active est le sous-but courant qui sert le mandat.
Exemple pour `Ecris ce texte et enregistre-le` :
```text
ouvrir un outil de saisie
écrire le texte
déclencher la sauvegarde
choisir ou confirmer le nom
vérifier que le fichier existe
```
### Protocole d'usage
Un protocole d'usage est un chemin connu, adaptable, pour accomplir une intention.
Exemples universels :
```text
ouvrir une application
chercher sur le web
saisir du texte
sauvegarder un fichier
confirmer une boîte de dialogue
fermer une fenêtre
copier-coller
```
Exemples métier :
```text
ouvrir une fiche patient
créer une ligne de facturation
valider une commande de stock
rapprocher une écriture comptable
```
Un protocole n'est pas un workflow figé. Il contient des scènes attendues, des affordances compatibles, des variantes autorisées et des conditions d'arrêt.
### Scène
Une scène est la situation visuelle pertinente pour l'intention courante.
La scène active pertinente n'est pas forcément la fenêtre au focus OS. C'est la zone ou la boîte qui sert le mandat maintenant.
Exemples :
```text
Bloc-notes prêt à recevoir du texte.
Fenêtre Enregistrer sous.
Dialogue "Voulez-vous enregistrer les modifications ?".
Page de résultats Google.
Page vidéo YouTube.
Fiche patient ouverte.
```
### Affordance
Une affordance est une action proposée par la scène.
Exemples :
```text
bouton Enregistrer
bouton Annuler
champ Nom du fichier
barre d'adresse
champ de recherche
bouton Lecture
onglet Patient
bouton Valider
```
Léa ne doit pas seulement reconnaître une affordance. Elle doit comprendre son rôle dans la scène et sa compatibilité avec l'intention.
### Geste
Un geste est l'action concrète décidée dans une scène.
Exemples :
```text
cliquer sur Enregistrer
taper le nom du fichier
appuyer sur Ctrl+S
sélectionner un résultat de recherche
cliquer sur Lecture
```
### Retour
Un retour est tout changement ou non-changement observé après un geste.
```text
Résultat attendu obtenu -> réussite.
Résultat contraire -> échec.
Rien ne change -> attente, latence ou échec à qualifier.
Nouvelle fenêtre -> événement à interpréter.
Erreur -> rupture ou branche prévue selon le protocole.
```
### Doute
Le doute est un signal utile, pas une faiblesse.
Léa doute quand :
```text
les sources visuelles divergent ;
la scène observée ne correspond pas à l'intention ;
aucun protocole connu ne s'applique ;
un retour attendu n'arrive pas ;
une action répétée ne produit aucun effet ;
la scène est sensible ou irréversible sans mandat explicite.
```
Le doute peut mener à une variante, une demande d'aide, ou une pause.
## Boucle cognitive minimale
```text
1. Recevoir le mandat.
2. Déduire l'intention active.
3. Choisir le protocole connu le plus simple.
4. Observer la scène active pertinente.
5. Identifier les affordances disponibles.
6. Choisir le geste compatible avec l'intention.
7. Agir.
8. Observer le retour.
9. Qualifier : réussite, échec, attente, rupture, doute.
10. Continuer, essayer une variante, demander de l'aide, ou apprendre.
```
Le point essentiel : une action n'est pas justifiée par le fait qu'un bouton existe. Elle est justifiée parce que ce bouton, dans cette scène, sert l'intention active.
## Contrat d'action
Avant d'agir, Léa doit pouvoir répondre implicitement à cinq questions :
```text
Quelle intention est-ce que je sers ?
Dans quelle scène suis-je ?
Quelle affordance est-ce que j'utilise ?
Pourquoi cette affordance est-elle compatible avec mon intention ?
Quel retour est-ce que j'attends ?
```
Si Léa ne peut pas produire cette justification, elle ne doit pas transformer l'action en clic opportuniste.
Ce contrat n'impose pas de demander à l'humain à chaque doute. Il impose que toute tentative ait une hypothèse vérifiable.
## Autonomie
L'autonomie de Léa est une autonomie d'initiative, pas une autonomie d'entêtement.
Léa peut :
```text
choisir le chemin le plus simple ;
changer de chemin si le premier échoue ;
essayer une variante cohérente ;
interpréter un retour ;
demander de l'aide ;
apprendre après aide ou résultat qualifié.
```
Léa ne doit pas :
```text
agir coûte que coûte ;
inventer une réussite ;
apprendre un échec comme une réussite ;
continuer un fallback après rejet sémantique ;
sortir d'un protocole sans raison explicable.
```
Le risque n'est pas interdit. Il doit être exploitable :
```text
observable
attribuable à une intention
réversible si possible
évaluable après coup
transformable en apprentissage
```
## Structure conceptuelle d'un protocole
Un protocole peut se décrire sur un coin de papier avec les éléments suivants :
```text
Nom
Intention servie
Préconditions plausibles
Scènes attendues
Affordances compatibles par scène
Gestes possibles
Variantes autorisées
Retours attendus
Branches normales
Ruptures connues
Conditions de réussite
Conditions d'abstention ou demande d'aide
Preuves apprenables
```
Ce n'est pas une séquence figée. C'est une grammaire : elle autorise plusieurs phrases correctes pour atteindre la même intention.
## Exemple 1 : ouvrir un logiciel
Mandat :
```text
Ouvre Bloc-notes.
```
Intention :
```text
rendre disponible un outil de saisie texte simple
```
Protocoles possibles :
```text
menu Démarrer / recherche Windows
raccourci existant
commande Exécuter
barre de recherche système
```
Scènes attendues :
```text
bureau ou environnement de départ
menu/recherche d'application
résultat "Bloc-notes"
fenêtre Bloc-notes ouverte
```
Affordances compatibles :
```text
champ de recherche
résultat d'application Bloc-notes
zone de texte vide
```
Retours attendus :
```text
une fenêtre de saisie texte apparaît
elle accepte le focus
elle permet de taper du texte
```
Variantes :
```text
si la recherche Windows échoue, essayer Exécuter/notepad
si un autre éditeur texte est disponible et accepté par le mandat, l'utiliser
si aucune scène d'édition texte n'apparaît, demander ou apprendre
```
## Exemple 2 : saisir un texte
Mandat :
```text
Saisis "testtesttest".
```
Intention :
```text
placer le contenu texte dans une zone éditable
```
Scènes attendues :
```text
éditeur texte ouvert
champ texte actif
curseur visible ou zone éditable détectée
```
Affordances compatibles :
```text
zone de saisie
document vide ou modifiable
```
Gestes :
```text
focus zone éditable si nécessaire
taper le texte
```
Retours attendus :
```text
le texte apparaît
le contenu correspond au mandat
```
Ruptures :
```text
zone non éditable
fenêtre inattendue
texte non apparu
application fermée
```
## Exemple 3 : enregistrer un fichier
Mandat :
```text
Enregistre le texte saisi.
```
Intention :
```text
persister le contenu courant dans un fichier
```
Protocoles possibles :
```text
Ctrl+S
menu Fichier > Enregistrer
bouton Enregistrer si visible
Enregistrer sous si le fichier n'a pas encore de nom
```
Scènes attendues :
```text
éditeur texte avec contenu non sauvegardé
dialogue Enregistrer sous
dialogue "voulez-vous enregistrer les modifications ?"
dialogue "le fichier existe déjà, voulez-vous le remplacer ?"
retour à l'éditeur avec état sauvegardé
```
Affordances compatibles :
```text
Enregistrer
Oui
Remplacer, si le mandat autorise l'écrasement
champ Nom du fichier
```
Affordances contraires :
```text
Annuler
Ne pas enregistrer
Non, si la question porte sur la sauvegarde souhaitée
```
Retours attendus :
```text
la boîte de sauvegarde se ferme
le fichier existe à l'emplacement choisi
le contenu est présent
le document n'est plus en état non sauvegardé
```
Règle clé :
```text
Voir un bouton "Enregistrer" ne suffit pas.
Il faut que ce bouton soit dans une scène compatible avec l'intention de sauvegarde.
```
## Exemple 4 : regarder une vidéo de jazz
Mandat :
```text
Trouve et lance une vidéo de jazz.
```
Intention :
```text
obtenir une vidéo en lecture correspondant au thème jazz
```
Protocoles possibles :
```text
ouvrir navigateur -> YouTube -> chercher jazz -> lancer une vidéo
ouvrir navigateur -> moteur de recherche -> "video jazz" -> ouvrir un résultat vidéo
utiliser une application ou un favori connu si disponible
```
Scènes attendues :
```text
navigateur ouvert
barre d'adresse ou champ de recherche
page de résultats
page vidéo
lecteur avec bouton Lecture ou vidéo déjà en lecture
```
Affordances compatibles :
```text
barre d'adresse
champ de recherche
résultat vidéo pertinent
bouton Lecture
```
Retours attendus :
```text
une vidéo démarre
le contenu semble lié au jazz
le son ou la lecture est active si observable
```
Variantes :
```text
si YouTube est inaccessible, utiliser le moteur de recherche
si le premier résultat n'est pas pertinent, revenir et choisir un autre résultat
si un consentement cookie bloque la scène, traiter le dialogue seulement s'il est compatible avec la navigation
```
## Généralisation multi-environnements
Léa doit apprendre à plusieurs niveaux.
### Niveau 1 : mémoire locale
```text
Dans cet écran précis, ce bouton sauvegarde.
Dans ce DPI, cette scène ressemble à Save As.
Dans ce logiciel, ce champ est le champ de recherche patient.
```
### Niveau 2 : protocole applicatif
```text
Dans ce logiciel DPI, ouvrir un dossier patient passe par recherche -> liste -> fiche.
Dans ce logiciel comptable, valider une écriture passe par saisie -> contrôle -> validation.
```
### Niveau 3 : protocole métier
```text
Tous les DPI ont une façon de chercher un patient, ouvrir sa fiche, saisir une information, valider et tracer.
Tous les logiciels de stock ont une façon de rechercher un article, ajuster une quantité, valider un mouvement.
Tous les logiciels comptables ont une façon de saisir, contrôler, rapprocher, valider.
```
### Niveau 4 : protocole universel
```text
chercher
ouvrir
saisir
valider
annuler
enregistrer
confirmer
revenir
fermer
```
La généralisation consiste à relier les preuves locales à ces niveaux supérieurs.
## Apprentissage
Léa apprend seulement à partir d'un résultat qualifié.
Apprentissage valide :
```text
L'action a produit le retour attendu.
L'humain a confirmé ou corrigé.
La scène et l'intention sont connues.
Le geste est attribuable au résultat.
```
Apprentissage interdit :
```text
clic opportuniste sans justification
effet non vérifié
échec enregistré comme succès
correction humaine confondue avec autonomie
retour ambigu non qualifié
```
La correction humaine ne doit pas seulement enregistrer "où cliquer". Elle doit enrichir :
```text
quelle scène était visible
quelle intention était active
quelle affordance était correcte
quel geste a été fait
quel retour a prouvé la réussite
```
## Ce que ce modèle aurait changé dans nos tests
Dans les tests humains réalisés ces derniers jours, beaucoup d'échecs venaient d'une confusion entre :
```text
résoudre une cible visuelle
et accomplir une intention
```
Avec ce modèle :
```text
ouvrir un logiciel
trouver une zone de saisie
taper
déclencher une sauvegarde
interpréter Enregistrer sous
confirmer Enregistrer
traiter un remplacement ou une demande de sauvegarde
vérifier le résultat
```
ne sont plus des actions isolées. Ce sont des scènes normales dans un protocole connu.
Si une fenêtre inattendue apparaît, Léa ne demande pas "où cliquer ?". Elle se demande :
```text
Cette scène est-elle une continuation normale de mon mandat ?
Quelles affordances propose-t-elle ?
Laquelle sert l'intention ?
Quel retour dois-je attendre ?
```
## Questions ouvertes
1. Quel vocabulaire final garder : protocole d'usage, geste type, routine intentionnelle ?
2. Comment exprimer à l'utilisateur le mandat courant sans jargon ?
3. Quelles familles de protocoles universels faut-il inscrire en premier ?
4. Comment distinguer visuellement une scène pertinente d'une fenêtre simplement au focus ?
5. Comment demander de l'aide sans transformer l'humain en téléopérateur ?
6. Comment capturer l'apprentissage métier sans mémoriser des informations sensibles ?
## Synthèse courte
```text
Léa reçoit un mandat.
Elle choisit un protocole.
Elle observe une scène.
Elle interprète les affordances.
Elle agit avec une hypothèse.
Elle qualifie le retour.
Elle apprend uniquement d'un résultat qualifié.
```
Cette structure permet de viser la généralisation : mêmes intentions, scènes différentes, logiciels différents, DPI différents, OS différents.

View File

@@ -0,0 +1,953 @@
# Modèle Mandat / Protocoles / Scènes pour Léa
Version : 0.2 brainstorming
Date : 2026-05-25
Statut : modèle conceptuel, pas une spec technique
## Thèse
Léa n'est pas une boîte à clics et ne doit pas rejouer un workflow. Léa est une collaboratrice visuelle mandatée.
Elle reçoit une fin à atteindre, choisit un protocole connu ou apprend un chemin nouveau, observe le retour de ses actions, qualifie réussite/échec/doute, puis adapte son comportement.
Formule centrale :
```text
Un protocole est une grammaire d'action autour d'une intention.
```
La différence essentielle :
```text
Workflow = séquence fermée de gestes prévus.
Protocole = grammaire ouverte qui autorise des phrases nouvelles si elles servent l'intention et sont vérifiables.
```
Un logiciel, un OS ou un DPI peut changer les pixels, les titres, les boutons et les DPI. Le processus métier reste souvent stable : chercher, ouvrir, saisir, valider, enregistrer, corriger, transmettre, facturer, archiver. Léa doit apprendre ces grammaires d'action, pas mémoriser des coordonnées.
## Vocabulaire
### Mandat
Un mandat est une fin déléguée à Léa.
Exemples :
```text
Ecris ce texte et enregistre-le.
Trouve une vidéo de jazz et lance-la.
Ouvre le dossier patient de Mme X.
Saisis cette information dans le logiciel métier.
```
Le mandat n'est pas une suite de clics. Il donne le but, le contexte et éventuellement les limites.
Un mandat peut être :
```text
ponctuel : fais cette action précise maintenant ;
de session : traite cette série de dossiers ;
permanent : applique ce protocole dans ce périmètre habituel ;
amendé : l'humain ajoute ou précise une intention en cours d'exécution.
```
### Intention active
L'intention active est le sous-but courant qui sert le mandat.
Exemple pour `Ecris ce texte et enregistre-le` :
```text
ouvrir un outil de saisie
écrire le texte
déclencher la sauvegarde
choisir ou confirmer le nom
vérifier que le fichier existe
```
### Protocole d'usage
Un protocole d'usage est un chemin connu, adaptable, pour accomplir une intention.
Exemples universels :
```text
ouvrir une application
chercher sur le web
saisir du texte
sauvegarder un fichier
confirmer une boîte de dialogue
fermer une fenêtre
copier-coller
```
Exemples métier :
```text
ouvrir une fiche patient
créer une ligne de facturation
valider une commande de stock
rapprocher une écriture comptable
```
Un protocole contient des scènes attendues, des affordances compatibles, des variantes autorisées, des conditions d'arrêt et un opérateur d'extension.
### Scène d'intention
Une scène d'intention est la situation visuelle pertinente pour l'intention courante.
La scène d'intention n'est pas forcément la fenêtre au focus OS. C'est la zone, fenêtre, boîte ou sous-zone qui sert le mandat maintenant.
Exemples :
```text
Bloc-notes prêt à recevoir du texte.
Fenêtre Enregistrer sous.
Dialogue "Voulez-vous enregistrer les modifications ?".
Page de résultats Google.
Page vidéo YouTube.
Fiche patient ouverte.
Onglet "Facturation" dans une fiche patient.
Table de mouvements dans un logiciel de stock.
```
### Scène composée
Une scène peut contenir des sous-scènes.
Exemple DPI :
```text
Fiche patient
-> bandeau identité
-> onglets séjour / facturation / documents
-> liste des passages
-> panneau de détail
-> popup de validation
```
Chaque sous-scène a ses affordances propres. Léa doit pouvoir focaliser sur la sous-scène qui sert l'intention active, au lieu de traiter toute la fenêtre comme un bloc plat.
### Affordance
Une affordance est une action proposée par la scène.
Exemples :
```text
bouton Enregistrer
bouton Annuler
champ Nom du fichier
barre d'adresse
champ de recherche
bouton Lecture
onglet Patient
bouton Valider
```
Léa ne doit pas seulement reconnaître une affordance. Elle doit comprendre son rôle dans la scène et sa compatibilité avec l'intention.
### Affordance anti-intention
Une affordance anti-intention est visible et actionnable, mais elle contredit l'intention active.
Exemples :
```text
Annuler pendant une sauvegarde voulue.
Ne pas enregistrer quand l'intention est de sauvegarder.
Supprimer quand l'intention est de consulter.
Fermer une fiche non sauvegardée quand l'intention est de valider.
```
Identifier les affordances anti-intention est aussi important qu'identifier l'affordance correcte.
### Geste
Un geste est l'action concrète décidée dans une scène.
Exemples :
```text
cliquer sur Enregistrer
taper le nom du fichier
appuyer sur Ctrl+S
sélectionner un résultat de recherche
cliquer sur Lecture
```
### Retour
Un retour est tout changement ou non-changement observé après un geste.
```text
Résultat attendu obtenu -> réussite.
Résultat contraire -> échec.
Rien ne change -> attente, latence ou échec à qualifier.
Nouvelle fenêtre -> événement à interpréter.
Erreur -> rupture ou branche prévue selon le protocole.
```
### Rupture
Une rupture est un changement de scène imprévu ou hors mandat.
Un échec se produit dans la scène attendue. Une rupture déplace Léa hors de la scène d'intention.
Exemples :
```text
UAC ou alerte sécurité pendant une sauvegarde.
Popup de mise à jour navigateur pendant une saisie DPI.
Léa Assistante prend le focus alors que l'intention porte sur Bloc-notes.
```
## Doute typé
Le doute est un signal utile. Il doit être typé, car chaque doute appelle une réponse différente.
### Doute de localisation
```text
Je sais quoi chercher, mais je ne sais pas où c'est.
```
Réponse possible :
```text
élargir la zone, changer de méthode visuelle, utiliser une ancre, explorer la sous-scène.
```
### Doute d'identification
```text
Je vois quelque chose, mais je ne sais pas si c'est le bon élément.
```
Réponse possible :
```text
vérifier le rôle dans la scène, comparer avec affordances voisines, demander si risque élevé.
```
### Doute de scène
```text
Je ne suis pas sûr d'être dans la bonne scène d'intention.
```
Réponse possible :
```text
requalifier la scène, revenir à une scène connue, demander.
```
### Doute d'effet
```text
Je sais quoi faire, mais je ne sais pas si ce geste produira l'effet attendu.
```
Réponse possible :
```text
agir si réversible et vérifiable, demander si irréversible ou sensible.
```
### Doute d'intention
```text
Je ne suis plus sûr du sous-but que je dois servir.
```
Réponse possible :
```text
arrêter la chaîne, demander à l'humain, ne pas improviser.
```
## Boucle cognitive minimale
```text
1. Recevoir le mandat.
2. Déduire l'intention active.
3. Choisir le protocole connu le plus simple.
4. Observer la scène d'intention.
5. Identifier les affordances et affordances anti-intention.
6. Choisir le geste compatible avec l'intention.
7. Formuler une hypothèse d'effet attendu.
8. Agir.
9. Observer le retour dans une fenêtre temporelle attendue.
10. Qualifier : réussite, échec, attente, rupture, doute.
11. Continuer, essayer une variante, demander de l'aide, oublier ou apprendre.
```
Le point essentiel : une action n'est pas justifiée par le fait qu'un bouton existe. Elle est justifiée parce que ce bouton, dans cette scène, sert l'intention active.
## Contrat d'action
Avant d'agir, Léa doit pouvoir répondre implicitement à cinq questions :
```text
Quelle intention est-ce que je sers ?
Dans quelle scène suis-je ?
Quelle affordance est-ce que j'utilise ?
Pourquoi cette affordance est-elle compatible avec mon intention ?
Quel retour est-ce que j'attends ?
```
Si Léa ne peut pas produire cette justification, elle ne doit pas transformer l'action en clic opportuniste.
Ce contrat n'impose pas de demander à l'humain à chaque doute. Il impose que toute tentative ait une hypothèse vérifiable.
## Trace causale
Chaque geste devrait laisser une trace causale active :
```text
J'ai fait G
dans la scène S
pour servir l'intention I
avec l'hypothèse H
et j'attendais le retour R
```
Cette trace sert à :
```text
qualifier le retour ;
expliquer l'action à l'humain ;
apprendre une preuve correcte ;
éviter d'apprendre une corrélation fausse ;
désapprendre une mauvaise leçon plus tard.
```
Sans trace causale, Léa apprend des coïncidences. Avec trace causale, elle apprend des gestes situés.
## Temporalité attendue
Un protocole doit porter une attente temporelle approximative.
Exemples :
```text
un clic bouton local doit produire un changement en 100 ms à 2 s ;
une ouverture d'application peut prendre plusieurs secondes ;
une recherche web peut prendre plus longtemps selon le réseau ;
une sauvegarde locale doit généralement fermer la boîte rapidement ;
un DPI legacy peut avoir des latences longues et variables.
```
`Rien ne change` n'est pas automatiquement un échec. C'est un retour à qualifier selon :
```text
le protocole ;
la scène ;
le délai habituel ;
les indicateurs de chargement ;
les répétitions ;
le risque du geste suivant.
```
## Autonomie
L'autonomie de Léa est une autonomie d'initiative, pas une autonomie d'entêtement.
Léa peut :
```text
choisir le chemin le plus simple ;
changer de chemin si le premier échoue ;
essayer une variante cohérente ;
interpréter un retour ;
demander de l'aide ;
apprendre après aide ou résultat qualifié.
```
Léa ne doit pas :
```text
agir coûte que coûte ;
inventer une réussite ;
apprendre un échec comme une réussite ;
continuer un fallback après rejet sémantique ;
sortir d'un protocole sans raison explicable.
```
Le risque n'est pas interdit. Il doit être exploitable :
```text
observable
attribuable à une intention
réversible si possible
évaluable après coup
transformable en apprentissage
```
## Extension de grammaire
Cette section distingue un protocole d'un workflow.
Si Léa trouve une affordance compatible avec l'intention mais absente du protocole connu, elle peut former une hypothèse :
```text
Cette affordance A, dans la scène S, semble servir l'intention I.
Si j'effectue le geste G, j'attends le retour R.
```
Elle peut essayer si :
```text
le geste est réversible ou faiblement risqué ;
le retour attendu est observable ;
la scène est compatible avec le mandat ;
le doute n'est pas un doute d'intention ;
le mandat n'exige pas confirmation explicite.
```
Après essai :
```text
si R arrive -> affordance candidate à apprentissage ;
si R n'arrive pas -> affordance marquée incompatible ou incertaine ;
si effet négatif -> correction / rollback / demande humaine ;
si doute persiste -> ne pas apprendre comme réussite.
```
Cette capacité d'extension empêche le protocole de devenir un workflow figé.
## Structure conceptuelle d'un protocole
Un protocole peut se décrire sur un coin de papier avec les éléments suivants :
```text
Nom
Intention servie
Préconditions plausibles
Scènes attendues
Sous-scènes possibles
Affordances compatibles par scène
Affordances anti-intention
Gestes possibles
Variantes autorisées
Retours attendus
Temporalité attendue
Branches normales
Ruptures connues
Doutes possibles et réponses associées
Conditions de réussite
Conditions d'abstention ou demande d'aide
Opérateur d'extension de grammaire
Preuves apprenables
Conditions de désapprentissage
```
## Preuve apprenable
Une preuve apprenable est un retour qui peut être conservé au-delà de la session parce qu'il est fiable et généralisable.
Une preuve apprenable doit être :
```text
attribuable causalement à un geste ;
observée dans une scène typée ;
liée à une intention active ;
qualifiée comme réussite, échec ou incompatibilité ;
reproductible ou vérifiable dans une scène similaire ;
non contredite par une correction humaine ou un rollback.
```
Exemples :
```text
Dans cette boîte "Enregistrer sous", le bouton "Enregistrer" valide la sauvegarde.
Dans ce DPI, le champ "IPP" sert à chercher un patient.
Dans cette page YouTube, cliquer sur cette vignette ouvre une vidéo.
Dans cette popup, "Ne pas enregistrer" contredit l'intention de sauvegarde.
```
Une observation n'est pas forcément une preuve apprenable. Un effet peut être accidentel, ambigu ou causé par l'humain.
## Correction, démonstration, apprentissage
L'aide humaine peut avoir plusieurs statuts.
### Correction
L'humain corrige une erreur dans une situation précise.
```text
Tu t'es trompée de bouton. Ici il fallait cliquer sur Enregistrer.
```
Effet :
```text
réparer ou invalider une preuve locale ;
ne pas créer automatiquement un protocole générique.
```
### Démonstration
L'humain enseigne une nouvelle compétence ou un nouveau chemin.
```text
Regarde, dans ce DPI, pour ouvrir un patient, je fais recherche -> IPP -> entrée -> fiche.
```
Effet :
```text
créer ou enrichir un protocole applicatif ;
capturer scènes, affordances, gestes, retours.
```
### Validation
L'humain confirme qu'une hypothèse de Léa est correcte.
```text
Oui, ce bouton Valider correspond bien à sauvegarder la fiche.
```
Effet :
```text
promouvoir une affordance candidate en preuve apprenable.
```
## Désapprentissage
Léa doit pouvoir oublier ou dégrader une leçon.
Une preuve doit être invalidée si :
```text
elle provoque un échec répété ;
elle est contredite par l'humain ;
elle ne marche que dans une scène plus étroite que prévu ;
elle a été apprise après un retour ambigu ;
elle a été associée à la mauvaise intention ;
elle dépendait d'une correction humaine non identifiée.
```
Désapprendre ne veut pas forcément supprimer. Cela peut vouloir dire :
```text
réduire la confiance ;
restreindre le périmètre ;
marquer comme spécifique à une scène ;
mettre en quarantaine jusqu'à validation ;
supprimer si dangereux.
```
## Mode exploration
Dans un environnement inconnu, Léa peut observer sans agir pour cartographier les scènes et affordances.
Objectif :
```text
identifier les zones principales ;
nommer les sous-scènes ;
repérer les affordances ;
relier les affordances à des intentions possibles ;
détecter les actions sensibles ;
préparer une démonstration ou un essai vérifiable.
```
Le mode exploration évite deux excès :
```text
agir sans cartographie ;
se bloquer parce que rien n'est connu.
```
## Adaptateurs métier
La généralisation métier ne supprime pas les spécificités éditeur.
Un DPI, un ERP, une comptabilité ou une gestion de stock exposent des processus semblables, mais chaque éditeur a ses scènes, libellés, latences, contraintes et pièges.
Le bon modèle est :
```text
protocole métier générique
-> adaptateur applicatif par éditeur/client
-> preuves locales par écran/version/DPI
```
Exemple :
```text
Chercher un patient
-> protocole métier DPI
-> adaptateur Easily / Maincare / Cerner / autre
-> preuves locales du site client
```
## Carnet de bord narratif
Léa devrait conserver un fil narratif par mandat.
Ce fil n'est pas un log technique. C'est l'explication utilisateur :
```text
J'ai ouvert Bloc-notes.
J'ai saisi le texte demandé.
J'ai déclenché la sauvegarde avec Ctrl+S.
J'ai vu "Enregistrer sous".
J'ai confirmé le nom du fichier.
La sauvegarde a réussi car le fichier existe et le contenu est présent.
```
En cas de blocage :
```text
Je voulais enregistrer, mais une fenêtre inconnue est apparue.
Je ne sais pas si elle appartient à la sauvegarde.
J'ai besoin d'aide pour qualifier cette scène.
```
Ce carnet sert à la confiance, au debug, à la formation et à l'amélioration continue.
## Exemple 1 : ouvrir un logiciel
Mandat :
```text
Ouvre Bloc-notes.
```
Intention :
```text
rendre disponible un outil de saisie texte simple
```
Protocoles possibles :
```text
menu Démarrer / recherche Windows
raccourci existant
commande Exécuter
barre de recherche système
```
Scènes attendues :
```text
bureau ou environnement de départ
menu/recherche d'application
résultat "Bloc-notes"
fenêtre Bloc-notes ouverte
```
Affordances compatibles :
```text
champ de recherche
résultat d'application Bloc-notes
zone de texte vide
```
Retours attendus :
```text
une fenêtre de saisie texte apparaît
elle accepte le focus
elle permet de taper du texte
```
Variantes :
```text
si la recherche Windows échoue, essayer Exécuter/notepad
si un autre éditeur texte est disponible et accepté par le mandat, l'utiliser
si aucune scène d'édition texte n'apparaît, demander ou apprendre
```
## Exemple 2 : saisir un texte
Mandat :
```text
Saisis "testtesttest".
```
Intention :
```text
placer le contenu texte dans une zone éditable
```
Scènes attendues :
```text
éditeur texte ouvert
champ texte actif
curseur visible ou zone éditable détectée
```
Affordances compatibles :
```text
zone de saisie
document vide ou modifiable
```
Gestes :
```text
focus zone éditable si nécessaire
taper le texte
```
Retours attendus :
```text
le texte apparaît
le contenu correspond au mandat
```
Ruptures :
```text
zone non éditable
fenêtre inattendue
texte non apparu
application fermée
```
## Exemple 3 : enregistrer un fichier
Mandat :
```text
Enregistre le texte saisi.
```
Intention :
```text
persister le contenu courant dans un fichier
```
Protocoles possibles :
```text
Ctrl+S
menu Fichier > Enregistrer
bouton Enregistrer si visible
Enregistrer sous si le fichier n'a pas encore de nom
```
Scènes attendues :
```text
éditeur texte avec contenu non sauvegardé
dialogue Enregistrer sous
dialogue "voulez-vous enregistrer les modifications ?"
dialogue "le fichier existe déjà, voulez-vous le remplacer ?"
retour à l'éditeur avec état sauvegardé
```
Affordances compatibles :
```text
Enregistrer
Oui
Remplacer, si le mandat autorise l'écrasement
champ Nom du fichier
```
Affordances anti-intention :
```text
Annuler
Ne pas enregistrer
Non, si la question porte sur la sauvegarde souhaitée
```
Retours attendus :
```text
la boîte de sauvegarde se ferme
le fichier existe à l'emplacement choisi
le contenu est présent
le document n'est plus en état non sauvegardé
```
Règle clé :
```text
Voir un bouton "Enregistrer" ne suffit pas.
Il faut que ce bouton soit dans une scène compatible avec l'intention de sauvegarde.
```
## Exemple 4 : regarder une vidéo de jazz
Mandat :
```text
Trouve et lance une vidéo de jazz.
```
Intention :
```text
obtenir une vidéo en lecture correspondant au thème jazz
```
Protocoles possibles :
```text
ouvrir navigateur -> YouTube -> chercher jazz -> lancer une vidéo
ouvrir navigateur -> moteur de recherche -> "video jazz" -> ouvrir un résultat vidéo
utiliser une application ou un favori connu si disponible
```
Scènes attendues :
```text
navigateur ouvert
barre d'adresse ou champ de recherche
page de résultats
page vidéo
lecteur avec bouton Lecture ou vidéo déjà en lecture
```
Affordances compatibles :
```text
barre d'adresse
champ de recherche
résultat vidéo pertinent
bouton Lecture
```
Retours attendus :
```text
une vidéo démarre
le contenu semble lié au jazz
le son ou la lecture est active si observable
```
Variantes :
```text
si YouTube est inaccessible, utiliser le moteur de recherche
si le premier résultat n'est pas pertinent, revenir et choisir un autre résultat
si un consentement cookie bloque la scène, traiter le dialogue seulement s'il est compatible avec la navigation
```
## Exemple 5 : facturer un passage aux urgences
Mandat :
```text
Facture le passage de Mme MOREL du 12/05 aux urgences.
```
Intentions enchaînées :
```text
ouvrir le logiciel métier
chercher la patiente
ouvrir la bonne fiche
identifier le passage du 12/05
ouvrir la scène de facturation
contrôler les informations nécessaires
valider la facturation
vérifier que le statut est facturé ou prêt à transmettre
```
Scènes composées :
```text
écran d'accueil DPI
recherche patient
liste de résultats
fiche patient
liste des passages
onglet facturation
dialogue de validation
```
Exemples de doutes :
```text
doute d'identification patient si plusieurs homonymes ;
doute de scène si l'onglet ouvert n'est pas la facturation ;
doute d'effet si le bouton Valider ne précise pas ce qu'il valide ;
doute d'intention si le mandat ne précise pas quoi faire en cas de données manquantes.
```
## Généralisation multi-environnements
Léa doit apprendre à plusieurs niveaux.
### Niveau 1 : mémoire locale
```text
Dans cet écran précis, ce bouton sauvegarde.
Dans ce DPI, cette scène ressemble à Save As.
Dans ce logiciel, ce champ est le champ de recherche patient.
```
### Niveau 2 : protocole applicatif
```text
Dans ce logiciel DPI, ouvrir un dossier patient passe par recherche -> liste -> fiche.
Dans ce logiciel comptable, valider une écriture passe par saisie -> contrôle -> validation.
```
### Niveau 3 : protocole métier
```text
Tous les DPI ont une façon de chercher un patient, ouvrir sa fiche, saisir une information, valider et tracer.
Tous les logiciels de stock ont une façon de rechercher un article, ajuster une quantité, valider un mouvement.
Tous les logiciels comptables ont une façon de saisir, contrôler, rapprocher, valider.
```
### Niveau 4 : protocole universel
```text
chercher
ouvrir
saisir
valider
annuler
enregistrer
confirmer
revenir
fermer
```
La généralisation consiste à relier les preuves locales à ces niveaux supérieurs.
## Questions ouvertes restantes
1. Quel vocabulaire final garder : protocole d'usage, geste type, routine intentionnelle ?
2. Comment exprimer à l'utilisateur le mandat courant sans jargon ?
3. Quelles familles de protocoles universels faut-il inscrire en premier ?
4. Comment demander de l'aide sans transformer l'humain en téléopérateur ?
5. Comment capturer l'apprentissage métier sans mémoriser des informations sensibles ?
6. Comment arbitrer une affordance nouvelle compatible mais située dans une action sensible ?
7. Comment représenter un mandat amendé sans perdre la trace causale initiale ?
## Synthèse courte
```text
Léa reçoit un mandat.
Elle choisit un protocole.
Elle observe une scène d'intention.
Elle interprète les affordances et les anti-affordances.
Elle agit avec une hypothèse.
Elle qualifie le retour dans le temps attendu.
Elle apprend uniquement d'une preuve qualifiée.
Elle peut étendre sa grammaire, corriger ou désapprendre.
```
Cette structure permet de viser la généralisation : mêmes intentions, scènes différentes, logiciels différents, DPI différents, OS différents.

View File

@@ -0,0 +1,146 @@
# Modèle Mandat / Protocoles / Scènes — v0.3 arbitrages Dom
Date : 2026-05-25
Statut : cadrage conceptuel avec arbitrages utilisateur
Base : `MODELE_MANDAT_PROTOCOLS_LEA_2026-05-25_v0.2.md`
## Arbitrage 1 — priorité entre protocoles
Quand plusieurs protocoles peuvent servir la même intention, Léa choisit le chemin le plus simple selon une priorité pondérée :
```text
mieux connu
-> moins risqué
-> plus court
```
Interprétation :
```text
mieux connu = le protocole possède les preuves qualifiées les plus solides ;
moins risqué = le geste est réversible, observable, et dans le niveau de délégation accordé ;
plus court = moins de gestes ou moins de latence attendue.
```
Exemple :
```text
Pour sauvegarder :
Ctrl+S est prioritaire si l'éditeur est connu et l'état attendu vérifié.
Menu Fichier > Enregistrer reste une variante si Ctrl+S échoue ou n'est pas disponible.
```
## Arbitrage 2 — préconditions plausibles
Dom reformule simplement :
```text
Léa doit vérifier l'état qu'elle attend.
```
Une précondition plausible est donc un état attendu vérifiable avant de tenter un protocole ou un geste.
Exemples :
```text
Pour saisir du texte :
je dois voir ou déduire une zone éditable focusable.
Pour enregistrer :
je dois être dans une application qui contient un contenu à sauvegarder,
ou dans une boîte de dialogue qui appartient à la sauvegarde.
Pour cliquer "Enregistrer" :
je dois être dans une scène d'intention compatible avec la sauvegarde,
pas simplement voir le mot "Enregistrer" n'importe où.
Pour ouvrir une fiche patient :
je dois être dans une scène de recherche/liste/fiche compatible avec le DPI.
```
La précondition évite l'essai voué à l'échec. Elle ne rend pas Léa prudente par défaut ; elle lui donne un état de référence.
## Arbitrage 3 — niveau de risque et autonomie tutorée
Dom précise que le niveau de risque ne doit pas être uniquement une catégorie abstraite codée à l'avance. Il dépend aussi du niveau réel de Léa évalué par son collaborateur/tuteur.
Principe :
```text
Léa devient autonome sur un périmètre quand le collaborateur estime qu'elle est au bon niveau.
```
Cela rapproche Léa d'un humain en apprentissage :
```text
au début, le tuteur laisse faire certaines actions simples ;
puis il élargit le périmètre quand les preuves s'accumulent ;
sur un protocole maîtrisé, le risque pratique devient très faible ;
sur un nouveau logiciel métier, l'apprentissage recommence sur ce périmètre.
```
Le risque doit donc être modélisé comme :
```text
risque intrinsèque du geste
+ sensibilité métier
+ maturité de Léa sur ce protocole
+ maturité de Léa dans cet environnement
+ mandat explicitement donné par l'humain
```
Exemples :
```text
Cliquer dans une zone de texte : risque intrinsèque mineur.
Valider une facture : risque métier majeur si Léa n'est pas tutorée sur ce protocole.
Valider une facture dans un protocole déjà démontré, dans un mandat de session explicite : risque pratique réduit.
Supprimer ou transmettre à l'extérieur : reste sensible, même avec maturité élevée.
```
## Niveau de délégation
On remplace donc une vision statique `low/medium/high` par une notion de délégation tutorée :
```text
Niveau 0 — observation : Léa regarde, cartographie, ne fait pas.
Niveau 1 — proposition : Léa propose le geste, l'humain valide.
Niveau 2 — exécution supervisée : Léa agit sur gestes réversibles, demande sur doute.
Niveau 3 — autonomie de session : Léa agit dans un mandat explicite borné.
Niveau 4 — autonomie habituelle : Léa agit seule sur protocole connu et environnement maîtrisé.
```
Ce niveau peut être différent selon :
```text
le protocole ;
le logiciel ;
le client ;
le type de donnée ;
le collaborateur/tuteur ;
la période d'apprentissage.
```
## Effet sur le modèle v0.2
La boucle devient :
```text
Mandat
-> intention active
-> protocoles candidats
-> choix : mieux connu / moins risqué / plus court
-> vérification des préconditions attendues
-> observation scène d'intention
-> affordance compatible
-> geste avec hypothèse de retour
-> qualification du retour
-> apprentissage ou désapprentissage
-> ajustement du niveau de délégation
```
## Point clé
L'autonomie n'est pas l'absence de risque. L'autonomie est la capacité de prendre des initiatives proportionnées à un mandat, un niveau de preuve et un niveau de délégation.
Le risque utile est celui qui produit de l'apprentissage qualifié.