Message et contrat
Gabarit de chaque page de référence : la règle, pourquoi elle existe, l'exemple tiré du chat, le contre-exemple et ce que le broker dit alors.
JSON pur
Cinq types : string, number (fini), boolean, object, array. Pour une date : un timestamp number ou une string ISO. Pour un handle (socket, pool) : jamais en message, au constructeur.
Révision, version, émetteur, abonné
- Une révision est une évolution compatible (ajout de champs), gravée en snapshot complet. La courante est la plus haute ; le moteur la dérive.
- Un émetteur déclare la révision qu'il produit et est validé contre elle. Omise, c'est la courante.
- Un abonné ne déclare jamais de révision : il reçoit toujours la forme canonique, complétée par les
default. - Une version est un changement cassant, rare, avec un
upcastFromdéclaratif. Évolution des contrats.
Le broker est strict
- Inscription en bloc et atomique : message, version ou révision inconnus, collision d'
instanceName, objet sansinstanceName: l'objet entier est rejeté,registerrenvoiefalse, l'application continue sans lui. Jamais d'exception. - Payload invalide jeté à l'émission, violations listées en console.
- Catalogue linté à la construction du broker : types,
fields/itemsmanquants,pattern/enum/defaultincohérents,oneOffautif,.dans un nom de champ,upcastFrommalformé, et la garantie de forme canonique. - Un contrat validé ne se modifie jamais : on révise ou on versionne.
ERROR (broker): acces_demande v2 is not in the catalog
ERROR (broker): registration of ecran_connexion rejected as a whole — nothing registered (see errors above)
Plusieurs clés dans une enveloppe
Le broker tolère plusieurs noms dans une enveloppe : chacun est validé et livré indépendamment, dans l'ordre de déclaration, sans atomicité. Qui veut un tout-ou-rien fait un seul message à payload composite.
Examples et counterexamples
Ils prouvent le contrat. examples: { version: { révision: [payload, …] } } doivent valider ; counterexamples, entrées { reason, payload }, doivent être rejetés. test_engine.js les rejoue. Écrivez-les.