Les micromondes — la doctrine
Ceci est le premier de trois articles issus d'un audit mené en parallèle par quatre agents — technique, philosophique, artistique, observabilité — sur l'écosystème VFG. Il traite de la doctrine : qu'est-ce qu'un micromonde, comment un monde en lit un autre, et quelles contraintes un système a le droit d'exercer sur une personne.
Les deux autres : le câblage (ce qui peut se brancher sans écrire de code) et le SSOT (pourquoi les liens ne se font pas tout seuls).
TL;DR
- Une première définition naturelle du micromonde ne tient pas contre les objets réels : le critère n'est pas de posséder un SSOT, c'est de posséder une règle de réinterprétation.
- Copier une valeur d'un monde à l'autre est un contresens démontrable : dans Hero,
hungerélevé veut dire « bien nourri ». - Un système qui peut couper des basses exerce un pouvoir physique : six conditions rendent une contrainte légitime, et la plus importante est la réversibilité.
- La dispersion — le concept que FG veut détecter — n'existe nulle part dans le système. Ni comme champ, ni comme mot. Il faut la créer.
- Dix invariants, presque tous déjà vrais dans le code, qui nomment ce que les projets font encore par accident.
1. La définition, corrigée par la mesure
Une définition naturelle vient tout de suite : un micromonde = un SSOT d'une grandeur + une règle de réinterprétation + une surface de feedback. Elle est bonne. Mais elle ne tient pas telle quelle contre les objets de l'écosystème, parce qu'elle laisse passer des choses qui ne sont pas des mondes.
Testons-la :
| Objet | Possède un SSOT ? | Possède une règle ? | Possède une surface ? | Ce que c'est |
|---|---|---|---|---|
| VFG_Hero | stats, XP, quêtes | seuils → OSC/DMX | écran CRT, lumières | un monde |
| FG_CleanDaMatrix | pression, zones | boucle roguelike | OSC, DMX | un monde |
| Jah Messenger | affinité, wizz, quêtes IRL | village, chantiers | MSN, temps réel | un monde |
| FG_IdeaPit | idées, six scores | cycle de maturation | une boîte de réception | un monde minimal |
| Chronos | ledger temporel | aucune | aucune | un stockage |
| FG_Pulse | frise d'activité | aucune | une frise | un capteur |
| VFGate | routes, idempotence | aucune | une admin | une plomberie |
| Chataigne | aucun | aucune | des lumières réelles | une sortie |
| Lucien | mémoire d'une personne | règle négative | un site | un monde clos |
Le tableau donne la réponse :
Le critère discriminant n'est pas de posséder un SSOT. C'est de posséder une règle de réinterprétation.
Chronos a un SSOT et pas de règle : c'est un stockage, il se décrit d'ailleurs lui-même comme tel. VFGate normalise des enveloppes mais ne réinterprète rien : c'est une plomberie. Un monde produit du sens ; une porte produit du transport.
Et Lucien est le cas le plus intéressant : il possède les trois éléments, mais sa règle est négative — le sanctuaire refuse les frontières. C'est un monde clos, et c'est un choix, pas un manque.
2. Quand un monde parle à un autre
Voici le problème central de tout l'écosystème, en une phrase : quand Hero dit energy: 20, qu'est-ce que Jah doit en faire ?
Trois réponses possibles. Une seule est correcte.
Modèle 1 — copier. Jah reçoit 20, l'affiche. ❌
Modèle 2 — traduire par une règle locale. Jah possède une fonction déclarée qui transforme la valeur de Hero en sa sémantique : fatigue_jah = map(energy_hero). ✅
Modèle 3 — interpréter librement. Le monde dérive le sens au cas par cas, sans règle. ❌
Pourquoi le modèle 1 est un contresens démontrable : dans Hero, hunger élevé signifie « bien nourri ». Copier ce nombre dans un monde où « faim » veut dire l'inverse produit exactement l'erreur qu'on veut éviter. Les nombres ne sont pas portables ; les sémantiques non plus.
Le corpus interdit d'ailleurs déjà la copie : la doctrine de l'écosystème dit « aucun outil n'écrit dans la base d'un autre », et le contrat d'ingestion de Hero impose explicitement « pas de synchronisation bidirectionnelle » et « Hero est le seul écrivain ». Chronos l'écrit noir sur blanc : il consomme des dérivés, jamais le brut.
Le modèle 3 est dangereux pour une autre raison : il n'est pas traçable. Toute l'architecture repose sur la provenance — chaque enveloppe porte sa source et un identifiant. Une interprétation ad hoc ne peut ni être auditée ni être repliée.
La règle : traduction locale déclarée, publiée avec provenance. Le monde récepteur est subjectif — Jah entend fatigue, Matrice entend pression, Chataigne entend lumière. Mais sa subjectivité passe par une règle écrite, pas par une inspiration.
Concrètement, chaque monde expose trois choses :
accept : les grandeurs qu'il écoute (jamais « tout »)
map : lecture_locale = f(grandeur) ← la règle, versionnée
publish : ce qu'il rediffuse, dans SA sémantique
Et la loi qui en découle, celle que FG pressentait : un monde ne modifie jamais la donnée d'un autre ; il publie sa lecture.
3. Le pouvoir de contraindre
Le système peut couper les basses, strober, verrouiller une session. Ce n'est plus un logiciel : c'est une autorité déléguée sur un corps. Il faut une doctrine.
Six conditions rendent une contrainte légitime :
- Consentement préalable et daté — tu as configuré la règle, ce n'est pas un algorithme opaque.
- Proportionnalité — une lumière ambrée n'est pas une amputation.
- Réversibilité — un geste d'arrêt existe toujours.
- Finalité vers la vie réelle — la contrainte pousse à quitter l'écran, jamais à y rester.
- Non-humiliation — rien de public, aucun classement, aucune donnée d'un tiers.
- Transparence et non-invention — tu peux voir pourquoi elle s'active, et elle ne fabrique jamais un état qui n'a pas été observé.
Est abusive toute contrainte opaque, non révocable, permanente, humiliante, ou qui inventerait une donnée.
Le corpus a déjà rencontré ce problème et lui a donné un nom. La seule contrainte dure qu'il envisage — verrouiller la session — n'est légitime que parce qu'elle est auto-imposée, planifiée, à double confirmation, et réinitialisable. C'est la clause d'Ulysse : Ulysse se fait attacher lui-même, en connaissance de cause, et il peut toujours se délier. Dès qu'une contrainte devient automatique ou non révocable, elle change de nature.
Un cas concret, et c'est celui de FG : « couper les basses tant que la faim n'est pas remontée ». Ce design est excellent, pour une raison précise : un retrait n'ajoute rien à l'écran. Punir en ajoutant — une notification de plus, un son de plus — aggrave la surcharge, c'est-à-dire exactement le problème. Retirer ce qui est agréable crée un manque que le corps remarque immédiatement, sans coût cognitif.
4. La dispersion n'existe pas
C'est la question centrale, et la réponse est brutale : nulle part le système ne mesure la dispersion. Recherche faite : le mot n'apparaît dans aucun dépôt, aucun schéma, aucune table. Il apparaît une fois — dans la description d'un profil utilisateur (« surcharge cognitive, dispersion, difficulté à prioriser »).
Ce qui existe réellement :
| Source | Ce qu'elle mesure | Ce qu'elle ne sait pas |
|---|---|---|
| Pulse | sur quoi le temps a passé (utile / distraction) | l'intention |
| Chronos | quand, combien, les trous | le sens (stockage pur) |
| le bus agentique | le travail parallèle | l'attention humaine |
| Matrice | l'inaction dans l'interface | l'attention hors interface |
Aucune ne mesure la dispersion. Elles mesurent la fragmentation, le parallélisme, l'inaction. La dispersion doit être définie comme une dérivée.
Proposition :
Dispersion = Fragmentation × Écart à l'intention. Fragmentation = nombre de contextes distincts par unité de temps. Écart à l'intention = distance entre ce que tu as déclaré vouloir et ce que tu as fait.
Et il y a un discriminant que FG connaît bien, parce que c'est son mode de travail :
| Dispersion subie | Dispersion féconde | |
|---|---|---|
| Fragmentation | élevée | élevée |
| Valence | distraction | création |
| Retour à l'intention | jamais | produit quelque chose |
| Verdict | échec honnête | le chaos qui crée de l'ordre |
Sans ce discriminant, on punirait la dispersion féconde — c'est-à-dire le modus operandi du métaprojet lui-même.
Qui possède la dispersion ? Personne seul. Les capteurs fournissent les primitives brutes ; le calcul est une traduction déclarée ; la contrainte associée appartient à encore un autre monde. Le principe SSOT ≠ règle ≠ surface s'applique.
Question tranchée par FG pendant cet audit : la dispersion sera un monde dédié — un micromonde de l'attention, avec son propre SSOT, sa propre règle, sa propre surface. Et VFGate reste à la fois porte et monde, en séparant quand une des deux fonctions grossit trop.
5. La loi des micromondes
Dix invariants, formulés pour être testables. Presque tous sont déjà vrais dans le code : cette loi ne crée rien, elle nomme ce qui fonctionne et rend explicite ce qui marchait par accident.
- Non-écriture. Un monde ne modifie jamais le SSOT d'un autre ; il publie sa lecture.
- Provenance obligatoire. Toute donnée franchissant une frontière porte sa source, son instant et une clé d'idempotence.
- Loi du triple. Sans règle de réinterprétation, ce n'est pas un monde : c'est un capteur, un stockage ou une plomberie.
- Traduction locale déclarée. Le mapping est explicite et versionné, jamais improvisé.
- Pas de faux vivant. Si la donnée manque, le monde publie l'absence.
- Contrainte consentie, bornée, révocable. Un geste d'arrêt existe toujours.
- Canal et intensité. L'ambiant sort dans la pièce ; l'interruptif reste dans un canal qu'on peut fermer.
- Lectures, pas tables. Aucune jointure entre mondes ; uniquement des enveloppes.
- Signature et retrait. Un monde signe son interprétation et peut la replier.
- Sanctuaire inviolable. La gamification sert l'acte de la personne, jamais la mémoire d'un tiers.
6. Ce que cet audit a changé
Trois corrections, dont une qui porte sur une erreur que j'ai moi-même commise :
J'ai cru que la dispersion était un concept à formaliser. C'est un concept à créer. Il n'existe nulle part — ni comme champ, ni comme mot dans le corpus. Les capteurs fournissent des primitives, jamais la dispersion.
J'ai cru que VFGate devait trancher entre porte et monde. FG a répondu autrement : les deux, en séparant quand ça grossit. La doctrine n'a pas à choisir ce que l'architecture peut porter.
J'ai cru que la contrainte était le sujet. Le sujet, c'est le consentement. La contrainte n'est qu'un cas particulier d'un pouvoir qu'on délègue à un système — et la seule question qui compte est celle de la clause d'Ulysse.
Premier de trois articles. Les suivants traitent du câblage (dix chaînes, dont sept sans une ligne de code, et un POC déjà validé par la mesure) et du SSOT (pourquoi un manifeste peut mentir par structure, et ce qui se tisse tout seul).