Une architecture cognitive de la double route.
OMEGA est né comme un moteur de pendu français — un banc d'essai exigeant pour une idée : une machine qui raisonne sur la langue (phonologie, orthographe, morphologie) plutôt qu'elle ne consulte un oracle. Le correcteur dys en est le débouché appliqué.
La doctrine : mesurer ou rejeter
Une seule règle gouverne le projet : rien n'est gardé sans mesure. Tout module est désactivé par défaut, et la base de référence reste byte-identique tant qu'un gain n'est pas prouvé. Les idées séduisantes qui ne tiennent pas à la mesure sont falsifiées et documentées — pas enterrées.
« Cognition > oracle » : la valeur est dans le raisonnement, pas dans la triche. La configuration de référence ne lit jamais le mot caché.
La décision n'est pas un argmax mais une jointe probabiliste : on marginalise sur les hypothèses latentes — Σφ P(φ|indice)·P(lettre|φ,contexte) — au lieu de parier sur la plus probable. On croise, on ne devine pas.
Le banc d'essai : le pendu
Deviner un mot français lettre par lettre, sous contrainte, est un test sévère de modèle de langue : il faut intégrer la structure orthographique, les voisins, la phonotactique. La configuration cheat-free intégrale (qui ne lit jamais le mot caché — ni ses lettres, ni son son : cohorte « board-dérivée ») atteint ≈ 97,3 % de parties gagnées en lexique ; le plafond oracle (qui, lui, triche) est à 98,7 %.
Plus sévère encore : le hors-lexique (mot jamais vu, façon Trexquant). Et ici on dit d'où vient le score, parce que c'est la thèse du projet — distinguer la cognition de la consultation statistique : la cognition seule ne généralise pas en sous-lexical (≈ 11 %), l'orthographe pure plafonne à ≈ 33 %. Ce qui porte le hors-lexique, c'est une voie d'agrégation n-gram — statistique mais cheat-free (structure positionnelle des lettres pré-calculée du lexique, jamais le mot caché) — à ~62 %, que le raisonnement gap-aware (plus proche voisin révélé) pousse à ≈ 64 % (stable sur 3 graines). Sur les mêmes mots, ce système bat un étalon n-gram naïf (46,7 %) de +17 points — c'est là qu'est la valeur ajoutée de la méthode — dans la bande des bons solveurs (65-68 %), dans un seul fichier HTML, sans entraînement ni GPU.
Quand OMEGA évolue
Au-delà de jouer, OMEGA peut se copier, varier et être sélectionné par le pendu lui-même : une boucle darwinienne sur un moteur cognitif. Il reconstruit son propre code de décision — la copie est vérifiée à l'octet près, et le pendu rejoue à l'identique — puis une variation le modifie, et la fitness du jeu garde le meilleur.
Deux pistes plus loin, désormais testées — et l'honnêteté prime sur l'effet :
- Travail de groupe (O1) — négatif, assumé. Faire coopérer plusieurs versions ne bat pas la meilleure seule : de vraies versions sont fortes et trop semblables (toutes ~97 % en lexique, désaccord ≤ 10 %), et le routage utile est déjà l'arbitrage interne du moteur. La coordination externe est subsumée par l'architecture.
- Mesure multi-usage (O2) — positif, et révélateur. Mesurer le seul pendu en lexique est aveugle : lexique et hors-lexique dissocient (un génome champion au pendu peut être catastrophique en généralisation). Et ça mène à une question de fond — juste en dessous.
Et si on l'enlève du français ? Le cœur est un compresseur.
La vraie question d'O2 : ce qui porte OMEGA hors-lexique, est-ce du français, ou un mécanisme général ? On a pointé son substrat (l'agrégation n-gram) sur du code — sans le lexique français — et mesuré la compression. Car prédire, c'est compresser (Shannon) : la compression dit en bits par caractère combien de structure un modèle capture.
| domaine | hasard | substrat n-gram | structure capturée |
|---|---|---|---|
| Français | 3,98 b/car | 2,97 b/car | −1,01 b |
| Code (identifiants, sans Lex4) | 4,17 b/car | 3,05 b/car | −1,12 b |
| Code brouillé (structure détruite) | 4,17 b/car | 4,41 b/car | +0,24 b — rien |
Il compresse le code aussi bien — un peu mieux même — que le français, et ne gagne rien quand on brouille la séquence. → le cœur transférable d'OMEGA est un compresseur de séquences structurées, domaine-agnostique : il marche partout où il y a de la structure, pas seulement en français. Puissant et général — mais c'est de la capture de structure, pas de la compréhension (ça, ce serait un LLM, un autre projet).
Mesuré de deux façons indépendantes, même verdict : reconstruction façon pendu (evo_o2_crossdomain.js) et compression en bits (evo_o2_compression.js).
Et le sens, alors ? On a tenté — et voici la frontière.
Un compresseur capture la forme, jamais le sens. Peut-on en ajouter un avant-goût ? On a essayé la sémantique distributionnelle (« le sens = la compagnie qu'un mot fréquente », Firth) pour désambiguïser des homophones — méthode Golding & Roth 1999 (prior × contexte, held-out, corpus UD réel). Le contexte aide — surtout les homophones grammaticaux (son/sont 55→88 %, ce/se 53→76 %, et/est 60→77 %). Mais la précision plafonne à 77-88 %.
Or le correcteur a une garde absolue : FP=0 — ne jamais souligner du juste. À 77-88 % de précision, il créerait trop de fausses alertes. On a balayé le seuil de confiance pour trouver un filet FP-safe :
| seuil de confiance | recall | précision |
|---|---|---|
| ≥ 0,90 | 56 % | 91 % |
| ≥ 0,99 | 27 % | 96 % |
| FP = 0 (conf > 0,9999) | 1,6 % | 100 % |
Pas de filet : pour atteindre FP=0, le recall s'effondre à 1,6 % — le signal « sens » est trop bruité pour passer le portier. Contraste mesuré : le levier lexical du genre (propre) passe FP=0 naturellement — il a été câblé (+6 pts de recall) ; le sens statistique, lui, est recalé. → la compréhension reste hors-doctrine (ce serait un LLM). OMEGA maîtrise la forme ; le sens est la frontière, assumée et chiffrée.
Mesuré : evo_o2_homophone_context.js (désambiguïsation Golding&Roth) · evo_o2_sense_fpzero.js (balayage FP=0).
Rejouable : evo/evo_o1_real.js · evo_o2_multitask.js · evo_o2_crossdomain.js · evo_o2_compression.js · plan : evo/EVO_ROADMAP.md.
Mais une mutation n'est utile que si l'on mute le bon niveau. Muter le code source casse presque tout — aucune amélioration possible. Muter les paramètres ouvre un paysage lisse où 30 % des mutations sont bénéfiques : c'est l'évolvabilité (Wagner & Altenberg, 1996). Basculez :
Mesuré bout-à-bout : P1 se copie (quine vérifié), P2 communiquent (un code émerge du seul reward), P3 générations (une meilleure version trouvée, validée hors-échantillon). Certains chiffres aux grandes longueurs restent seed-dépendants — gardés tels quels. Détail : evo/EVO_ROADMAP.md, evo/EVO_P3_EVOLVABILITY.md.
Le substrat partagé : la double route phono↔ortho
Pendu et correcteur sont la même machine pointée dans deux directions sur le canal son ↔ écriture :
- Le pendu modélise
P(orthographe)et complète le masqué — il encode la structure. - Le correcteur inverse le bruit sur cette même structure : d'une surface corrompue, il remonte à l'intention — il décode.
Chacun combine une voie lexicale (le mot existe-t-il ?) et une voie sublexicale (règles graphème↔phonème), arbitrées par leur fiabilité — exactement la double route de la lecture chez l'humain.
De la défaite du pendu à la dyslexie
Le constat-clé : le profil de défaite du pendu ressemble à une signature dyslexique — il échoue majoritairement sur les confusions voisée / sourde (p/b, t/d…), exactement le type d'erreur phonologique au cœur de la dyslexie. Quand le moteur perd, il perd comme un lecteur dys.
D'où le sous-projet dictée diagnostique, puis le correcteur dys : le moteur qui modélise le canal d'erreur devient l'outil qui le corrige.
Le débouché : le correcteur dys
Détecter et corriger sans corrigé, en contexte, avec une garde cardinale : zéro faux positif. Un résultat récent illustre la méthode — la garde « §3 » : là où une règle plate lisait un étiquetage grammatical dur (et souvent faux : « faute » étiqueté verbe alors que 99 % de ses usages sont des noms), un posterior fréquentiel P(catégorie|forme) tranche correctement — récupérant des corrections justes et baissant les fausses alertes à la fois.
Ce qu'on a essayé… et rejeté
L'honnêteté des résultats négatifs fait partie de la méthode. Mesuré, puis écarté :
- un « C cognitif » léger appris, puis un transformer lourd — parité au mieux avec une heuristique simple, parfois pire.
- le pendu de phrases comme levier de victoire — le partage de lettres fuit les fins de mots.
- plusieurs élargissements du correcteur (edit-distance 2, relâche de gardes…) — chacun rouvrait des faux positifs, donc non câblé.
Garder la trace de ce qui ne marche pas évite de le refaire — et rend crédible ce qui marche.
Un second dérivé : OMEGA·KEY — messagerie chiffrée
Le même moteur, pointé ailleurs : une messagerie chiffrée de bout en bout tenant dans un seul fichier HTML, hors-ligne. OMEGA fournit le lexique (passphrases françaises prononçables) ; toute la cryptographie repose sur la WebCrypto standard du navigateur — aucun algorithme maison.
Le chat. Une carte Conversation chiffrée tient un fil de bulles, avec deux transports : sans serveur — le chiffré se copie tout seul, tu le colles à ton correspondant ; ou via un relais minimal (auto-hébergeable sur Deno Deploy en ~2 min) qui pousse les messages en temps réel (SSE) et établit le ratchet DH automatiquement (échange des clés publiques, sans copier-coller) — le relais ne voit que du chiffré, et le numéro de sécurité détecte une interception.
- Passphrases FR prononçables — mots réels (12 bits/mot) ou pseudo-mots (8 bits/syllabe), entropie tirée de
crypto.getRandomValues, sans biais modulo (listes en 2ⁿ, lecture de bits exacte — vérifié). - Clé partagée — PBKDF2-SHA256 310 000 itérations → AES-256-GCM, empreinte de clé vérifiable des deux côtés.
- Double Ratchet — ECDH P-256 → forward secrecy et récupération post-compromission.
- Par message — IV aléatoire 96 bits, intégrité par tag GCM. Le relais (optionnel, auto-hébergeable) ne voit jamais le clair.
⚠️ Démo, pas un produit de sécurité
Briques standard et bien employées (WebCrypto, IV uniques, pas de Math.random dans les clés), tests crypto automatisés en CI (entropie, round-trip, KAT du ratchet), numéro de sécurité anti-interception et historique chiffré au repos — mais le protocole reste assemblé à la main et n'a pas eu d'audit cryptographique formel. Pour de vrais secrets, utilise Signal.
À savoir : le relais voit les métadonnées (salon, horaires, tailles) · échange la passphrase par un canal sûr et compare le numéro de sécurité avec ton correspondant.
Aller plus loin
Les documents de fond (denses, en cours d'actualisation) :
- Mémoire de recherche — architecture, méthode, résultats (et résultats négatifs).
- Rapport de référence & mode d'emploi — configuration, détail des voies.
- Le code — tout est mesurable et reproductible (
./dev.sh).
Note d'honnêteté : le pendu est un banc de mesure, pas un produit. Le produit, c'est le correcteur. Ces deux pages décrivent l'état réel du projet, pas une vitrine.