En ajoutant une assiette, le commis jette celle qui était làUne opération d’ajout pouvait remplacer un fichier existant sans avertissementAdding one plate sends the existing plate to the binAn add operation could replace an existing file with no warning
La commande demande d’ajouter une assiette. Le commis vérifie sa feuille au lieu de regarder la table. Une assiette occupait déjà la place ; la nouvelle la fait disparaître sans avertissement.Une primitive d’édition décrite comme un ajout pouvait remplacer silencieusement un fichier existant : son contrôle de sécurité interrogeait un état incomplet au lieu de la destination réelle, au point même où le remplacement se produit.The order asks for another plate. The cook checks a handwritten list instead of the table. A plate already sits there, and the new one silently sends it away.A file-editing primitive presented as an add could silently overwrite an existing file. Its safety check read incomplete state rather than the destination itself, at the very point where replacement happens.
Les ustensiles et les machinesOutils et infrastructureUtensils and machinesTools and infrastructureLa liste incomplète cache l’assiette déjà poséeChronologieAn incomplete list hides the plate already thereTimeline
Une consigne devait empêcher de poser une assiette sur une place occupée. Sur le papier, la table semblait donc protégée.L’opération disposait d’un garde explicite censé refuser une destination déjà existante.A house rule was meant to stop any plate going onto an occupied place. On paper, the table looked protected.The operation carried an explicit guard meant to reject an already-existing destination.
Le commis ne regardait pourtant qu’une liste recopiée de mémoire. Certaines places occupées n’y figuraient jamais.Ce garde interrogeait une représentation mémoire partielle, qui ne contenait pas les cibles atteintes par le seul chemin d’ajout.The cook only read a list copied from memory. Some occupied places had never been written on it.That guard queried a partial in-memory representation which never held targets reached only through the add path.
La liste annonce une place libre. Le commis y pose la nouvelle assiette et fait disparaître l’ancienne. Personne n’est prévenu.Un fichier existant pouvait donc atteindre l’écriture finale et être remplacé sans avertissement.The list says the place is free. The cook sets down the new plate and removes the old one. Nobody is warned.An existing file could therefore reach the final write and be replaced with no warning at all.
La réparation oblige le commis à regarder la table juste avant de poser. Un essai confirme qu’une assiette présente reste intacte.Le correctif réintroduit l’état réel de la destination dans le chemin de décision et ajoute un test de régression qui vérifie la préservation du fichier d’origine.The repair makes the cook inspect the table just before setting anything down. A trial confirms that an existing plate remains untouched.The repair pulled real destination state into the decision path and added a regression test asserting the original file survives.
La maison a accepté cette réparation et son essai. On ignore encore si toutes les cuisines l’ont reçue. Rien ne montre non plus que les pertes ont cessé en service.Le correctif est mergé et couvert par un test de régression. Son inclusion dans une release publiée et la récupération observée sur le terrain ne sont pas établies au cutoff observé.The house accepted the repair and its trial. Whether every kitchen received it remains unknown. Nothing yet shows that plates stopped disappearing during service.The fix is merged and regression-covered. Whether a shipped release carries it, and whether the field recovered, was not established at the observed cutoff.
La feuille disait libre, la table disait occupéMécanismeThe list said free while the table said occupiedMechanism
La feuille disait que la place était libre, mais la table portait déjà une assiette. Le commis a cru le papier. Son geste pouvait donc détruire précisément ce que la consigne devait protéger.La décision de sécurité s’appuyait sur un cache dont la sémantique d’appartenance ne correspondait pas à l’opération de fichier qu’il protégeait. L’écriture finale avait des effets de bord plus forts que ceux que la précondition supposait.The list called the place free, while the table already held a plate. The cook trusted the paper. His final move could destroy exactly what the house rule was meant to protect.The safety decision ran against a cache whose membership semantics did not match the filesystem operation it guarded. The final write carried stronger side effects than the precondition ever modelled.
Vérifier la place au moment de poser l’assietteRéponseInspect the place as the plate goes downResponse
Le commis doit regarder la place réelle juste avant de poser l’assiette. La brigade doit aussi essayer le geste sur une table déjà occupée. C’est là que le danger apparaît.Vérifier les préconditions destructives contre l’état réel de la destination, au point exact où le remplacement peut se produire. Inclure systématiquement des destinations préexistantes dans les tests de régression de chaque primitive d’écriture.The cook must inspect the actual place just before setting down the plate. The brigade should also try the move on an occupied table. That is where the danger appears.Evaluate destructive preconditions against real destination state at the exact point replacement becomes possible. Every write primitive should carry regression coverage for a destination that already exists.
La réparation est acceptée, mais sa présence reste inconnueÉtat actuelThe repair is accepted, but its reach is unknownCurrent state
La réparation a été acceptée et un essai protège le geste. On ne sait pas encore si elle est arrivée dans les cuisines. Les pertes d’assiettes n’ont pas été observées après ce changement.Un correctif est mergé et testé en régression. Les états livré, installé et corrigé-observé restent non prouvés au cutoff observé.The repair was accepted, and a trial guards the move. Whether it reached working kitchens is still unknown. No later service was observed to confirm that plates stopped disappearing.A fix is merged and regression-tested. Shipped, installed and observed-fixed all remain unproven states at the observed cutoff.
Avant d’ajouter, regarder ce qui occupe déjà la placeLeçonBefore adding, look at what already fills the placeLesson
Ajouter une assiette ne doit jamais faire disparaître celle qui était là. Le commis regarde donc la table au dernier moment, pas une vieille liste.Une opération qui promet d’ajouter doit prouver l’absence de la destination au point où un remplacement pourrait se produire.Adding a plate must never remove the one already there. The cook therefore checks the table at the last moment, not an old list.An add must establish that the destination is absent, and establish it where overwriting could actually take place.

