L'aiguilleur. Un par environnement. Reçoit les inscriptions, valide chaque publication contre le catalogue, livre en FIFO à épuisement une copie privée à chaque abonné. Ne connaît aucun composant par son nom. Référence.
Catalogue
L'ensemble des contrats d'un broker, en pure donnée. Chaque broker reçoit un seul catalogue d'union, assemblé au point de composition à partir des catalogues de canaux et des contrats locaux. Référence.
Catalogue de canal
Un fichier par canal, exportant SHARED (les contrats partagés), FINGERPRINT (le millésime) et CHANNEL (l'autorisation de transit). Les deux moitiés du canal importent le même fichier. Référence.
Contrat
Une entrée du catalogue : le nom d'un message et ses versions, révisions, champs, exemples. Un contrat validé ne se modifie jamais.
Composant, objet standard
Une classe à la signature (broker, instanceName, deps), avec emits, receives, handleMessage, destroy. Ne connaît que le broker. Référence.
Message, enveloppe, payload
L'enveloppe est { nom: payload }. Le payload est du JSON pur dont chaque champ est déclaré. Deux clés d'enveloppe réservées : id et session.
Révision
Évolution compatible d'une version : ajout de champs, snapshot complet. La courante est la plus haute. Un émetteur déclare la sienne ; un abonné reçoit toujours la forme canonique de la courante. Référence.
Version
Évolution cassante d'un contrat, rare, gravée avec un upcastFrom déclaratif. Le broker chaîne les upcasts vers l'avant ; jamais de downcast.
Forme canonique
Un payload complété à la révision courante de sa version par les default. C'est la seule forme qu'un abonné reçoit, et la seule qui circule entre deux brokers.
Upcast, upcaster
La complétion d'une révision à la suivante (par défauts) ou la transformation d'une version à la suivante (par rename, defaults, remove). Interprété par le moteur, jamais du code.
Canal
Un objet standard qui relie deux brokers à travers un transport, inscrit en miroir croisé de CHANNEL. Le seul objet qui connaisse le transport. Rien ne lui parle directement. Référence.
Autorisation de transit (CHANNEL)
Les deux listes clientEmits et clientReceives : ce qui a le droit de traverser un canal, dans chaque sens, avec sa version.
Handshake
L'échange initial d'un canal pontant deux catalogues : le client présente ses listes de transit et ses schémas, le serveur juge la compatibilité et rend un jeton et des bases d'upcast. Rien ne transite avant.
Millésime (FINGERPRINT)
Étiquette manuelle d'un catalogue de canal. Différente au handshake, un avertissement, jamais un refus.
Session
Côté serveur, l'objet { data } attaché à une connexion par le canal, survivant à une coupure pendant un TTL, repris par jeton. Jointe par référence à chaque livraison sous la clé session ; son identifiant sous la clé id.
connection_event
Contrat fourni par le framework, publié par le canal : connected, resumed, disconnected, expired.
allowMessage
La grille d'admission posée sur la session par le composant d'authentification, consultée par le canal avant de publier chaque entrant. Référence.
Audit
broker.audit(transits) : lecture du graphe en fin de composition, rendant les dérives entre catalogue et câblage : orphan_emit, dead_receive, unused_contract, version_gap, revision_gap. Référence.
Point de composition
index.html côté client, server.js côté serveur : le seul endroit qui construit le broker, les canaux et les composants, qui ouvre les ressources, et qui a le droit de lire l'environnement.
deps
Le troisième argument du constructeur : tout ce que l'objet reçoit. Opaque au framework, à la clé support près. Les cinq règles.
Support
Le ou les nœuds HTML où un composant client peint, reçus par deps.support (un nœud ou une carte de nœuds), normalisés en this.supports.
Sonde (probe)
Un objet standard minimal utilisé dans les tests : inscrit comme émetteur de ce que le composant reçoit et abonné de ce qu'il émet, il garde tout ce qu'il reçoit. Référence.
ref
Un identifiant de message (UUID) placé dans le payload pour corréler un aller-retour ou dédoublonner un renvoi. Jamais un nom d'instance.
Garde-fou anti-cycle
Broker.DELIVERY_BUDGET : au-delà de 1000 livraisons en un drain, la file est jetée avec une erreur. Un cycle devient un diagnostic.