L’ardoise est effacée avant l’arrivée du nouveau menuL’écriture s’est bloquée après que la destination avait déjà été tronquéeThe board is wiped before the new menu arrivesThe write hung after the destination had already been truncated
Le commis efface entièrement l’ardoise du jour avant d’attendre le nouveau menu. Cette fois, la dictée reste bloquée et n’arrive jamais. L’ancien menu a disparu, le nouveau manque, et l’ardoise reste blanche.Un deadlock shell/heredoc récurrent, observé sur un chemin Bash de macOS, a pris une conséquence plus grave. Avec redirection vers fichier, la destination pouvait être tronquée avant que le payload de remplacement soit écrit en sécurité. Le blocage cesse alors d’être bénin : il laisse la destination vide.The cook wipes the entire daily board before waiting for the new menu. This time, the dictation sticks and never arrives. The old menu is gone, the new one is missing, and the board stays blank.A recurring shell/heredoc deadlock, seen on one macOS Bash path, took on a heavier consequence. Under file redirection the destination could be truncated before the replacement payload was safely written. The hang stops being benign at that point: it leaves the destination empty.
Les ustensiles et les machinesOutils et infrastructureUtensils and machinesTools and infrastructureL’ardoise a été effacée avant que la dictée commenceChronologieThe board was wiped before the dictation beganTimeline
La même dictée s’était déjà bloquée dans plusieurs cuisines. Le problème n’appartenait donc pas à un seul poste.Le même deadlock de heredoc était déjà apparu sur plusieurs surfaces d’exécution.The same dictation had already jammed in several kitchens. The problem did not belong to one station alone.The same heredoc deadlock had already shown up on more than one execution surface.
Ces premiers blocages arrêtaient le travail. Aucune protection durable n’avait pourtant été installée.Ces occurrences bloquaient le travail sans établir de mitigation durable au niveau produit.Those earlier jams stopped the work. Yet no lasting safeguard was installed.Those occurrences hung work without establishing any durable product-level mitigation.
La panne a ensuite été reproduite dans une cuisine récente. Une autre voix assurait cette fois la dictée.Une reproduction sur version courante a remontré la panne sous macOS avec un Bash alternatif.The failure was later reproduced in a current kitchen. A different voice handled the dictation this time.A current-version reproduction showed the failure again under macOS with an alternate Bash.
Lors de cet essai, l’ancienne ardoise avait déjà été nettoyée. La dictée s’est figée avant d’écrire le remplacement.Avec redirection vers fichier, la destination était déjà tronquée avant que le payload atteigne le consommateur.In that trial, the old board had already been wiped. The dictation froze before writing its replacement.Under file redirection the destination was already truncated before the payload reached its consumer.
Au dernier relevé, cette perte restait possible. Aucune protection installée dans la maison ne l’empêchait encore.Au cutoff observé, aucune mitigation produit livrée n’est établie.At the last check, this loss remained possible. No safeguard installed in the house prevented it.No shipped product-level mitigation was established as of the observed cutoff.
On efface d’abord, puis la nouvelle écriture se bloqueMécanismeThe old board is wiped before the new words can arriveMechanism
Le danger vient de l’ordre des gestes : l’éponge efface l’ancien menu avant que le nouveau soit prêt. Si la dictée se bloque ensuite, la brigade perd aussi la dernière version correcte.La redirection shell peut modifier la destination avant que le chemin producteur-consommateur du heredoc ait progressé. Un comportement d’interpréteur et de pipe dépendant de l’environnement transforme alors un blocage ordinaire en commit destructif partiel.The danger comes from the order of work: the old menu is wiped before the new one is ready. If dictation then jams, the brigade also loses the last correct version.Shell redirection can mutate the destination before the heredoc’s producer-consumer path has made progress. Environment-dependent interpreter and pipe behavior then turns an ordinary hang into a partial destructive commit.
Préparer le nouveau menu sur une autre ardoiseRéponseWrite the new menu on a spare board firstResponse
La brigade écrit et relit le menu entier sur une seconde ardoise. Elle ne remplace l’ancienne qu’une fois la nouvelle terminée. Si la dictée cale, le menu connu reste visible.Préférer des primitives d’écriture atomiques et conserver la destination existante intacte jusqu’à ce que le remplacement soit durable. Borner l’exécution shell, et rendre explicite la sémantique de l’interpréteur lorsque la composition shell est inévitable.The brigade writes and checks the whole menu on a second board. The old one is replaced only after the new one is complete. If dictation jams, the known menu remains visible.Prefer atomic file-write primitives and leave the existing destination untouched until the replacement is durable. Bound shell execution, and state interpreter semantics explicitly wherever shell composition cannot be avoided.
La perte est reproductible et reste sans protection établieÉtat actuelThe loss repeats, and no shipped safeguard is establishedCurrent state
La brigade sait désormais reproduire l’effacement. Au dernier relevé, aucune protection livrée n’était établie, et le risque variait encore selon la cuisine et sa manière de dicter.La cause racine récurrente dispose désormais d’une reproduction destructive. Aucune mitigation livrée au niveau produit n’est établie au cutoff observé, et l’exposition reste dépendante de l’environnement.The brigade can now reproduce the wipeout. At the last check, no shipped safeguard was established, and the risk still varied with the kitchen and its way of dictating.The recurring root cause now has a destructive reproduction attached to it. No shipped product-level mitigation is established as of the observed cutoff, and exposure remains environment-dependent.
Ne décrocher l’ancien menu qu’après avoir fini le nouveauLeçonKeep the old menu up until the new one is completeLesson
Une réécriture sûre peut s’interrompre sans effacer le dernier bon menu. La nouvelle ardoise doit donc être complète avant que l’ancienne quitte le mur.Une écriture de fichier généré n’est sûre que si un échec survenu avant commit laisse l’ancien fichier intact. La propriété à garantir est la survie de la dernière version connue bonne, pas la réussite du chemin nominal.A safe rewrite may stop halfway without erasing the last good menu. The new board must be complete before the old one leaves the wall.A generated-file write is safe only when failure before commit leaves the previous file intact. The property to guarantee is survival of the last known-good version, not success of the nominal path.

