quest'n'click 4.5.0 · r1

Construite pour quest'n'click 4.5.0, révision r1. Si elle est publiée, et laquelle est la courante, est dit par publication.json.

Le Reality Bridge : ce que c’est

English · Type : explication · Public : auteur, administrateur · Contexte : Reality Bridge · Statut : prête · S'applique depuis : 4.2.5

Le Reality Bridge, profil local (SQLite) · contrat : stable · vérifié par la CI (matrice de support de la 4.4.0, 2026-10-23) : Node 22.13+ avec node:sqlite, sous Ubuntu ; Chromium et WebKit de bout en bout · vérifications automatiques : jobs reality, reality-xcheck ; plan de CI reality ; 2 fichiers de tests · passes humaines : aucune · limites connues : bridge-not-a-game-server, bridge-experimental-parts

Le Reality Bridge, profil distributed (Postgres) · contrat : expérimental · vérifié par la CI (matrice de support de la 4.4.0, 2026-10-23) : Postgres 16 en CI ; Le profil de qualification : HTTPS, trois instances (ops/qualify/) · vérifications automatiques : jobs bridge-postgres, deployment-smoke ; plan de CI reality ; 1 fichier de tests · passes humaines : bridge-postgres-https pas faite (#77) · limites connues : bridge-not-a-game-server, bridge-experimental-parts

Les connecteurs (email, Telnet, SSH, Open Badges) · contrat : expérimental · vérifié par la CI (matrice de support de la 4.4.0, 2026-10-23) : Node 22 sous Ubuntu (Telnet et SSH pas sous Windows) · vérifications automatiques : jobs connectors, connector-archive-e2e ; plan de CI reality ; 3 fichiers de tests · passes humaines : connectors-real-security pas faite (#79) · limites connues : bridge-not-a-game-server, bridge-experimental-parts

Un jeu quest'n'click peut réagir à un fait du monde extérieur : un e-mail qui répond, un webhook appelé, un badge présenté, une commande tapée dans un terminal. Le jeu, lui, ne touche jamais au réseau. Un service à part, le Reality Bridge, transforme le fait en un court signal signé, et le jeu l’applique comme une entrée du joueur : une fois, sauvegardé, rejouable hors ligne. Cette page dit quelles sont les pièces et pourquoi elles sont découpées ainsi. Pour l’essayer : Démarrage rapide ; pour en faire tourner un : Installer et lancer le Bridge.

Ce que c’est

Trois mains portent un fait jusqu’au joueur, chacune vérifiant la précédente :

PièceTourne oùFaitDétient
Un connecteur (e-mail, Telnet, SSH, Open Badges, ou le webhook de démonstration du Bridge)son propre processus, à côté du Bridgelit l’entrée extérieure comme hostile, la rattache à un joueur, propose un signal déclaré avec une clé de déduplicationson propre jeton Biscuit, ses propres secrets (un mot de passe de boîte mail, une clé d’hôte)
Le Bridge (bridge/src/, le paquet quest-n-click-bridge)un petit service Nodeautorise le connecteur (Biscuit), vérifie le signal contre le manifeste du jeu, déduplique, le numérote par joueur, le signe (Ed25519), le garde jusqu’à l’accusé de réception du joueurla clé qui signe les événements, les empreintes des capacités des joueurs, les signaux
Le joueur (le jeu dans le navigateur)l’appareil du joueurvérifie la signature avant de lire quoi que ce soit, applique le signal comme un événement, sauvegarde, puis accuse réceptionune capacité qui lit et acquitte ses propres signaux, rien d’autre

Un signal n’est qu’un identifiant pris dans une liste finie que le jeu déclare (mail.answer.correct) : aucun texte, aucune adresse, aucune charge venue de l’extérieur n’atteint le jeu. Il arrive comme l’événement du jeu du même nom. Le moteur l’applique au plus une fois, comme une entrée de la session, sauvegardée avant l’accusé de réception (src/engine/reality/protocol.ts vérifie, WorldSignalPort est le transport, et un jeu sans reality ne charge rien de ce code).

Le Bridge existe depuis la 4.1.1, les quatre connecteurs depuis la 4.1.9, plusieurs instances et plusieurs tenants sur un même stockage depuis la 4.1.10. Son profil local (SQLite) est stable ; son profil distributed (Postgres, plusieurs instances) et les connecteurs sont expérimentaux (Stabilité et support).

Pourquoi

Les options écartées

Les compromis

Limite · bridge-not-a-game-server Le Bridge porte des signaux déclarés de l’extérieur vers le jeu d’un joueur. Il n’exécute aucune logique de jeu, ne détient aucune sauvegarde, et ne partage pas l’état d’un jeu entre joueurs.

Limite · bridge-experimental-parts Les connecteurs et le profil distributed sont expérimentaux : chaque test de contrat et d’abus tourne en CI, mais personne n’a encore fait tourner un connecteur contre un vrai fournisseur d’e-mail, un vrai badge ou un terminal exposé sur un réseau, ni le profil distributed derrière un vrai domaine pendant 24 à 48 heures.

Décisions et ADR


Modifier la source de cette page · Signaler une erreur