Files
space-cubion/specs/adressage-generatif-triplet-v0.md
2026-08-12 00:34:34 +00:00

139 lines
9.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LE TRIPLET — spec v0 de l'Adressage GĂ©nĂ©ratif
> Le format éternel commun à la **position**, au **DM** et à la **réplication**.
> Ce qu'on gÚle ici, c'est la primitive `C2` du paper *L'Adressage Génératif* (§2.2, P0) et
> le protocole *XI0N-résidu* de *fractales-de-reel* (§7) : une seule donnée, trois usages.
>
> J0bot · Juillet 2026 · AGPL-3.0 · **spec — v0** · `adressage-generatif-triplet-v0`
> Convention : `[POSÉ]` = gelĂ©/dĂ©cidĂ© · `[HYPOTHÈSE]` = attendu mais non prouvĂ© dans le repo.
## 0. Ce que ce document gĂšle
Une donnée n'est pas un contenu qu'on garde, c'est une **adresse** dans un espace génératif : un
point qu'on retrouve. La spec v0 fige le format de cette adresse — le **triplet** — et les trois
opĂ©rations dessus (LIRE, ÉCRIRE, ALIGNEMENT). Le triplet ne change plus en grandissant : c'est le
« connecteur logiciel » de XERB0XI0N, l'équivalent du CFC matériel. Tout le reste (les générateurs,
la navigation, le réseau) se construit *au-dessus* et peut évoluer ; le triplet, non.
## 1. La donnĂ©e — le triplet `[POSÉ]`
```
triplet = ( hash_générateur , coordonnées , hash_résidu )
└─ BLAKE3, 32 o ─┘ └─ opaque ──┘ └─ BLAKE3, 32 o ─┘
```
Trois champs, tous de taille bornée. **Le triplet est pure adresse** : il ne contient aucun octet de
contenu, seulement des références vérifiables.
- **hash_gĂ©nĂ©rateur** — BLAKE3 d'un **gĂ©nĂ©rateur** : un programme pur, dĂ©terministe, sandboxĂ©
(module WASM, `C0`). Il se résout dans le store adressé par contenu (`C1`, modÚle Git/BLAKE3) en un
module exécutable. Le générateur est un **bien commun** : répliqué gratuitement, amorti sur toutes
les données qui le citent.
- **coordonnĂ©es** — localisent la donnĂ©e *dans* ce gĂ©nĂ©rateur : seed, `x/y/z/t`, index Hilbert 4D du
Cubion, clé, temps. Minuscule, une par donnée. Le format interne des coordonnées est propre au
domaine du générateur ; le triplet les traite comme opaques.
- **hash_rĂ©sidu** — BLAKE3 du **rĂ©sidu** : l'Ă©cart, au bit prĂšs, entre ce que le gĂ©nĂ©rateur prĂ©dit
et ce que le réel a fait. Se résout dans le store en un bloc d'octets (éventuellement vide). Le
rĂ©sidu est la **seule part qui exige du stockage** — l'unitĂ© de rĂ©el, le Tsoin.
Cas dĂ©gĂ©nĂ©rĂ©s `[POSÉ]` (rĂ©trocompatibilitĂ© Ă©ternelle) : gĂ©nĂ©rateur = identitĂ© ⇒ rĂ©sidu = la donnĂ©e
entiĂšre (stockage classique) ; rĂ©sidu = vide ⇒ pure structure (gĂ©nĂ©ration procĂ©durale). Le rĂ©el est
entre les deux, facturé à hauteur de sa surprise.
## 2. Les trois opĂ©rations `[POSÉ]`
Soit `G = store[hash_générateur]`, `R = store[hash_résidu]`.
- **LIRE** — `donnĂ©e = G(coordonnĂ©es) ⊕ R`.
`⊕` est l'opĂ©rateur de recombinaison bit-exact du domaine (le cas dĂ©gĂ©nĂ©rĂ© est un XOR / une somme).
On régénÚre la prédiction et on y applique l'écart. Déterministe, bit pour bit, sur toute machine,
à toute époque. *Complet en adresses, paresseux en calcul* : déplier coûte du calcul (profondeur de
Bennett, §3), c'est le prix assumé.
- **ÉCRIRE** — choisir un gĂ©nĂ©rateur `G`, calculer `R = donnĂ©e ⊖ G(coordonnĂ©es)`, **ne garder que
`R`**. Écrire, c'est ne conserver que l'Ă©cart au prĂ©dictible. AsymĂ©trie assumĂ©e : lire est rapide,
bien Ă©crire est lent (trouver un bon `G` est coĂ»teux, §3) ⇒ encodage diffĂ©rĂ© + rĂ©-encodage
rétroactif quand un meilleur générateur apparaßt (le systÚme comprime son propre passé).
- **ALIGNEMENT** — deux nƓuds partagent un gĂ©nĂ©rateur **ssi `hash_gĂ©nĂ©rateur` est Ă©gal des deux
cĂŽtĂ©s**. C'est une Ă©galitĂ© de hash, **dĂ©cidable au bit** — pas une synchronisation floue. Deux
triplets qui citent le mĂȘme gĂ©nĂ©rateur ne diffĂšrent que par `(coordonnĂ©es, hash_rĂ©sidu)` : on
**diffe des adresses au lieu de transporter des blobs**. C'est le levier de tout le reste.
## 3. Les garde-fous honnĂȘtes `[POSÉ]`
Sans eux, la promesse ment. Aucun n'est contournable.
1. **Le mur de Kolmogorov.** Le résidu d'un vrai aléatoire est **incompressible** : il coûte son
poids plein, toujours. « Tout dans un kilo-octet » est faux. Le systÚme *catalogue* cette borne
au lieu de la cacher ; la part de réel-pur ne devient jamais gratuite.
2. **Le meilleur générateur est non-calculable.** `K(x)` n'est pas calculable ; la recherche
universelle de Levin trouve l'optimum mais en temps exponentiel. On ne publie **jamais l'optimum** —
on publie des **majorants nommés** (un panel de compresseurs identifiés, BIONLIB en est un) et une
grandeur honnĂȘte : **`certitude = 1 − L_min / L_baseline`**, qui monte Ă  chaque raffinement sans
jamais atteindre 1. « Envoyer en fractale de réel » est aussi bon que le meilleur générateur connu
du domaine, ni plus.
3. **Coût de dépliage (Bennett).** Un générateur court peut demander un temps de calcul énorme.
Le triplet troque de la bande passante/du stockage contre du calcul chez le lecteur — bon Ă©change
sur un lien lent et lointain, pas toujours en local.
4. **GĂ©nĂ©rateurs appris ≠ bit-exacts → opt-in au bord, jamais dans le format Ă©ternel.** Les codecs
neuronaux (COIN/COIN++) et les floats non reproductibles entre architectures sont un **slot
opt-in**, activable *au bord* d'un domaine, jamais dans le triplet gelĂ©. Le cƓur reste bit-exact
(IFS entier, WASM de rĂ©fĂ©rence, quantization entiĂšre). Un gĂ©nĂ©rateur qui ne redonne pas le mĂȘme bit
partout ne peut pas porter un `hash_générateur` du format éternel.
5. **GPG non-optionnel.** Le résidu est la seule part irréductible et sensible ; il est **toujours**
chiffré GPG au repos et en transit. Les générateurs, communs et publics, ne le sont pas.
6. **Opt-in & droit au silence.** Rien n'est capturé ni régénéré sans consentement explicite. Une
donnĂ©e peut ne jamais ĂȘtre Ă©crite. **Ne pas nuire** gouverne le format autant que le code.
## 4. Les trois applications — une donnĂ©e, trois usages
- **Position.** Une trajectoire GPS brute répÚte des blobs lat/long quasi identiques. En triplet :
générateur = modÚle de mouvement (vitesse ~constante, chemin prédictible) ; coordonnées = index
temps ; résidu = l'**écart** à la position prédite. On ne stocke que la surprise du déplacement.
La coordonnée *est* la position ; le blob répété disparaßt.
- **DM entre amis.** Deux amis qui partagent le mĂȘme `hash_gĂ©nĂ©rateur` (leur contexte commun : langue,
historique, modĂšle partagĂ©) n'Ă©changent que `(coordonnĂ©es, rĂ©sidu)` — le rĂ©sidu Ă©tant **l'Ă©cart au
prĂ©dictible**. Le rĂ©cepteur rĂ©gĂ©nĂšre le reste. C'est `K(x | gĂ©nĂ©rateur) â‰Ș K(x)` : le message
s'effondre Ă  sa seule surprise. L'ALIGNEMENT par hash rend « on partage bien le mĂȘme gĂ©nĂ©rateur »
décidable, pas espéré.
- **RĂ©plication.** Entre deux boxions/nƓuds, on ne **transmet et ne chiffre (GPG) que les rĂ©sidus** ;
les générateurs sont des **communs gratuits**, déjà des deux cÎtés (rÚgle 50/50 : le réseau protÚge
exactement l'irrĂ©ductible). Mars↔Terre n'Ă©changent que ce que l'autre ne pouvait pas prĂ©dire.
Le fil commun : dans les trois cas, ce qui voyage/se garde n'est jamais l'instant, c'est **l'écart
entre l'instant et ce que l'autre bout savait déjà en prédire.** Position, DM et réplication sont la
mĂȘme opĂ©ration Ă  trois Ă©chelles.
## 5. Ce que ça débloque concrÚtement dans le repo
- **Manifeste de réplication diff-only.** Aujourd'hui `/replicate` pousse un **bundle complet signé**
(les deux bouts ne partagent pas encore le générateur). Le triplet transforme ça en réplication
**diff-only** : le manifeste devient une liste de triplets ; quand `hash_générateur` est déjà
présent chez le récepteur (ALIGNEMENT), on ne transmet que `(coordonnées, hash_résidu)` + le résidu
chiffrĂ© GPG. C'est *XI0N-rĂ©sidu* (§7 de *fractales-de-reel*) — une page de protocole, pas une techno
Ă  inventer, testable dĂšs aujourd'hui en logiciel sur le xion (deux nƓuds fĂ©dĂ©rĂ©s, gain mesurĂ© comme
le 882× : octets du rĂ©sidu vs octets de l'instant dĂ©pliĂ©).
- **Bion network.** Un bion *est* un tsoin : il ne stocke pas sa sortie, il stocke son générateur
(référence/recette) et se rejoue. C'est le triplet descendu au niveau primitive
(`timer-tsoin = {ms}`, `son-tsoin = {source, id, position}`). Le format v0 donne Ă  un bion runtime
(WASM, ex. `json_str`) et Ă  un bion web (`timer-bion`) **le mĂȘme identifiant** (`hash_gĂ©nĂ©rateur`),
donc un ploxion-écran peut référencer un bion partagé au lieu de le recopier : la flotte passe de N
monolithes à un alphabet de bions + une nuée de specs. Le triplet est le contrat qui rend un bion
citable, partageable et rejouable Ă  travers les deux mondes.
- **Contrat jOSPresence.** La présence live (curseurs, post-its LWW, collab) n'a pas besoin d'émettre
l'état : un émetteur et un récepteur qui partagent le `hash_générateur` d'un modÚle de présence
n'échangent que `(coordonnées, résidu)` sur le PL0XI0N Bus, et le récepteur régénÚre. Le format v0
fige le paquet que jOSPresence met sur le bus — l'Ă©cart, chiffrĂ©, alignĂ© par hash — au lieu d'un
blob d'état répété.
---
*Reste Ă  faire (P1 du paper) : le codec aller-retour `image → triplet → image` bit-pour-bit, mesurĂ©
vs PNG/JPEG, qui prouve `⊕` sur un vrai mĂ©dia. La navigation Hilbert (`C5`, zoom = descente Merkle)
consomme ce mĂȘme format.*
*Décisions encore ouvertes (héritées de §12 du paper) : nom canonique du composant · sémantique de
**merge** des rĂ©sidus (deux Ă©carts concurrents sur le mĂȘme point) · pĂ©rimĂštre exact du gel v1.*
*Ne pas nuire. On ne transmet jamais du rĂ©el — seulement de la surprise sur fond de structure commune.*
*AGPL-3.0 · Juillet 2026 · adressage-generatif-triplet-v0*