MotifPattern

L’assiette d’avant a disparu avant que la nouvelle soit prêteL’état précédent disparaît avant que le remplacement soit garantiThe old plate vanished before the new one was readyPrevious state disappears before the replacement is guaranteed

Une assiette était déjà posée à la bonne place. Le commis l’a retirée avant d’aller chercher la nouvelle. Quand le remplaçant s’est bloqué, le client n’a plus eu qu’une place nue devant lui.Une écriture destructive altère ou supprime l’état précédent avant que le remplacement soit garanti. Chez Cline, une primitive décrite comme un ajout pouvait remplacer silencieusement un fichier existant, son garde interrogeant un état incomplet au lieu de la destination. Chez Claude Code, une redirection de sortie pouvait tronquer la destination avant que le contenu de remplacement soit écrit en sécurité.A plate already stood in the right place. The cook removed it before fetching the new one. When the replacement stalled, the guest had only bare wood in front of them.A destructive write alters or removes prior state before the replacement is guaranteed. At Cline an edit primitive described as an add could silently replace an existing file, its guard reading incomplete state instead of the destination. At Claude Code output redirection could truncate the destination before the replacement payload was safely written.

La cuisson et les reprisesExécution, arrêt et récupérationCooking and restartingExecution, cancellation and recovery

Un geste annoncé comme doux a fini par vider la tableSignauxA gentle-sounding move ended by emptying the tableSignals

Les mots promettaient d’ajouter ou d’écrire, jamais d’effacer. On vérifiait une feuille ou un moment trop tôt, pas la table au geste décisif. Une simple attente pouvait alors ne plus rien laisser à servir.Le motif se reconnaît à l’ordre des effets : la destination est mutée à l’entrée de l’opération et non à son point de validation. Le garde consulte autre chose que la destination — chez Cline, une représentation mémoire partielle qui ne contenait pas les cibles atteintes par le seul chemin d’ajout. Une interruption au milieu devient alors une perte : chez Claude Code, un blocage ordinaire laissait la destination vide, avec une exposition dépendante de l’environnement.The words promised adding or writing, never erasing. The check looked at a sheet or too early, not at the table during the decisive move. An ordinary wait could then leave nothing to serve.The pattern shows in the ordering of effects: the destination mutates at the entry of the operation rather than at its commit point. The guard consults something other than the destination — at Cline, a partial in-memory view that did not hold targets reached through the add path alone. A mid-operation stall then becomes a loss: at Claude Code an ordinary block left the destination empty, with environment-dependent exposure.

La vérification regardait ailleurs que la perteMécanismeThe check looked away from where the loss happenedMechanism

Le contrôle regardait un endroit libre sur le papier, alors qu’une assiette attendait sur la table. Le geste final a fait plus de dégâts que ce qu’il croyait couvrir. Il pouvait donc donner son accord au moment même où il fallait l’empêcher.L’opération se nomme par son intention alors que son effet à la destination est plus fort que la précondition supposée. Le contrôle est évalué avant le point destructif, et sur un objet distinct de celui qui subit la perte. Chez Claude Code, la destination est mutée avant que le chemin producteur ait progressé, ce qui transforme un blocage ordinaire en validation destructive partielle.The check saw an empty place on paper while a plate waited on the table. The final move did more harm than it covered. It could therefore say yes at the very moment it should stop things.The operation is named for its intent while its effect at the destination is stronger than the precondition assumed. The check is evaluated before the destructive point, and against a different object from the one that takes the loss. At Claude Code the destination mutates before the producing path has progressed, turning an ordinary stall into a partial destructive commit.

Préparer le remplaçant à côté avant de débarrasserRéponsePrepare the replacement beside the old plate before clearingResponse

Préparez le remplaçant à côté, vérifiez-le, puis débarrassez au moment de le poser. Une réparation et un essai existent dans un cas, mais on ne sait pas si elle a atteint les cuisines. Dans un autre, aucune protection livrée n’est établie.Vérifier les préconditions destructives contre l’état réel de la destination, au point exact où le remplacement peut se produire, et inclure une destination préexistante dans les tests de régression de chaque primitive d’écriture. Écrire le remplacement à côté et n’échanger qu’une fois celui-ci durable, de sorte qu’un échec avant validation laisse l’original intact. Chez Cline, un correctif est mergé et couvert par un test de régression, sans que livraison ni récupération observée soient établies ; chez Claude Code, aucune mitigation produit livrée n’est établie au cutoff observé.Prepare the replacement beside the old plate, check it, then clear only when setting it down. One case has a repair and a trial, but nobody knows whether it reached kitchens. Another has no delivered safeguard established.Check destructive preconditions against the real state of the destination, at the exact point where replacement can occur, and put a pre-existing destination into the regression tests of every write primitive. Write the replacement alongside and swap only once it is durable, so that a failure before commit leaves the original intact. At Cline a fix is merged and covered by a regression test, with delivery and observed recovery unestablished; at Claude Code no shipped product mitigation is established at the observed cutoff.

Le dernier bon plat doit rester jusqu’à l’échangeLeçonThe last good plate must remain until the swapLesson

Qui promet d’ajouter regarde la table au moment du geste. Tant que le nouveau plat n’est pas complet, l’ancien reste posé. C’est le seul menu dont on soit sûr.Une opération qui promet d’ajouter doit prouver l’absence de la destination au point où un remplacement peut se produire. Un échec survenu avant validation doit laisser la dernière version connue bonne intacte.Anyone promising to add must look at the table when making the move. Until the new dish is complete, the old one stays down. It is the only menu anyone knows is good.An operation that promises to add must prove the destination is absent at the point where replacement could occur. A failure before commit must leave the last known-good version intact.