DossierDossier

Le plat de la première table part vers la suivanteUn état de connexion global et mutable pouvait faire livrer un message à la mauvaise sessionThe first table’s plate can reach the next partyShared mutable connection state could deliver a message to the wrong session

Une seule fiche sur le comptoir indique la table servie. Chaque nouvelle arrivée remplace cette fiche par la sienne. Le commis ne la lit qu’au départ de l’assiette. Le plat de la première table peut donc partir vers la suivante.Un état de connexion partagé et mutable permettait à une session ultérieure de remplacer la connexion globalement courante. Une notification émise ensuite pour la première session pouvait donc emprunter la connexion d’une autre.One card on the counter names the table being served. Every new party replaces it with another card. The runner reads it only when leaving the pass. A plate ordered by the first table can therefore reach the next one.Shared mutable connection state let a later session replace the globally current connection. A notification raised afterwards for the first session could then ride another session’s connection.

Les plans de travailIsolation et concurrenceThe worktopsIsolation and concurrency

La nouvelle table efface le nom de la précédenteChronologieEach new table erases the previous table’s nameTimeline

Au comptoir, une seule fiche reste visible. Elle indique quelle table la maison sert maintenant.Un serveur conservait un état de connexion global et mutable.At the counter, only one card remains visible. It names the table the house is serving now.A server held mutable, global connection state.

Un second groupe vient ensuite s’asseoir. Son nom remplace celui de la première table sur la fiche.Une seconde session s’est connectée et a remplacé cet état.A second party then sits down. Its name replaces the first table’s name on the card.A second session connected and replaced it.

Un peu plus tard, la brigade termine un plat. Il avait été commandé par la première table.Une notification a ensuite été émise à destination de la première session.A little later, the brigade finishes a dish. The first table had ordered it.A notification was afterwards raised for the first session.

Le commis s’apprête à servir. Il consulte le nom au comptoir au lieu de lire le bon du plat.La livraison consultait la connexion globalement courante à l’instant de l’envoi.The runner gets ready to serve. He checks the name on the counter instead of reading the plate’s ticket.Delivery read whichever connection was globally current at send time.

L’assiette appartient à la première commande. Elle risque pourtant d’être portée aux nouveaux clients.La propriété pouvait donc franchir les limites de session.The plate belongs to the first order. Yet it may be carried to the newly arrived guests.Ownership could therefore cross session boundaries.

L’assiette cherchait son client au dernier momentMécanismeThe plate looked for its guest at the last momentMechanism

Le bon ne portait pas le numéro de table. Le commis le cherchait juste avant de partir sur une fiche modifiée à chaque arrivée. Entre la commande et le service, le destinataire pouvait donc changer.La propriété était reconstruite au moment de la livraison, depuis un état global mutable, au lieu d’être transportée avec l’événement dès sa création. Toute reconstruction tardive dépend d’un état qu’un tiers peut avoir modifié entre-temps.The ticket carried no table number. The runner looked it up just before leaving on a card changed by each arrival. The recipient could therefore change between order and service.Ownership was reconstructed at delivery time from global mutable state instead of being carried with the event from creation. Any late reconstruction depends on state a third party may have changed in between.

Écrire la table sur le bon dès le départRéponseWrite the table on the ticket when taking the orderResponse

Le serveur inscrit le numéro de table sur le bon dès la commande. Ce numéro accompagne le plat jusqu’au client et aucun commis ne le redemande au comptoir.Transporter avec chaque événement une identité de corrélation session et utilisateur immuable, sur l’intégralité du chemin de livraison. Aucune étape de ce chemin ne doit redemander qui est courant.The waiter writes the table number on the ticket when taking the order. It stays with the dish until delivery, so no runner asks the counter again.Carry an immutable session and user correlation identity with every event, along the whole delivery path. No step on that path should ask again who is current.

Une fiche au comptoir ne suffit pas pour plusieurs tablesÉtat actuelOne counter card cannot serve several tablesCurrent state

Dès que plusieurs tables commandent ensemble, le nom du dernier arrivé ne peut plus guider toutes les assiettes. Chaque bon doit garder son propre destinataire.Le cas constitue une leçon d’isolation réutilisable pour toute infrastructure d’agents multi-utilisateurs.Once several tables order together, the newest name cannot guide every plate. Each ticket must keep its own recipient.The case is a reusable isolation lesson for any multi-user agent infrastructure.

Le bon du plat doit porter sa tableLeçonThe plate’s ticket must carry its tableLesson

Le serveur écrit la destination au moment de prendre la commande. Le plat n’a alors jamais besoin d’emprunter le nom affiché pour un autre client.La propriété doit voyager avec l’événement.The waiter writes the destination when taking the order. The plate never needs to borrow the name displayed for another guest.Ownership must travel with the event.