ARGH · CarteMap

Les plans de travailIsolation et concurrenceThe worktopsIsolation and concurrency

Ce qui se mélange lorsque plusieurs commis travaillent au même endroit.Espaces isolés, écritures concurrentes, branches et contamination d’état.What gets mixed up when several cooks work in the same place.Isolated spaces, concurrent writes, branches and state contamination.

Donner à chaque commis un plan de travail identifié et empêcher qu’une préparation, une note ou un ustensile se mélange avec ceux d’un autre.Isoler espaces de travail, branches et états, puis coordonner les écritures concurrentes pour éviter collisions et contamination croisée.Give every cook an identified worktop and prevent one preparation, note, or utensil from mixing with another’s.Isolate workspaces, branches, and state, then coordinate concurrent writes to prevent collisions and cross-contamination.

13 dossiersdossiers

Réutiliser le résumé seulement avec le bon carnetPi-durable conditionne son cache à la tête de conversationReuse the summary only while it belongs to the same ledgerPi-durable binds derived-context reuse to the conversation head

La règle garde les notes déjà lues et ne regarde que les ajouts si le repère du carnet correspond encore. Les pages gardées ne changent pas, et chaque commis reçoit sa propre feuille de lecture.Le commit décrit range et vue dérivée par conversation, avec scan des seules entrées ajoutées si le head marker concorde. Entrées gelées et tableaux de vue propres à chaque read isolent les lectures.The documented rule keeps previously read notes and checks only additions while the ledger marker still matches. Saved pages stay unchanged, and each reader gets a separate reading sheet.Range and derived-view reuse depend on the same conversation head marker. Frozen entries and per-read view arrays preserve separation while only appended entries need scanning.

Une page impeccable peut effacer les commandes des autresECC propose de sérialiser les snapshots contre les writers périmésAn untorn page can still erase another cook's ordersECC proposes serialized snapshots to prevent stale-writer losses

Un commis remplace proprement le carnet par sa copie, sans déchirer une page, mais cette copie oublie les commandes ajoutées par les autres. La réparation proposée lui ferait relire le carnet commun avant de changer quoi que ce soit.Un rename atomique garantit un remplacement sans déchirure, pas la fraîcheur du snapshot. La PR ouverte décrit un ancien handle sql.js capable d'écraser les commits d'un autre writer et propose une relecture sérialisée avant mutation.The cook swaps in a perfectly intact copy of the order book, but it lacks the orders others added meanwhile. The proposed repair starts by rereading the shared book before making the next change.Atomic byte replacement can still publish logically stale state. The open ECC proposal targets sql.js handles that overwrite another writer's committed rows by republishing an older snapshot.

L'ancien responsable peut revenir après que la fiche a changéToolHive ajoute un CAS pour les credentials DCRThe former cook can wake up after the record has changedToolHive adds atomic DCR compare-and-set updates

Un commis vérifie qu'il tient le cahier, puis s'arrête pendant qu'un autre prend sa place. Une nouvelle méthode acceptée compare encore la fiche au moment de l'écriture pour protéger le remplaçant.ToolHive fusionne une primitive DCR compare-and-set contre les écritures d'un détenteur de lease suspendu puis périmé. Vérifier la lease avant l'écriture ne suffit pas si une relève survient entre les deux.A cook checks that the book is theirs, then pauses while someone else takes over. The accepted primitive checks the saved value at writing time so the returning cook cannot overwrite the replacement's entry merely on old authority.The new internal API couples expected-value comparison and credential mutation atomically. It targets the time-of-check/write gap left by a lease holder that resumes after expiry and replacement.

L'ancien commis ne doit plus écrire dans le cahier reprisDeepAgents réserve l'historique local et invalide les writers périmésOnly the current cook may change the shared order bookDeepAgents combines local thread reservation with writer fencing

Deux commis reprennent le même cahier et risquent d'effacer leurs notes respectives. La maison publie une règle qui réserve le cahier et vérifie qui écrit. Nous avons lu la réparation, sans la mettre à l'épreuve.DeepAgents Code 0.1.81 combine un verrou système par thread avec un jeton contrôlé lors des mutations SQLite. La réservation empêche la reprise concurrente ; le jeton rejette les écritures d'un propriétaire remplacé. Fusion et publication sont vérifiées, sans reproduction des tests.A cook takes over an order book, but the former cook still has notes to add. The published safeguard checks who owns the book now. This review examined the change rather than running a busy service with it.The released DeepAgents change protects local checkpoint history with both OS-level reservation and ownership-token checks. This addresses concurrent takeover and stale writers as separate failure paths. Source inspection confirms the mechanism's presence, not independent runtime effectiveness.

Le commis de fond garde les accords de sa propre commandeCodex lie grants et strict-review au TurnContext demandeurThe background cook keeps the permissions of the order that started itCodex binds grants and strict-review state to the requesting TurnContext

Un commis encore occupé garde le carnet d'accords et les contrôles renforcés de sa commande, même si le chef en traite déjà une autre. Les réponses du chef et l'usage des ustensiles consultent ce carnet, pas celui posé le plus récemment au passe.Les cellules de fond retiennent le TurnContext d'origine, avec ses grants et son état strict-review. Réponses d'approbation et consommateurs d'outils lisent le contexte demandeur plutôt que le tour actif plus récent.A cook still working keeps the permission book and extra checks for the order that started the work, while the chef handles another order. Approval answers and utensil use consult that book instead of whichever one most recently reached the pass.Background cells retain their originating TurnContext, including turn grants and strict-review state. Approval responses and tool consumers resolve the requesting context rather than borrowing authority from a newer active turn.

Le deuxième commis reçoit un autre carnet avant d'écrireOh My Pi sépare les sessions de writers concurrentsGive the second cook another notebook before any writingOh My Pi separates competing session writers before writes

Le premier commis qui écrit garde son carnet réservé ; le suivant reçoit un autre carnet avant d'y poser sa plume. Le nouveau porte son propre numéro et celui du carnet d'origine, pour conserver les deux histoires.Une lease OS conserve le fichier au premier writer ; un autre processus bifurque vers un sibling avant écriture. Nouveau sessionID et parentSession explicite empêchent de confondre les deux histoires.The first cook to write keeps the reserved notebook; the next gets a separate one before adding anything. The new book has its own number and records the original, preserving both histories without mixing their pages.The first writer retains the session file through an OS lease. A competing process forks to a sibling before writing, with a fresh sessionID and explicit parentSession lineage.

Réserver le menu pour l'éditer, puis afficher une page entièreGemini CLI sépare exclusion d'édition et remplacement atomiqueReserve the menu while editing, then display a complete pageGemini CLI protects edit calculation and atomic publication separately

Deux commis ne doivent pas préparer chacun leur correction depuis le même vieux menu, puis perdre celle de l'autre. Le carnet reste réservé pendant lecture et correction ; la nouvelle page n'est affichée qu'entièrement prête.Un mutex par chemin résolu couvre read-modify-write pour empêcher deux outils du même process de calculer depuis le même état ancien. Le remplacement atomique protège séparément les lecteurs contre un fichier partiel.Two cooks must not both revise the same old menu and then overwrite each other's changes. One keeps the book reserved through reading and editing, while the replacement page is displayed only when complete.The in-process path mutex serializes reading, edit calculation and writing. Atomic replacement handles another boundary: readers should not observe half-written content, which does not by itself prevent stale edit calculations.

Le retour du premier commis ne raye pas la nouvelle commandeZed lie les réponses send à la génération du tour démarréThe first cook's late reply must not erase the next orderZed fences late send results by the started turn's generation

Quand la nouvelle préparation a commencé, le retour tardif du premier commis ne doit plus effacer son bon ni y ajouter son erreur. La règle annoncée rattache chaque réponse au service qui l'a produite.La préversion protège le nettoyage du prompt et l'affichage d'erreur contre les réponses send périmées après le démarrage effectif du successeur. La génération du tour, pas la simple arrivée d'une réponse, détermine son droit de modifier la vue.Once the next preparation has started, the first cook's late reply must not erase its ticket or attach the old mistake to it. The announced rule checks which service owns that reply.The preview release guards prompt cleanup and error display against stale send responses once the successor turn actually starts. A response's generation determines whether it may mutate the current view.

Deux cuisiniers écrivent sur la même ardoiseUn contrôle sûr en exécution sérielle a corrompu son état en exécution parallèleTwo cooks share a single slateA check that was safe when runs were serial corrupted its state once runs overlapped

Au passe, une seule ardoise sert à noter la table et le plat en cours. Seul, chaque cuisinier retrouve toujours sa ligne. Dès qu’ils écrivent à deux, leurs notes se croisent. Une assiette part alors à la mauvaise table.Un contrôle conservait, pour chaque exécution, les conditions d’environnement et les données du problème dans des champs ordinaires d’une instance unique. Sous exécution parallèle, deux exécutions partageaient cette instance et pouvaient s’écraser mutuellement. Des sorties ont pu être enregistrées sous le mauvais dossier de problème.One slate at the pass records the table and dish being prepared. Alone, each cook always finds his own line. With two writers, their notes cross. A plate then leaves for the wrong table.A check stored per-run environment conditions and problem data in ordinary fields on a single shared instance. Once runs overlapped, two of them shared that instance and could overwrite each other’s values. Outputs could be recorded against the wrong problem directory.

La consigne oubliée commandait le service suivantUn verrou de débogage prévu pour une session a survécu en état global à la machineA repair note stays pinned after closingA debugging lock scoped to one session survived as machine-wide state

Une consigne de dépannage reste punaisée après la fin du service. Elle dit « la réserve du fond » sans nommer la maison. Le lendemain, dans une autre cuisine, ces mots désignent une autre réserve. Ils limitent une brigade qui n’avait rien demandé.gstack conservait dans un état global à la machine la frontière d’édition d’un mode de débogage, exprimée en chemin relatif et jamais effacée. Résolue plus tard depuis un autre répertoire de travail, cette même valeur désignait une autre zone et contraignait des sessions sans lien avec celle qui l’avait posée.A repair note remains pinned after closing time. It names a back shelf but not the kitchen it belongs to. During the next service, those words point elsewhere. They restrict a brigade that never asked for the note.gstack kept a debugging mode’s edit boundary in machine-global state, expressed as a relative path and never cleared. Resolved later from a different working directory, that single stored value designated a different area and constrained sessions unrelated to the one that set it.

Quatre maisons donnent un billot par commisL’isolation du workspace passe de discipline développeur à infrastructure géréeFour houses give each cook a separate benchWorkspace isolation is moving from developer discipline to managed infrastructure

Avec un seul commis, le billot commun suffit. À plusieurs, les préparations se mélangent. Quatre maisons en viennent donc à attribuer un plan de travail à chacun. Elles n’ont pas toutes achevé ce changement.Les worktrees et mécanismes équivalents d’isolation passent de discipline développeur à infrastructure gérée par le runtime, à mesure que l’exécution parallèle devient normale. Codex, gstack, Claude Code et Cline suivent la même trajectoire, à des niveaux de maturité différents.With one cook, a shared bench is enough. With several, preparations collide. Four houses therefore move toward one workbench per cook. They have not all completed that change.Worktrees and equivalent isolated-workspace mechanisms are moving from developer discipline into runtime-managed infrastructure as parallel execution becomes normal. Codex, gstack, Claude Code and Cline follow the same trajectory at different maturity levels.

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.

Plusieurs commis se disputent le même billotL’allocation de worktrees est entrée dans le chemin d’exécution, à titre expérimentalSeveral cooks collide on one shared benchWorktree allocation entered the execution path, as an experimental feature

Avec un seul commis, le billot commun ne gêne personne. À plusieurs, les préparations commencent à se mélanger. La maison essaie donc un billot par commis. Cette organisation n’est pas encore utilisée partout.L’allocation gérée de worktrees est entrée dans le chemin d’exécution des sessions CLI. L’isolation du workspace devient ainsi une capacité de première classe du harnais plutôt qu’une convention appliquée par l’utilisateur. La fonctionnalité est explicitement expérimentale ; rien n’établit qu’elle soit devenue le comportement par défaut.One cook has no trouble with a shared bench. With several cooks, preparations begin to collide. The house is therefore trying one bench per cook. Not every service uses it yet.Managed worktree allocation moved into the execution path of CLI sessions. Workspace isolation thereby becomes a harness capability rather than a convention users are expected to apply themselves. The feature is explicitly experimental, and nothing establishes it as the default.