ARGH

MotifsPatterns

Les problèmes qui reviennent sont réunis en dix familles faciles à parcourir.Les mécanismes récurrents sont répartis dans dix familles transversales explicites.Recurring problems are gathered into ten families that are easy to browse.Recurring mechanisms are assigned to ten explicit cross-cutting families.

83 entréesentries

Les consignes et les décisionsInstructions et autoritéInstructions and decisionsInstructions and authority

Qui donne la consigne, qui peut trancher et jusqu’où va son pouvoir.Portée des instructions, approbations, responsabilités et autorité de contrôle.Who gives the instruction, who may decide and where that power ends.Scope of instructions, approvals, responsibilities and control authority.

8 fiches8 entrées8 cards8 entries

Le portier retenait la fermeture et lançait le serviceUn contrôle de terminaison a répondu à une question d’autorisationThe porter held closing time and started serviceA termination control answered an authorization question

Un portier devait empêcher la brigade de fermer avant la fin du service. Un client demandait seulement le menu écrit. Pourtant, la consigne du portier pouvait aussi être comprise comme l’ordre de lancer les plats.L’autorité d’un contrôle doit rester limitée aux décisions pour lesquelles il a été conçu. Chez Claude Code, un stop hook destiné à forcer la persistance pouvait être interprété comme une autorité pour continuer l’exécution alors que l’utilisateur ne demandait qu’un plan. Le contrôle influençait correctement la possibilité d’arrêter ; son instruction débordait sur l’interprétation de ce que le modèle avait le droit d’entreprendre.A porter was meant to stop the brigade closing before service was finished. A guest asked only for the menu in writing. Yet the porter’s instruction could also be taken as an order to start cooking.A control’s authority must stay limited to the decisions it was designed to govern. In Claude Code a persistence-oriented stop hook could be read as authority to continue execution when the user had asked only for a plan. The control correctly influenced whether work could stop; its instruction leaked into the model’s reading of what it was allowed to undertake.

Deux consignes se contredisaient devant le même commisDes fichiers d’instructions au même nom ne portent pas la même précédenceTwo notes disagreed in front of the same cookInstruction files that share a name do not share a precedence rule

Une consigne était affichée au mur et une autre posée sur la table du chef de partie. Elles se contredisaient. Leur papier se ressemblait, mais le commis ne suivait pas toujours la même quand il changeait de maison.Les fichiers d’instructions projet passent de conventions propres à chaque produit vers une interopérabilité croissante, et cette compatibilité porte sur les noms et le format. Les règles de précédence et le modèle de confiance restent, eux, les différences critiques. Claude Code, Codex et Gemini CLI lisent des fichiers de but identique sans garantir la même décision quand deux sources se contredisent.One note was pinned on the wall and another sat on the section chief’s table. They contradicted each other. Their paper looked alike, but the cook did not always follow the same one in another house.Project instruction files are moving from per-product conventions toward growing interoperability, and that compatibility covers names and format. Precedence rules and the trust model remain the critical differences. Claude Code, Codex and Gemini CLI read files of identical purpose without guaranteeing the same decision when two sources contradict each other.

La consigne était devenue une main qui retenait l’assietteLa politique s’applique au point d’action, plus en amontThe rule had become a hand holding the platePolicy applied at the point of action, not upstream

Longtemps, la consigne était affichée au tableau et l’on espérait qu’elle serait lue. Puis une main s’est tenue au passe pour retenir l’assiette avant son départ. Le tableau expliquait ; la main décidait.Un hook d’enforcement applique une politique au moment de l’exécution plutôt que de dépendre d’une instruction préalable. Dans les principaux harnais, les hooks ont convergé depuis de simples notifications de lifecycle vers le blocage, l’injection de contexte, la télémétrie et le contrôle de reprise. Le lifecycle de Goose trace cette trajectoire : callbacks non bloquants, puis blocage explicite PreToolUse, puis comportement configurable quand le hook lui-même échoue.For years, a rule went on the board and people hoped it was read. Then a hand stood at the pass to hold a plate before it left. The board explained; the hand decided.An enforcement hook applies policy at execution time instead of relying on a prior instruction. Across the major harnesses, hooks have converged from plain lifecycle notifications toward blocking, context injection, telemetry and resumption control. Goose's hook lifecycle traces that path: non-blocking callbacks, then explicit PreToolUse blocking, then configurable behavior when the hook itself fails.

Le commis a envoyé l’assiette sans réponse du chefUne question adressée à un humain se résout en poursuite autonomeThe commis sent the plate with no answer from the chefA question meant for a human resolves into autonomous continuation

Le commis demandait au chef s’il pouvait envoyer l’assiette. Le chef ne répondait pas. Après un moment, le commis tranchait seul et l’assiette partait.Une human gate suspend l’exécution jusqu’à une décision humaine explicite. Deux systèmes d’agents indépendants — Claude Code et Codex — ont exposé la même forme dangereuse : la question destinée à l’humain portait un délai, et son expiration se résolvait en poursuite autonome de l’exécution. Le défaut n’est pas l’existence du délai, mais ce que le système conclut de son expiration.The commis asked the chef whether the plate could leave. The chef did not answer. After a while, the commis decided alone and the plate went out.A human gate suspends execution until an explicit human decision arrives. Two independent agent systems — Claude Code and Codex — exposed the same dangerous shape: the question posed to the human carried a deadline, and its expiry resolved into autonomous continuation. The defect is not that a deadline exists, but what the system concludes from it.

Le contrôle répondait sans posséder le plat qu’il arrêtaitUn contrôle qui répond sans détenir le travail qu’il prétend arrêterThe control answered without owning the plate it stoppedA control that answers without holding the work it claims to stop

Dans trois incidents, personne ne détenait vraiment le plat ou la ressource au moment décisif. Arrêter l’attente ne coupait pas toujours le feu déjà lancé. Un livreur distant pouvait modifier le passe sans que la maison le retire. Une adresse commune pouvait envoyer l’assiette vers la dernière table, sans responsable nommé.Trois incidents distincts exposent la même absence : aucune identité nommée ne détenait la ressource ou le travail au moment décisif. Dans LangGraph, un timeout à la frontière de l’appelant ne terminait pas nécessairement le travail sous-jacent, laissant une tentative de remplacement recouvrir l’exécution d’origine. Dans l’écosystème MCP, un état de connexion global et mutable permettait à une session ultérieure de remplacer la connexion courante, rendant possible une livraison croisée. Dans Claude Code, des connecteurs distants pouvaient apparaître dans le CLI local, dupliquer des serveurs configurés localement et contourner la sémantique de suppression locale.Across three incidents, nobody truly held the plate or resource at the deciding moment. Stopping the wait did not always put out the fire already started. A distant delivery could alter the pass without the house removing it. One shared address could send a plate to the latest table, with no named owner.Three separate incidents expose one missing element: no named identity held the resource or the work at the moment that mattered. In LangGraph a caller-side timeout did not necessarily terminate the underlying work, so a replacement attempt could overlap the original run. In the MCP ecosystem, shared mutable connection state let a later session displace the currently global connection, making cross-session delivery possible. In Claude Code, remote connectors could surface in the local CLI, duplicate locally configured servers and bypass the local deletion semantics users expected.

La note d’hier ferme la réserve d’une autre cuisineUn contrôle destiné à une seule session a survécu en état global à la machineYesterday’s note closes another kitchen’s pantryA control meant for one session survived as machine-global state

Pendant un dépannage, un chef écrit : « ne toucher qu’à la réserve du fond ». Le billet ne porte ni adresse complète, ni signature, ni heure de fin. Le lendemain, une autre brigade le lit dans un autre bâtiment et bloque sa propre réserve.gstack conservait dans un état global à la machine la frontière d’édition d’un mode de débogage, écrite en chemin relatif et jamais effacée. Le hook chargé de l’appliquer résolvait cette valeur contre le répertoire de travail courant de chaque invocation : un dépôt ou un worktree ultérieur héritait donc d’une frontière effective différente à partir du même état périmé. L’effet inter-session est reproduit ; aucun correctif fusionné, aucune version livrée, aucune récupération terrain n’est établie.During a repair, a chef writes, “touch only the back pantry.” The note has no full address, signature, or end time. The next day, another brigade reads it in another building and blocks its own pantry.gstack kept the edit boundary of a debug mode in machine-global state, written as a relative path and never cleared. The hook enforcing it resolved that value against each invocation’s current working directory, so a later repository or worktree inherited a different effective boundary from the same stale state. The cross-session effect is reproduced; no merged fix, no shipped release and no field recovery is established.

Le chef signe le petit geste, la brigade en fait un grandL’accord portait sur le segment affiché, pas sur l’autorité réellement accordéeThe chef signs for a small move, and the brigade makes a large oneConsent covered the displayed segment, not the authority actually granted

Le commis demande seulement l’autorisation d’entrer dans la chambre froide. Le chef accepte cette phrase anodine. Pourtant, la même commande contient ensuite une opération bien plus lourde, jamais annoncée avant la signature.Sur des commandes shell composées, le prompt de permission de Claude Code pouvait mettre en avant un changement de répertoire anodin tandis que l’opération Git significative restait masquée derrière. L’utilisateur validait donc un libellé sans rapport avec l’autorité réellement accordée. Un correctif structurel avait déjà amélioré la segmentation et la priorité des règles de refus ; le mauvais sous-ordre restait affiché ensuite.The cook asks only to enter the cold room. The chef approves that harmless sentence. Yet the same order later contains a much heavier operation that was never announced before signature.On composed shell commands, the Claude Code permission prompt could foreground a harmless directory change while the significant Git operation stayed hidden behind it. The user therefore approved a label unrelated to the authority actually granted. A structural fix had already improved segmentation and deny-rule priority; the wrong sub-command was still being displayed afterwards.

La vieille consigne bloque une nouvelle brigadeUn contrôle reste actif après la disparition de la condition qui fondait son autoritéAn old instruction blocks a new brigadeA control stays active after the condition that grounded its authority is gone

Pendant une réparation, le chef interdit provisoirement un coin de la réserve. Le service se termine mais le billet reste au mur. Relu le lendemain dans une autre cuisine, il vise un autre coin et arrête des commis étrangers à la panne.Un contrôle périmé reste en vigueur après la fin de la condition, de la session ou de la version qui fondait son autorité. Chez gstack, un verrou de périmètre de débogage écrivait une frontière d’édition en chemin relatif dans un état global à la machine, sans jamais l’effacer. Résolue plus tard depuis un autre répertoire de travail, la même valeur désignait une autre zone et contraignait des sessions sans lien avec celle qui l’avait posée.During a repair, the chef temporarily forbids one corner of the pantry. Service ends but the note stays on the wall. Read the next day in another kitchen, it points elsewhere and stops cooks unrelated to the fault.A stale control remains in force after the condition, session or version that grounded its authority has ended. At gstack a debugging scope lock wrote an edit boundary as a relative path into machine-wide persistent state and never cleared it. Resolved later against a different working directory, that same value designated another area and constrained sessions unrelated to the one that set it.

La réserve et les carnetsÉtat, mémoire et repriseThe pantry and notebooksState, memory and recovery

Ce qui est gardé, oublié ou mal repris d’un service à l’autre.Persistance, checkpoints, contexte, restauration et cohérence de l’état.What is kept, forgotten or poorly resumed from one service to the next.Persistence, checkpoints, context, restoration and state consistency.

6 fiches6 entrées6 cards6 entries

Le carnet est revenu en arrière, pas les casserolesRejouer la conversation ne restaure pas l’état d’exécution qu’elle supposeThe book went back, but the pans did notReplaying the conversation does not restore the execution state it assumes

Le carnet a été rouvert à une ancienne page, comme si la soirée recommençait là. Les casseroles, elles, gardaient la cuisson déjà faite. Le cuisinier reprenait donc une vieille commande au-dessus d’un plat qui avait continué sans lui.Un checkpoint capture l’état nécessaire à une reprise cohérente de l’exécution. Chez Codex, un rewind restaurait l’historique conversationnel en laissant les modifications de fichiers en place, produisant un état divisé entre ce dont l’agent se souvenait et ce que contenait le workspace. Aucun correctif fusionné n’est établi sur ce point.The book reopened at an earlier page, as if the evening started there again. The pans still held the cooking already done. The cook was therefore picking up an old order over a dish that had carried on without him.A checkpoint captures the state required for a coherent resume of execution. At Codex a rewind restored conversational history while leaving file modifications in place, producing a split between what the agent remembered and what the workspace held. No merged fix is established on this point.

Le récit tenait, la commande due avait disparuLe résumé a conservé le récit et perdu l’obligation en coursThe story held, but the order still owed had goneThe summary kept the story and dropped the obligation in force

Le carnet était devenu trop épais, alors la soirée a été recopiée en une page. La page racontait très bien les repas et les clients. Elle avait pourtant perdu le plat encore attendu et la façon de savoir qu’il serait prêt.La compaction réduit le contexte en remplaçant l’historique par un résumé. Chez OpenClaw et Codex, ce résumé conservait des fragments d’historique tout en perdant l’obligation active : ce qui restait dû et ce qui comptait comme terminé. Le modèle repris restait cohérent sur le passé tout en dérivant de la mission en cours.The book had grown too thick, so the evening was copied onto one page. That page told the meals and guests well. Yet it lost the plate still awaited and how anyone would know it was ready.Compaction shrinks context by replacing history with a summary. At OpenClaw and Codex that summary kept fragments of history while losing the active obligation: what was still owed and what counted as finished. The resumed model stayed coherent about the past while drifting from the mission in force.

La note d’hier commandait encore la brigade du matinUn garde limité à une session devenu contrainte pour les suivantesLast night’s note still commanded the morning brigadeA guard scoped to one session became a constraint on the next ones

Un soir, une brigade a punaisé une note : « ne touchez qu’à cette étagère ». Après le service, elle est restée au mur. Le lendemain, une autre brigade l’a lue et l’étagère ne désignait déjà plus la même chose.L’état inter-session devient dangereux lorsqu’une donnée supposée locale persiste ou s’applique au-delà de la session qui l’a créée. Sur gstack, un verrou de périmètre de débogage stockait une frontière relative dans un état global à la machine sans la supprimer ; la même valeur persistée changeait de sens avec le répertoire de travail suivant et contraignait des sessions ultérieures sans rapport.One evening, a brigade pinned up a note: touch only that shelf. After service, it stayed on the wall. Next morning, another brigade read it and the shelf already meant something else.Cross-session state turns hazardous when data assumed local outlives or reaches past the session that created it. In gstack a debugging scope lock wrote a relative boundary into machine-global state and never removed it, so one persisted value changed meaning with the next working directory and constrained later, unrelated sessions.

Le carnet restait, mais la commande due s’effaçaitCe qui reste dû ne survit pas dans l’historiqueThe notebook remained while the due order fadedWhat is still owed does not survive inside the history

Après avoir allégé le carnet, on pouvait encore lire des morceaux du service. L’objectif encore dû, la promesse faite et le signe de fin, eux, avaient disparu. Ce qui survivait racontait le passé sans pouvoir guider la suite du travail.L’état de mission regroupe les objectifs encore actifs, les engagements pris et la définition de « terminé » ; il est distinct de l’historique conversationnel. Chez OpenClaw et Codex, la compaction du contexte pouvait conserver des fragments d’historique tout en perdant l’obligation active. Ce qui subsistait n’était donc pas ce qui pilotait la suite du travail.After the notebook was thinned, fragments of the service could still be read. The due aim, the promise made, and the sign of completion had disappeared. What remained told the past without guiding the next work.Mission state is the set of still-active objectives, standing commitments and the working definition of done; it is not the conversation history. In OpenClaw and Codex, context compaction could retain fragments of history while dropping the active obligation. What survived was therefore not what should have driven the rest of the work.

La réserve est pleine, mais le commis tient une feuille videL’état chargé à l’exécution diffère de l’état valide sur disqueThe pantry is full, but the cook holds a blank sheetState loaded at execution differs from state valid on disk

Les provisions sont correctement rangées, mais le commis copie sa liste quelques instants avant leur arrivée. Comme la feuille n’est jamais mise à jour, il travaille toute la soirée comme si la réserve était vide.L’état visible à l’exécution est ce qu’un système a réellement chargé et exposé, par opposition à ce qui est déclaré et valide sur disque. Chez Claude Code, un service de langage fourni par plugin s’est initialisé avant la fin de la découverte des plugins, figeant une liste vide malgré des fichiers corrects. Les plugins ont été chargés quelques millisecondes plus tard, sans reprise rétroactive de la surface attendue : la validation statique passait, la surface de contrôle n’existait pas.The supplies are correctly stored, but the cook copies his list moments before they arrive. Because the sheet is never updated, he works all evening as if the pantry were empty.Runtime-visible state is what a system has actually loaded and exposed, as opposed to what is declared and valid on disk. At Claude Code a plugin-provided language service initialized before plugin discovery completed, freezing an empty list although the files were correct. Plugins loaded milliseconds later with no retroactive pickup of the expected surface: static validation passed, the control surface was not there.

Le bon recule d’une ligne, mais la cuisson reste avancéeUne même tâche vit dans deux historiques que l’on restaure séparémentThe ticket moves back, but the cooking stays aheadOne task lives in two histories that get restored separately

Le chef remet le carnet à une page précédente, comme si les dernières consignes n’avaient jamais existé. Pourtant, le plat conserve les découpes et cuissons déjà faites. Le cahier et le fourneau racontent alors deux soirées différentes, chacune cohérente seule.Un state split apparaît quand plusieurs composantes d’un même état logique évoluent ou sont restaurées indépendamment et cessent d’être cohérentes. Chez Codex, un rewind pouvait restaurer l’historique conversationnel en laissant en place les modifications de fichiers, produisant une divergence entre ce dont l’agent se souvient et ce que contient le workspace. Aucune des deux moitiés n’est fausse prise isolément.The chef returns the book to an earlier page as though later orders never existed. Yet the dish keeps every cut and cooking step already made. The book and stove now tell two different evenings, each coherent on its own.A state split appears when components of one logical state evolve or are restored independently and stop agreeing. At Codex a rewind could restore conversational history while leaving file modifications in place, producing a divergence between what the agent remembers and what the workspace holds. Neither half is wrong taken on its own.

Les plans de travailConcurrence et isolationThe worktopsConcurrency and isolation

Ce qui se mélange quand plusieurs commis travaillent en même temps.Exécutions parallèles, espaces isolés, routage et contamination d’état.What gets mixed up when several cooks work at the same time.Parallel executions, isolated workspaces, routing and state contamination.

6 fiches6 entrées6 cards6 entries

Deux cuisiniers écrivaient sur la même ardoiseDes contrôles écrits pour une exécution unique cèdent dès que deux exécutions se recouvrentTwo cooks were writing on the same slateControls written for one run at a time break once two runs overlap

La cuisine avait été organisée pour une seule paire de mains. Deux cuisiniers y ont partagé le même plan, la même ardoise et le même tiroir de clés. Un plat correct a alors pu arriver à la mauvaise table sans qu’aucun cri n’alerte la salle.Un contrôle rangeait les conditions d’environnement et les données de problème de chaque exécution dans des champs ordinaires d’une instance unique ; une fois les exécutions parallèles, deux d’entre elles pouvaient s’écraser et un résultat être enregistré sous le mauvais dossier de problème. Le même motif se retrouve sur un stockage d’identifiants partagé et sur un checkout unique utilisé par plusieurs exécutions. La concurrence ne crée pas ces défauts : elle rend visible une propriété d’état qui n’avait jamais été déclarée.The kitchen had been arranged for one pair of hands. Two cooks shared the same bench, slate, and key drawer. A correct dish could then reach the wrong table without a single shout in the room.One control kept per-run environment conditions and problem data in ordinary fields of a single shared instance; once runs overlapped, two of them could overwrite each other and a result could be filed under the wrong problem directory. The same shape turns up in a shared credential store and in one checkout used by several runs at once. Parallelism does not introduce these defects; it exposes ownership of state that was never declared.

Le dernier nom effaçait l’adresse de toutes les tablesUne connexion partagée que le dernier arrivé remplaceThe latest name overwrote every table’s addressA shared connection the latest arrival replaces

Une seule adresse de livraison restait au tableau et chaque nouvelle table pouvait y écrire la sienne. Une assiette destinée à l’un pouvait donc suivre le dernier nom inscrit. Aucune mauvaise livraison n’a été constatée, mais le mécanisme la rendait possible.Dans l’écosystème MCP, un état de connexion mutable et partagé permettait à une session ultérieure de remplacer la connexion globalement courante. Un événement destiné à un utilisateur pouvait alors suivre celui qui avait écrit en dernier : la livraison croisée entre sessions est une possibilité ouverte par ce mécanisme, pas un incident constaté. L’isolation multi-utilisateur est précisément la séparation que ce partage supprime — identités, connexions, autorisations et états concurrents.One delivery address stayed on the board, and each new table could write its own there. A plate meant for one guest could therefore follow the latest name written. No wrong delivery has been observed, but the arrangement made one possible.In the MCP ecosystem, mutable shared connection state let a later session replace the globally current connection. An event meant for one user could then follow whoever wrote last: cross-delivery between sessions is a possibility this mechanism opens, not a reported incident. Multi-user isolation is exactly the separation such sharing removes — identities, connections, authorizations and concurrent state.

Au passe — Choisir qui prend le plat, et avec quoiL’envoi d’une tâche à un exécutant est devenu un sous-système à part entièreAt the pass — Picking the cook, the pans, and his limitsHanding a task to an executor has become a subsystem of its own

Au service, annoncer un plat à un commis ne suffit plus. Il faut choisir qui le prend, avec quel matériel, ce qu’il a le droit de faire et comment il rendra compte. Dans six maisons, ce tri est devenu un poste en soi.Le routage sélectionne l’exécutant, le modèle ou le chemin approprié et transmet les contraintes nécessaires à l’exécution. Les subagents ne sont plus de simples prompts imbriqués : routage, handoff, choix du modèle, visibilité, audit, messagerie et sémantique de retour forment un sous-système distinct du harnais. La convergence est rapide chez Claude Code, Codex, Gemini CLI, Goose, Cline et OpenHands, avec de grandes différences de sémantique.During service, calling a dish out to a cook is no longer enough. Someone has to pick who takes it, on which equipment, what that cook may do, and how the result comes back. In six houses, that sorting has become a station of its own.Routing selects the appropriate executor, model or path and carries the constraints execution needs. Subagents are no longer nested prompts: routing, handoff, model choice, visibility, audit, messaging and return semantics form a distinct harness subsystem. Convergence is rapid across Claude Code, Codex, Gemini CLI, Goose, Cline and OpenHands, with wide semantic differences.

Deux commandes se mélangent sur un seul billotDeux exécutions concurrentes partagent un état écrit pour une seuleTwo orders get mixed on one shared benchTwo concurrent runs share state that was written for one

Toutes les commandes utilisent le même billot. Avec un seul commis, chaque ingrédient lui appartient forcément. Dès qu’ils travaillent à deux, l’un déplace la préparation de l’autre et une assiette part vers la mauvaise table.L’isolation d’état empêche qu’une exécution lise ou modifie l’état privé d’une autre sans contrat explicite. Chez SWE-agent, un contrôle conservait les conditions d’environnement et les données de problème de chaque exécution dans des champs ordinaires d’une instance unique. En exécution parallèle, deux exécutions pouvaient s’écraser mutuellement, et des sorties être enregistrées sous le mauvais dossier de problème.Every order uses the same bench. With one cook, every ingredient must belong to him. Once two cooks work together, one moves the other’s preparation and a plate leaves for the wrong table.State isolation prevents one run from reading or mutating another run’s private state without an explicit contract. At SWE-agent, a control kept each run’s environment conditions and problem data in ordinary fields of a single instance. Under parallel execution two runs could overwrite one another, and outputs could be recorded under the wrong problem folder.

Au passe — Un commis travaille au fond, hors de vueLa délégation est devenue un sous-système à part entière, avec sa propre identité d’exécutionAt the pass — Work handed to a cook nobody watchesDelegation has become a subsystem of its own, with its own execution identity

Le chef ne prépare plus toujours le plat lui-même : il confie la commande à un commis et attend son retour. Dans six grandes maisons, cette délégation est devenue un poste complet. Il faut savoir qui part, avec quels outils, sous quelle responsabilité et ce qu’il rapporte.Les subagents ne sont plus des prompts imbriqués : routage, handoff, choix du modèle, visibilité, audit, messagerie et sémantique de retour forment un sous-système distinct du harnais. La convergence est rapide chez Claude Code, Codex, Gemini CLI, Goose, Cline et OpenHands, avec de grandes différences dans les sémantiques de routage et d’audit. La délégation crée un second graphe d’exécution dont l’identité, les permissions et les résultats doivent être corrélés au parent.The chef no longer prepares every dish alone; an order is handed to another cook and the result comes back. Across six large houses, that handover has become a full station. The brigade must know who leaves, with which tools, under whose responsibility, and what returns.Subagents are no longer nested prompts: routing, handoff, model choice, visibility, audit, messaging and return semantics form a distinct subsystem of the harness. Convergence is fast across Claude Code, Codex, Gemini CLI, Goose, Cline and OpenHands, with wide differences in routing and audit semantics. Delegation creates a second execution graph whose identity, permissions and results must be correlated back to the parent.

Au passe — Un billot par commis, fourni par la maisonL’isolation du workspace passe de convention externe à propriété du runtimeAt the pass — Separate benches, handed out by the kitchen itselfWorkspace isolation moves from external convention to runtime property

Avec un seul commis, le billot commun suffit. Dès que plusieurs travaillent en même temps, leurs préparations se mélangent. Quatre maisons convergent donc vers un plan de travail séparé par commis, avec des maturités différentes. Dans l’une d’elles, la maison attribue elle-même la place ; cette pratique reste expérimentale et n’est pas établie comme règle habituelle.Un worktree est une copie de travail distincte qui partage l’historique du dépôt tout en isolant les modifications en cours. Codex, gstack, Claude Code et Cline convergent vers une isolation gérée par le runtime plutôt qu’appliquée à la main, à des niveaux de maturité différents. Chez Codex, l’allocation gérée est entrée dans le chemin d’exécution des sessions CLI sous un statut explicitement expérimental ; rien n’établit qu’elle soit devenue le comportement par défaut.With one cook, a shared block is enough. Once several work at the same time, their preparations collide. Four houses therefore converge on a separate bench for each cook, at different levels of maturity. In one house, the kitchen assigns the place itself; that practice remains experimental and is not established as the usual rule.A worktree is a distinct working copy that shares repository history while isolating in-flight modifications. Codex, gstack, Claude Code and Cline converge on runtime-managed isolation rather than hand-applied discipline, at differing maturity levels. At Codex, managed allocation entered the CLI session execution path under an explicitly experimental status; nothing establishes that it became the default behavior.

Les contrôles et les preuvesValidation et preuvesChecks and proofValidation and evidence

Comment savoir que le plat a vraiment été préparé et vérifié.Critères d’acceptation, reçus d’exécution, observabilité et faux succès.How to know that the dish was truly prepared and checked.Acceptance criteria, execution receipts, observability and false success.

11 fiches11 entrées11 cards11 entries

L’enseigne restait allumée, la brigade était partieUne source admise sans ses limites rend un verdict fauxThe sign was lit after the brigade had leftA source admitted without its limits returns a false verdict

Une enseigne restait allumée et la porte s’ouvrait encore. Pourtant, la brigade avait annoncé qu’elle ne reprendrait plus le service. Qui regardait seulement la rue croyait que la cuisine travaillait toujours.Une source n’entre dans le périmètre de veille qu’une fois identifiée, comprise et bornée : ce que ses métadonnées encodent, et ce qu’elles n’encodent pas. Continue en donne le cas limite : le projet est explicitement déclaré non maintenu activement alors que son repository reste non archivé. Un contrôle limité au flag archive y conclut donc à tort que le projet est vivant.The sign was still lit and the door still opened. Yet the brigade had announced that it would not work another service. Anyone looking only from the street would think the kitchen was still running.A source enters the watch perimeter only once it is identified, understood and bounded: what its metadata encodes, and what it leaves out. Continue is the limiting case: the project is explicitly declared no longer actively maintained while its repository stays unarchived. A check limited to the archive flag therefore returns a wrong live verdict.

Le billet devait dire s’il venait du coup d’œil ou d’une suppositionL’affirmation et ce qui l’établit ne voyagent pas ensembleThe note needed to say whether it came from sight or suppositionA claim and what establishes it do not travel together

Au passe, un commis annonçait une assiette avec le même aplomb, qu’il l’ait vue, déduite ou seulement imaginée. Une consigne réécrite demande désormais de le dire et de faire les contrôles à portée de main. La consigne elle-même est établie ; son effet sur le service ne l’est pas.La frontière de preuve sépare une affirmation, une inférence ou une intention de l’évidence qui permet de la tenir pour vérifiée. Chez pstack, une révision de consigne impose d’accompagner chaque affirmation de sa preuve ou d’une qualification explicite — mesuré, déduit, supposé — et laisse à l’agent les contrôles qu’il peut exécuter lui-même. La modification est vérifiable dans les sources ; son effet sur le comportement réel n’a pas été mesuré.At the pass, a cook announced a plate with the same confidence whether it was seen, inferred, or merely imagined. A rewritten notice now asks for that distinction and for checks within reach. The notice itself is established; its effect on service is not.The evidence boundary separates a claim, an inference or an intention from the evidence that lets it count as verified. At pstack a revised instruction requires every claim to carry its evidence or an explicit qualification — measured, inferred, assumed — and keeps with the agent the checks it can run itself. The revision is verifiable in the sources; its effect on actual behavior was not measured.

Le carnet donnait un résultat sans geste derrièreUn résultat mis en forme n’atteste pas sa propre exécutionThe book gave a result with no act behind itA formatted result does not attest its own execution

Le carnet portait un plat, une heure et un poste. Il ne disait pas quoi écrire lorsqu’aucun ustensile n’était disponible. Une réponse bien formée pouvait donc exister sans qu’aucun geste n’ait eu lieu.Un texte ayant la forme d’un résultat peut subsister alors que la commande correspondante n’a pas été exécutée. Chez gstack, un workflow de contrôle de santé spécifiait des lignes de résultats structurées sans définir le cas d’exécution indisponible. Chez Claude Code, une version livrée indique qu’une surface de question latérale pouvait inventer des appels d’outils et leurs sorties, et marque désormais ce texte comme non exécuté.The book listed a dish, time, and station. It did not say what to write when no utensil was available. A well-formed answer could therefore exist without any act taking place.Text shaped like a result can survive although the corresponding command never ran. At gstack a health-check workflow specified structured result rows without defining the unavailable-execution case. At Claude Code a shipped version states that a side-question surface could invent tool calls and their outputs, and now marks that text as not executed.

La recette corrigée n’était pas celle lue au pianoUn correctif appliqué qui laisse la panne en placeThe corrected recipe was not the one read at the stoveAn applied correction that leaves the failure in place

Une recette a été corrigée dans le classeur du bureau. La fiche au-dessus du piano, celle que le commis lisait vraiment, est restée ancienne. Tout le monde s’est cru tranquille et le même plat est reparti faux.Un failed fix est un correctif appliqué qui ne ferme pas le mécanisme causal, ou qui laisse subsister une variante de la panne. Un seul dossier de ce corpus l’atteste : sur Archon, un artefact de contrôle pouvait être corrigé dans le repository source alors que la copie installée, celle réellement utilisée par l’agent, restait obsolète.A recipe was corrected in the office binder. The card above the stove, the one the cook actually read, remained old. Everyone felt settled, and the same wrong plate went out again.A failed fix is an applied correction that does not close the causal mechanism, or that leaves a variant of the failure intact. A single dossier in this corpus documents it: in Archon a control artifact could be corrected in the source repository while the installed copy actually used by the agent stayed stale.

Le tableau était barré alors que la table attendait encoreUn succès apparent produit par un signal qui ne mesure pas le résultatThe board was crossed off while the table still waitedApparent success from a signal that measures the wrong outcome

En fin de service, chaque ligne du tableau était barrée. Pourtant, une table n’avait rien reçu. Le tableau savait seulement ce qui quittait la cuisine, pas ce qui arrivait devant le client.Un faux vert est un succès apparent produit par un signal ou un test qui ne couvre pas le comportement réellement attendu. Cinq dossiers de ce corpus l’exposent, sur OpenClaw, Aider, Hermes et gstack. Sur OpenClaw, la complétion interne pouvait être vraie alors que le résultat n’atteignait jamais l’utilisateur, ce qui a révélé generated, persisted, queued, sent et received comme états distincts.At the end of service, every line on the board was crossed off. Yet one table had received nothing. The board knew only what left the kitchen, not what reached the guest.A false green is apparent success produced by a signal or test that does not cover the behavior actually required. Five dossiers in this corpus exhibit it, across OpenClaw, Aider, Hermes and gstack. In OpenClaw internal completion could be true while the result never reached the user, exposing generated, persisted, queued, sent and received as distinct states.

Un carnet de réprimandes a révélé un changement de serviceUn contrôle d’enforcement devient un instrument de mesureA reprimand ledger revealed a change in serviceAn enforcement check becomes a measuring instrument

Une phrase interdite au passe recevait une croix à chaque apparition. Le carnet est resté presque vide pendant des mois. Puis les croix sont revenues en paquet, sans que la consigne ait bougé.Un contrôle déterministe installé pour bloquer enregistre aussi, à chaque déclenchement, une observation datée. Sur Claude Code, un stop-phrase guard construit côté utilisateur a accumulé brusquement un groupe de violations après un changement de comportement, alors que la règle imposée n’avait pas bougé. Le hook d’enforcement local a fonctionné comme canari quantitatif de cette dérive.A forbidden phrase at the pass received a mark every time it appeared. The ledger stayed nearly empty for months. Then the marks returned in a cluster although the rule had not changed.A deterministic check installed to block also records a timestamped observation on every activation. In Claude Code, a user-built stop-phrase guard abruptly accumulated a cluster of violations following a behavioral change, while the enforced rule itself stayed fixed. The local enforcement hook worked as a quantitative canary for that drift.

Le passe montrait la décision prise sur chaque assietteUn garde-fou dont la décision est inspectableThe pass showed the decision made on each plateA guardrail whose decision can be inspected

Chaque contrôle du passe laissait une marque lisible : assiette passée ou retenue. On pouvait ainsi lire l’état du service et ses changements sans deviner ce qui s’était produit derrière la porte. La décision du garde devenait visible au lieu d’être seulement supposée.L’observabilité est la capacité à lire l’état et les transitions nécessaires au diagnostic d’un comportement d’exécution. OpenHands en donne un cas net : les événements d’exécution de hooks, avec leur résultat success ou blocked, sont exposés par ses surfaces runtime et UI/API. Le comportement des garde-fous y est inspectable au lieu de rester déductible.Each check at the pass left a readable mark: plate sent or held. The state of service and its changes could then be read without guessing what happened behind the door. The guard’s decision became visible rather than merely assumed.Observability is the ability to read the state and transitions needed to diagnose runtime behavior. OpenHands is a clear case: hook execution events, carrying a success or blocked result, are exposed through its runtime and UI/API surfaces. Guardrail behavior there is inspectable instead of being something you infer.

Au passe — Goûter le bol ne dit rien de l’assietteUn vert mesure la couture traversée, pas le chemin dont dépend l’utilisateurAt the pass — The taster stands where nothing goes wrongA green measures the seam it crossed, not the path the user depends on

Dans une cuisine, le goûteur vérifie le bol du commis, puis une consigne se perd avant que l’assiette sorte. Dans une autre, le garde lit sa fiche au lieu de regarder la place exacte où un plat peut être écrasé. Les deux carnets restent verts parce que le contrôle se tient avant ou à côté de la vraie panne.Un test établit une propriété au point de la chaîne qu’il traverse, et rien au-delà. Chez Hermes, une assertion au niveau helper validait la construction des arguments pendant que le chemin de lancement réel perdait ensuite l’option importante. Chez Cline, un garde d’ajout consultait un état incomplet au lieu de la destination, au point même où le remplacement pouvait se produire. Dans les deux cas, le vert était exact et sans rapport avec la défaillance vécue.In one kitchen, the taster checks the prep bowl before an instruction is lost on the way to the pass. In another, the guard reads a sheet instead of looking at the exact spot where a dish may be overwritten. Both books stay green because the check stands before or beside the real failure.A test proves a property at the seam it crosses and nothing past it. In Hermes a helper-level assertion covered argument construction while the real launch path then dropped the option that mattered. In Cline an add guard consulted incomplete state rather than the destination itself, at the exact point where replacement could occur. The green was accurate in both cases, and unrelated to the failure users met.

Au passe — Le carnet décrit un plat jamais cuisinéUn texte ayant la forme d’un résultat survit à l’exécution qui n’a pas eu lieuAt the pass — A clean line for a pan never touchedText shaped like a result outlives the execution that never happened

Dans deux cuisines, le registre porte la même belle ligne : « plat préparé, plat conforme ». Pourtant, aucun commis n’a touché la casserole. La phrase décrit un résultat sans prouver que le geste a eu lieu.Deux surfaces de harnais, gstack et Claude Code, exposent la même défaillance : un texte ayant la forme d’un résultat subsiste alors que la commande correspondante n’a pas été exécutée. Le lecteur en aval ne dispose d’aucun élément séparant exécution observée et explication générée. Le contrôle durable consiste à conserver l’état d’exécution à côté du résultat, jamais à le déduire d’une mise en forme assurée.In two kitchens, the register carries the same tidy line: “dish prepared, dish correct.” Yet no cook touched the pan. The sentence describes a result without proving that the work happened.Two harness surfaces, gstack and Claude Code, expose the same failure: text shaped like a result survives although the corresponding command never ran. Nothing downstream separates observed execution from generated explanation. The durable control keeps execution state alongside the result instead of inferring it from confident formatting.

Au passe — Ce qu’on ignore est écrit comme un faitL’inconnu disparaît soit à l’interface, soit dans le récitAt the pass — An empty board reads as an answerThe unknown disappears either at the interface or in the narrative

Dans une maison, la réserve est inaccessible mais l’ardoise écrit « vide ». Dans une autre, le rideau est définitivement baissé sans raison établie ; le quartier invente alors la cause. Dans les deux cas, une ignorance réelle ressort déguisée en certitude.Deux formes d’effacement de l’inconnu. Chez Hermes, une source d’historique indisponible était aplatie en résultat vide, masquant l’incertitude à tous les composants en aval. Pour TaskWeaver, l’archivage est certain et la cause ne l’est pas : ses propres matériaux reconnaissent des ressources limitées, ce qui n’établit aucune chaîne causale.In one house, the pantry cannot be reached, yet the board says empty. In another, the shutter is down for good with no established reason, so the street invents one. Both times, real uncertainty leaves the kitchen disguised as certainty.Two ways the unknown gets erased. In Hermes an unavailable history source was flattened into an empty result, hiding the uncertainty from every downstream component. For TaskWeaver the archival is certain and the cause is not: its own materials acknowledge limited resources, which establishes no causal chain.

Au passe — Chaque annonce doit dire ce qu’on a vuUne affirmation ne vaut que par l’observation qu’elle transporteAt the pass — Say it was a guess, or show itA claim is worth only the observation it carries

Une maison a inscrit une nouvelle règle au passe : chaque annonce doit dire ce qui a été vu, déduit ou seulement supposé. Le commis vérifie lui-même ce qui est à sa portée au lieu de le renvoyer au chef. La règle écrite est bien présente ; son effet sur les annonces réelles n’a pas été mesuré.Une révision de la consigne de workflow chez pstack impose d’accompagner chaque affirmation d’une preuve ou d’une qualification explicite : mesuré, déduit ou supposé. Elle attribue aussi à l’agent les contrôles à sa portée, au lieu de les renvoyer à l’opérateur. Le changement est vérifiable dans les sources ; son effet sur le comportement réel des agents n’a pas été mesuré ici.One house posted a new rule at the pass: every call must say what was seen, inferred, or merely assumed. The cook checks what is within reach instead of sending it back to the chef. The written rule is present; its effect on real calls has not been measured.A workflow-instruction revision at pstack requires every agent claim to carry evidence or an explicit qualification: measured, inferred or assumed. It also assigns the agent the checks within its own reach instead of returning them to the operator. The change is verifiable in the sources; its effect on actual agent behaviour was not measured here.

Les ustensiles et les machinesOutils, configuration et runtimeUtensils and machinesTools, configuration and runtime

Ce qui est réellement disponible et fonctionne au poste de travail.Découverte, configuration effective, capacités chargées et environnement d’exécution.What is really available and working at the station.Discovery, effective configuration, loaded capabilities and execution environment.

13 fiches13 entrées13 cards13 entries

Des livraisons arrivaient après avoir été rayées de la listeL’inventaire réel des outils s’éloigne de la configuration que l’utilisateur croit tenirDeliveries kept coming after the line was crossed outThe live tool inventory drifts away from the configuration the user believes they hold

La liste des fournisseurs était punaisée près de la porte de livraison. Des caisses sont pourtant arrivées d’une maison absente de cette liste, parfois avec les mêmes marchandises deux fois. Une ligne rayée est restée rayée, mais le camion est revenu.Des connecteurs distants de niveau compte pouvaient apparaître dans le CLI local de Claude Code, dupliquer des serveurs configurés localement et contourner la sémantique locale de suppression attendue par les utilisateurs. Deux autorités — la configuration locale et l’état distant du compte — modifiaient la même surface d’outils runtime sans modèle de propriété unifié. La configuration affichée cessait alors de décrire ce qui était réellement chargé.The supplier list was pinned beside the delivery door. Yet crates arrived from a house missing from that list, sometimes bringing the same goods twice. A line stayed crossed out, but the van returned.Account-level remote connectors could surface in the local Claude Code CLI, duplicate locally configured servers and bypass the local deletion semantics users expected. Two authorities — local configuration and remote account state — changed the same runtime tool surface with no unified ownership model. What the configuration displayed stopped describing what was actually loaded.

La main au passe avait pris le dernier motCe qui entoure l’exécution décide de ce qu’un modèle peut réellement faireThe hand at the pass had taken the final wordWhat surrounds execution decides what a model can actually do

Une main au passe regardait d’abord les assiettes. Puis elle a pu les retenir, puis décider de leur départ. Regarder, retenir et trancher sont trois pouvoirs différents, que la maison doit écrire avant le service.Chez Cline, les hooks sont passés d’un point d’extension scripté à une couche de contrôle runtime dédiée, avec mapping d’événements, logs, connecteurs, timeouts d’exécution bornés et intégration à la compaction. Observer, bloquer et décider sont trois niveaux d’autorité distincts, et rien ne les rend lisibles tant que la conception ne dit pas lequel un mécanisme donné détient. Le plan de contrôle est cette couche périphérique, pas la capacité du modèle.A hand at the pass first watched the plates. Then it could hold them back, then decide whether they left. Watching, holding, and settling are three different powers that a house must write down before service.At Cline, hooks moved from a scripted extension point to a dedicated runtime control layer with event mapping, logs, connectors, bounded execution timeouts and compaction integration. Observing, blocking and deciding are three distinct levels of authority, and none of them is legible until the design states which one a given mechanism holds. The control plane is that peripheral layer, not the model’s capability.

Un même cahier passait entre plusieurs cuisinesUne méthode et des fichiers de contrôle qui traversent plusieurs harnaisOne standing-order book passed between several kitchensA method and control files that travel across harnesses

Le même cahier de consignes était accroché dans plusieurs cuisines. Une manière de travailler passait aussi de brigade en brigade. Les pages restaient les mêmes, mais leur poids pouvait changer d’une maison à l’autre.Ce motif couvre les règles, méthodes et fichiers de contrôle conçus pour conserver leur sémantique à travers plusieurs harnais. Les fichiers d’instructions projet de Claude Code, Codex et Gemini CLI convergent sur les noms et le format, tandis que Superpowers montre une méthodologie de workflows qui se diffuse d’un environnement d’agents de code à l’autre avant d’être une fonctionnalité produit.The same standing-order book hung in several kitchens. A way of working also passed from brigade to brigade. The pages stayed the same, but their weight could change from one house to another.This pattern covers rules, methods and control files meant to keep their semantics across several harnesses. Project instruction files in Claude Code, Codex and Gemini CLI converge on naming and format, while Superpowers shows a workflow methodology spreading from one coding-agent environment to the next before becoming any product’s feature.

La sauce avait changé sans que personne la commandeLe comportement effectif quand personne n’a rien configuréThe sauce changed without anyone ordering itEffective behaviour when nobody configured anything

Personne n’avait demandé de changer la sauce. Elle avait pourtant changé dès qu’aucun client ne précisait son choix. Le cahier au mur décrivait encore l’ancienne recette pour les cuisines restées à l’ancienne édition.Les valeurs par défaut déterminent le comportement effectif en l’absence de configuration explicite, et elles changent entre versions. Sur Gemini CLI, les Agent Skills sont passés d’un mode expérimental opt-in à un comportement activé par défaut, tandis que documentation et interface conservaient volontairement l’ancien vocabulaire expérimental pour ne pas casser les versions précédentes.Nobody asked for the sauce to change. Yet it changed whenever a guest gave no choice. The wall book still described the old recipe for kitchens on an earlier edition.Defaults decide effective behaviour when no explicit configuration is supplied, and they shift between versions. In Gemini CLI, Agent Skills moved from opt-in experimental to on-by-default while the documentation and UI deliberately kept the older experimental vocabulary so earlier versions would not break.

Une fiche était rangée mais ne rejoignait jamais le passeCe qui est présent n’est pas ce qui est chargéA card was filed but never reached the passWhat is present is not what gets loaded

Une fiche pouvait dormir dans un tiroir toute une saison. Celles rangées derrière un autre tiroir ne remontaient jamais à l’ouverture. La brigade ne les voyait pas et le service ne changeait pas.La découverte est le mécanisme par lequel un environnement d’exécution identifie les ressources réellement disponibles et applicables. Chez Claude Code, les skills imbriqués n’étaient pas découverts : les fichiers existaient, l’inventaire chargé au démarrage ne les contenait pas. Les utilisateurs les exposaient alors par des hooks de démarrage.A card could sleep in a drawer for a whole season. Cards tucked behind another drawer never came out at opening. The brigade never saw them, and service did not change.Discovery is the mechanism by which a runtime identifies the resources that are actually available and applicable. At Claude Code nested skills were not discovered: the files existed, the inventory loaded at startup did not contain them. Users exposed them through startup hooks instead.

Le poste avait ouvert avant que les caisses soient rangéesUn consommateur s’initialise avant la fin de la découverteThe station opened before the crates were put awayA consumer initializes before discovery completes

Le poste a ouvert à l’heure et le cuisinier a trouvé ses bacs vides. Les caisses, pleines et bien étiquetées, étaient encore dans le couloir. Le poste a donc tenu le service sans rien dans ses bacs.Un service de langage fourni par plugin s’est initialisé avant la fin de la discovery des plugins, laissant le runtime avec zéro serveur configuré malgré des fichiers valides sur disque. Les plugins ont été chargés quelques millisecondes plus tard, sans que la surface attendue soit reprise. L’ordre d’initialisation, et non le contenu de la configuration, a déterminé ce qui était actif au moment des premières opérations.The station opened on time and the cook found empty trays. The full, correctly labelled crates were still in the corridor. The station therefore worked service with nothing in its trays.A plugin-provided language service initialized before plugin discovery had finished, leaving the runtime with zero configured servers despite valid files on disk. The plugins loaded a few milliseconds later, and the expected surface was never picked up. Initialization order, not configuration content, decided what was active for the first operations.

Le livre avait changé, la fiche du poste restait ancienneUn artefact corrigé en source, exécuté en version installéeThe book had changed while the station card stayed oldAn artifact fixed in source, executed from the installed copy

La recette du livre avait été corrigée et tout le monde l’avait vue. Le commis, lui, lisait la vieille fiche punaisée à son poste. La maison se croyait donc en règle tout en suivant encore l’ancienne consigne.Un artefact de contrôle pouvait être corrigé dans le repository source alors que la copie installée, seule chargée à l’exécution par l’agent, restait obsolète. Le produit maintenait plusieurs copies du même contrôle sans identité garantie entre la source et l’installation chargée au runtime. La conséquence directe est un faux sentiment de résolution : le correctif est visible, le comportement observé ne change pas.The recipe in the book had been corrected and everyone saw it. The commis, however, read the old card pinned at the station. The house therefore believed itself in order while still following the old instruction.A control artifact could be corrected in the source repository while the installed copy — the only one the agent loads at execution — stayed stale. The product kept several copies of the same control with no guaranteed identity between the source and the installation loaded at runtime. The direct consequence is a false sense of resolution: the fix is visible, the observed behavior does not move.

Un même bon, mais les clés restaient à chaque maisonUne interface commune, des règles de confiance restées localesOne docket still left the keys with each houseOne shared interface, trust rules that stayed local

Un même bon permettait aux maisons de commander sans réécrire la demande pour chaque fournisseur. Il ne disait pourtant rien de qui pouvait entrer, imposer une consigne ou rester en cuisine. La langue était commune, mais les clés et la décision restaient propres à chaque maison.MCP standardise la façon dont un harnais expose outils et ressources, et son adoption a réduit les intégrations spécifiques entre les principaux produits. Ce qu’il ne standardise pas : confiance, permissions, injection, discovery et enforcement, qui restent des décisions propres à chaque produit. Le motif est cet écart entre une interface partagée et une autorité qui ne l’est pas.One docket let houses place orders without rewriting the request for each supplier. It still said nothing about who could enter, impose a standing note, or remain in the kitchen. The language was shared, but the keys and the decision belonged to each house.MCP standardizes how a harness exposes tools and resources, and its adoption cut the number of bespoke integrations between the major products. What it does not standardize is trust, permissions, injection, discovery and enforcement, which stay per-product decisions. The pattern is that gap between a shared interface and an authority that is not shared.

Un bon commun faisait circuler la commande, pas les règles de chaque maisonUn contrat d’échange commun ne transporte pas la politique localeA shared docket carried the order, not each house’s rulesA shared exchange contract does not carry local policy

Une maison investissait dans des commis capables de se comprendre, des passages partagés et des gardes applicables. Elle cherchait moins de nouveaux plats. Ce travail de changement reste en cours et sa fin n’est pas établie. Un bon commun permet l’échange, sans transporter les règles locales du service.Un protocole définit un contrat d’échange entre composants ; il ne remplace ni les politiques ni les sémantiques locales du harnais. Les branches actives et l’évolution des contrôles de Goose montrent un investissement lourd dans des agents protocolisés, l’interopérabilité et des hooks enforceables, plutôt que dans l’ajout de fonctionnalités utilisateur. Le pivot est en cours ; son achèvement n’est pas établi par les éléments observés.One house invested chiefly in cooks able to understand one another, shared passages, and guards that can be enforced rather than in new dishes. This work of change remains under way and its end is not established. A shared docket enables exchange without carrying local service rules.A protocol defines an exchange contract between components; it replaces neither the harness’s local policy nor its local semantics. Goose’s active branches and control evolution show heavy investment in protocolized agents, interoperability and enforceable hooks rather than in added user features. The pivot is under way; the observed evidence does not establish that it is complete.

Au passe — La consigne dit ajouter, la main écraseLe contrôle vivait en amont du point où l’effet irréversible se produitAt the pass — The wall said add, the hand wipedThe control lived upstream of the point where the irreversible effect occurs

Au service, une consigne disait d’ajouter un plat sans jamais toucher à ceux qui sont là. Le geste, lui, écrasait l’assiette déjà posée. Ce qui est écrit au mur ne dit pas ce que fait la main au moment où elle agit.La frontière d’exécution sépare l’état déclaré dans la source ou la configuration du comportement effectivement observé au runtime. Chez Cline, une primitive décrite comme un ajout pouvait remplacer silencieusement un fichier existant : son garde interrogeait un état incomplet au lieu de la destination réelle, au point même où le remplacement se produit. Un correctif est mergé et couvert par un test de régression ; les états livré, installé et corrigé-observé ne sont pas établis au cutoff observé.During service, the wall said: add a dish, never touch the ones already down. The hand did something else — it wiped the plate that was there. Writing on a wall describes nothing about the instant a hand actually moves.The runtime boundary separates state declared in source or configuration from behaviour actually observed at runtime. At Cline a primitive described as an add could silently replace an existing file: its guard queried an incomplete state rather than the real destination, at the very point where replacement happens. A fix is merged and covered by a regression test; shipped, installed and observed-fixed remain unestablished at the observed cutoff.

L’ardoise verte décrivait le fourneau voisinLe contexte d’exécution actif est rarement celui que le système croit décrireThe green board described the stove next doorThe active execution context is rarely the one the system believes it describes

Le tableau annonce un poste prêt, mais la première commande échoue. La fiche verte appartenait à un autre fourneau, équipé autrement et ouvert avec d’autres clés. Seul le poste réellement utilisé compte.L’identité d’exécution regroupe les dimensions nécessaires pour identifier précisément le contexte runtime actif : workspace, provider et modèle, exécutable, contexte d’authentification, outils et permissions. Chez gstack, un état de santé en cache déclarait l’environnement utilisable alors que le chemin de commande réel échouait, parce que la clé de cache était plus étroite que la clé de réussite. Le second correctif a élargi cette clé vers l’exécutable et le contexte d’authentification réel.The board marks a station ready, but the first order fails. The green card belonged to another stove with different equipment and keys. Only the station actually used matters.Runtime identity gathers the dimensions needed to identify the active execution context precisely: workspace, provider and model, executable, authentication context, tools and permissions. At gstack a cached health state declared the environment usable while the real command path failed, because the cache key was narrower than the success key. The second fix widened that key to the executable and the real authentication context.

En raccourcissant le bon, le chef perd le choix du commisUn champ retiré pour l’affichage portait aussi la décision de routageShortening the ticket removes the chef’s choice of cookA field removed for display also carried the routing decision

Pour rendre le bon plus propre, la maison retire deux lignes. Elles indiquaient pourtant quel commis devait préparer le plat et avec quel équipement. Le chef lit encore la commande, mais ne peut plus choisir ces éléments.Un changement de Codex a masqué par défaut des métadonnées de subagent dans le schéma visible par le modèle. Les champs retirés portaient aussi la sélection du comportement délégué : type d’agent et choix de modèle. Le changement se lisait comme un nettoyage de sortie et une réduction d’exposition ; le comportement observé ensuite montrait un parent incapable de sélectionner certaines capacités déléguées.To make the ticket cleaner, the house removes two lines. They said which cook should prepare the dish and with which equipment. The chef still reads the order but can no longer make those choices.A Codex change hid subagent metadata by default in the model-visible schema. The removed fields also carried delegated behavior selection: agent type and model choice. The change read as output cleanup and reduced exposure; observed behavior afterwards showed a parent unable to select certain delegated capabilities.

Sur trois cents recettes, seules douze atteignent le passeUn catalogue de skills est une ressource d’exécution, pas un ensemble de fichiersOut of three hundred recipes, only twelve reach the passA skills catalog is an execution resource, not a set of files

Le classeur contient trois cents recettes, mais le plan de travail n’a de place que pour douze. Le chef doit donc choisir leur ordre, leur nombre et celles auxquelles il fait confiance. Une fiche oubliée dans le classeur ne guide aucun plat.Le système de skills de Codex a évolué vers un ordre de discovery explicite, des sémantiques de confiance, des toggles, des watchers et des contraintes de budget de prompt. Un catalogue de skills y est traité comme une ressource runtime, et non comme un ensemble de fragments de prompt. La présence d’un skill au catalogue n’établit ni son chargement, ni sa visibilité, ni son application.The binder contains three hundred recipes, but the worktop holds only twelve. The chef must choose their order, number, and which ones to trust. A card left in the binder guides no dish.The Codex skills system evolved toward explicit discovery order, trust semantics, toggles, watchers and prompt-budget constraints. A skills catalog is handled there as a runtime resource rather than a set of prompt fragments. Presence in the catalog establishes neither loading, nor visibility, nor application.

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

Ce qui démarre, s’arrête mal, recommence ou laisse le feu allumé.Timeouts, annulation, retry, repli, écritures atomiques et nettoyage.What starts, stops badly, restarts or leaves the heat on.Timeouts, cancellation, retries, fallback, atomic writes and cleanup.

8 fiches8 entrées8 cards8 entries

L’ardoise a été effacée avant le nouveau menuLe remplacement détruit l’ancien état avant d’être durableThe board was wiped before the new menu arrivedThe replacement destroys the old state before it is durable

Le menu de la veille a été effacé de l’ardoise avant que le nouveau soit prêt. La dictée s’est arrêtée en route. L’ardoise est restée blanche, sans ancien menu ni nouveau.Une écriture atomique ne rend le nouvel état visible qu’une fois complet et durable, l’ancien restant intact jusque-là. Chez Claude Code, un deadlock shell/heredoc récurrent, observé sur un chemin Bash de macOS, a pris une conséquence plus lourde : 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 et laisse la destination vide.Yesterday’s menu was wiped from the board before the new one was ready. The dictation stopped halfway through. The board was left blank, with neither the old menu nor the new one.An atomic write exposes the new state only once it is complete and durable, with the previous one intact until then. In Claude Code 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 and leaves the destination empty.

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.

L’assiette est partie quand celui qui devait la vérifier est tombéLe contrôle tombe, l’exécution continueThe plate left when the person checking it went downThe control fails, execution continues

Une assiette devait être regardée avant de partir. Le jour où la personne chargée de la vérifier est tombée, l’assiette est partie quand même. Personne ne l’avait acceptée ni refusée, mais son silence a compté comme un oui.Le fail-open est le comportement d’un système qui poursuit l’exécution lorsque le mécanisme censé autoriser ou bloquer l’action échoue lui-même. Trois dossiers de ce corpus l’exposent, sur Goose, Claude Code et Codex. La panne du contrôle n’est convertie ni en refus ni en incertitude explicite : elle est absorbée comme une permission.A plate had to be checked before leaving. On the day the person charged with checking went down, the plate left anyway. Nobody accepted or refused it, but that silence counted as yes.Fail-open names a system that keeps executing when the mechanism meant to authorize or block the action is itself broken. Three dossiers in this corpus exhibit it, across Goose, Claude Code and Codex. The control’s own failure is turned into neither a refusal nor declared uncertainty; it is absorbed as permission.

Un ticket parfait est sorti d’un poste jamais alluméUn repli qui fabrique un résultat au lieu de le refuserA perfect docket came from a station never litA fallback that fabricates a result instead of declining

Un ticket est revenu au passe avec un plat, une heure et une table. Pourtant, le poste n’avait jamais allumé le feu. Le ticket avait la bonne allure sans venir d’aucune cuisson.L’intégrité du repli exige qu’un repli annonce « non exécuté » plutôt que de produire un résultat ressemblant au vrai. Un dossier de ce corpus établit la forme sur deux surfaces de harnais, gstack et Claude Code : un texte ayant la forme d’un résultat peut subsister alors que la commande correspondante n’a pas été exécutée.A docket returned to the pass with a dish, time, and table. Yet the station had never lit the burner. The docket looked right with no cooking behind it.Fallback integrity requires a fallback to report not executed rather than emit output shaped like a real result. One dossier in this corpus establishes the shape across two harness surfaces, gstack and Claude Code: text with the shape of a result can persist although the corresponding command was never run.

Au passe — Relancer le plat sans couper le premier feuUne nouvelle tentative démarre sans lire l’état laissé par la précédenteAt the pass — Sending it again while the first still cooksA fresh attempt starts without reading the state the previous one left

Au service, au passe, on annonce que le plat ne viendra pas et on relance la commande. Dans une première cuisine, la casserole initiale continuait pourtant de chauffer, faute d’avoir été retirée du feu. Deux plats avançaient alors pour un seul client. Dans une autre, chacun s’ajoutait à l’addition.Une reprise n’est sûre que si elle connaît l’état laissé par la tentative précédente. Chez LangGraph, un timeout à la frontière de l’appelant ne terminait pas nécessairement le travail sous-jacent, et une tentative de remplacement pouvait recouvrir l’exécution d’origine. Chez SWE-agent, une famille de problèmes de contrôle des coûts a montré la même reprise refacturant un travail déjà payé.During service, the pass calls the dish lost and sends the order again. In one kitchen, the first pan was never pulled off the heat and kept going. Two plates then run for one guest; in another, each one lands on the bill.A retry is safe only when it knows the state the previous attempt left behind. At LangGraph a caller-boundary timeout did not necessarily terminate the underlying work, so a replacement attempt could overlap the original execution. At SWE-agent a family of cost-control issues showed the same restart rebilling work already paid for.

Au passe — La clé jetée parce qu’elle a coincéUn échec d’authentification récupérable déclenchait la suppression définitive des identifiantsAt the pass — One stiff lock, and the key is goneA recoverable authentication failure triggered permanent deletion of the credentials

Au service, la clé du garde-manger n’a pas tourné du premier coup. Au lieu de réessayer plus tard, la maison l’a jetée pour de bon. La porte n’avait résisté qu’un instant ; rentrer demande maintenant de reprendre toute la démarche d’origine.Un signalement sur l’intégration OAuth de goose décrit un chemin de récupération destructif : un échec temporaire de rafraîchissement est traité comme une révocation définitive, et les identifiants stockés sont effacés. Une erreur récupérable ne doit pas conserver la même sortie qu’un rejet définitif. Avec un stockage partagé et des jetons de rafraîchissement rotatifs, un processus obsolète peut en outre effacer les identifiants qu’un autre vient de renouveler.During service, the pantry key did not turn on the first try. Instead of coming back to it later, the house threw it away for good. The door had only stuck for a moment; getting in again now means starting the whole request from the beginning.A report on the goose OAuth integration describes a destructive recovery path: a temporary refresh failure is handled as a definitive revocation, and the stored credentials are erased. A retryable error must not share the exit taken by a final rejection. With shared storage and rotating refresh tokens, a stale process can also erase credentials another process has just renewed.

La première barrière gardait la porte, pas la chambre froideLe second correctif a déplacé le garde jusqu’à la frontière de l’effet irréversibleThe first guard watched the door, not the cold roomThe second fix moved the guard to the boundary of the irreversible effect

La cuisine croule sous les caisses. Un premier garde réduit les entrées, mais certaines livraisons changent d’étiquette dans le couloir et atteignent encore le stockage. La seconde réparation place la barrière devant la chambre froide, juste avant le rangement définitif.Un chemin de journalisation à très fort volume a été réduit puis livré chez Codex, tandis qu’un chemin d’événements transformés continuait d’écrire à travers le garde. Le second correctif a rapproché l’enforcement de la frontière finale de persistance, où la classe interdite est rejetée quelle que soit son identité amont. Ce second correctif a été livré et la récupération observée s’est nettement améliorée ; un correctif livré reste distinct d’une récupération universellement observée.The kitchen is drowning in crates. A first guard reduces arrivals, but some deliveries change labels in the corridor and still reach storage. The second repair places the barrier at the cold-room door, just before goods are stored for good.A very high-volume logging path was reduced and shipped at Codex, while a path of transformed events kept writing through the guard. The second fix moved enforcement close to the final persistence boundary, where the forbidden class is rejected regardless of its upstream identity. That second fix shipped and observed recovery improved markedly; a shipped fix remains distinct from universally observed recovery.

Au passe — Commande close au passe, cuisson toujours en coursChez LangGraph, l’expiration portait sur l’attente, pas sur le travailAt the pass — Written off at the pass, still cooking behindIn LangGraph, expiration applied to the wait, not to the work

Le minuteur sonne au passe et la commande est déclarée terminée. Au fond, le feu reste pourtant allumé et la première cuisson continue. La brigade relance le même plat : deux préparations avancent alors côte à côte.Chez LangGraph, un timeout à la frontière de l’appelant ne terminait pas nécessairement le travail sous-jacent. Une tentative de remplacement pouvait recouvrir l’exécution d’origine, avec des effets de bord et un coût dupliqués. L’expiration décrivait l’attente de l’appelant, jamais l’état du travail.The timer rings at the pass and the order is marked finished. In back, the flame remains lit and the first cooking continues. The brigade starts the same dish again, so two preparations move down the line together.In LangGraph a timeout at the caller boundary did not necessarily terminate the underlying work. A replacement attempt could then overlap the original execution, duplicating side effects and cost. Expiration described the caller’s wait and never the state of the work.

De la cuisine jusqu’à la tableLivraison et résultat utilisateurFrom the kitchen to the tableDelivery and user outcome

Ce qui quitte vraiment la cuisine et ce que le client reçoit.Étapes de livraison, publication et résultat observable par le destinataire.What truly leaves the kitchen and what the guest receives.Delivery stages, publication and the outcome observed by the recipient.

3 fiches3 entrées3 cards3 entries

La commande était cochée alors que la table attendait encoreLa complétion enregistrée chez le producteur, jamais chez le destinataireThe order was ticked while the table still waitedCompletion recorded at the producer, never at the recipient

La commande était cochée car le plat existait et était prêt au passe. Il restait pourtant plusieurs gestes avant la table du client. Un soir, ces gestes n’ont jamais été accomplis.Les étapes de livraison séparent production, persistance, mise en file, envoi et réception effective, afin d’empêcher un faux succès. Sur OpenClaw, la complétion interne pouvait être vraie alors que le résultat final n’atteignait jamais l’utilisateur : un unique drapeau de complétion confondait ces cinq états distincts.The order was ticked because the dish existed and was ready at the pass. Several moves still stood between it and the guest’s table. One evening, those moves never happened.Delivery stages keep generation, persistence, queueing, sending and effective receipt apart so that a false success cannot be recorded. In OpenClaw, internal completion could be true while the final result never reached the user, because one completion flag collapsed those five distinct states into a single mark.

La même clochette sonnait pour un plat servi et un plat perduLe résultat doit être lisible sans personne pour regarderThe same bell rang for a served plate and a lost oneThe outcome has to be readable with nobody watching

La nuit, personne ne regardait la salle ni le passe. La maison ne recevait qu’un coup de clochette disant que c’était fini. Pendant plus d’un an, la même sonnerie a annoncé un plat servi et un plat perdu.Le contrat headless exige des signaux machine fiables pour distinguer succès, échec, blocage et résultat incomplet sans inspection interactive. Un dossier de ce corpus en établit la rupture sur Aider : pendant plus d’un an, des mécanismes de panne différents pouvaient tous se terminer avec un code de succès. Le canal unique dont dispose l’appelant devenait alors non informatif.At night, nobody watched the room or pass. The house received only a bell saying it was done. For more than a year, that same sound announced a served plate and a lost one.A headless contract requires reliable machine-readable signals separating success, failure, blockage and incomplete outcome without interactive inspection. One dossier in this corpus records the break in Aider: for over a year, different failure mechanisms could all terminate with a success code. The single channel available to the caller carried no information at all.

Un plat parcourait six étapes avant que la correction soit établieCinq états distincts sous une seule étiquetteA plate passed six stages before the correction was establishedFive distinct states under one label

Une correction traverse plusieurs étapes : elle est écrite dans le cahier, réunie, imprimée et placée dans la maison. Elle est ensuite lue au poste, puis vue dans l’assiette. Plusieurs lignées ont montré qu’atteindre l’une n’emporte jamais la suivante. Seul un plat corrigé constaté en salle ferme la chaîne.L’état de livraison distingue correctif source, code mergé, release, artefact installé, chargement runtime et récupération observée sur le terrain. Plusieurs lineages indépendantes — Codex, Archon, Claude Code, Gemini CLI — établissent que ces états ne se réduisent pas à une seule étiquette « fixed » : atteindre l’un n’entraîne pas d’atteindre le suivant.A correction passes distinct stages: written in the book, brought together, printed, placed in the house, read at the station, then seen in the plate. Several lines of work showed that reaching one never brings the next. Only a corrected plate observed in the room closes the chain.Release state separates source fix, merged code, release, installed artifact, runtime loading and observed field recovery. Several independent lineages — Codex, Archon, Claude Code, Gemini CLI — establish that these do not collapse into one “fixed” label: reaching any of them does not entail reaching the next.

Les clés et les portesSécurité, confiance et confidentialitéKeys and doorsSecurity, trust and privacy

Qui peut entrer, voir les carnets ou utiliser les outils dangereux.Permissions, secrets, frontières de confiance, caviardage et auditabilité.Who may enter, read the notebooks or use dangerous tools.Permissions, secrets, trust boundaries, redaction and auditability.

7 fiches7 entrées7 cards7 entries

Une clé a été jetée parce qu’une porte coinçaitUn échec récupérable traité comme une révocation définitiveA key was binned because one door stuckA recoverable failure treated as a permanent revocation

Une clé de garde-manger n’a pas tourné un soir et quelqu’un l’a jetée. La porte résistait peut-être seulement pour la nuit. Le lendemain, personne ne pouvait entrer sans redemander une clé au propriétaire.Donner, rafraîchir, remplacer et supprimer un identifiant sont quatre transitions d’état distinctes, chacune rattachée à un propriétaire. Sur Goose, un chemin de récupération destructif traitait un échec temporaire de rafraîchissement OAuth comme une révocation définitive et effaçait les identifiants stockés.A pantry key would not turn one evening, so someone threw it away. The door may only have been stiff for the night. By morning, nobody could enter without asking the owner for another key.Issuing, refreshing, replacing and deleting a credential are four distinct state transitions, each bound to an owner. In Goose, a destructive recovery path treated a transient OAuth refresh failure as a permanent revocation and wiped the stored credentials.

La biffure arrivait après le passage de la porteLe caviardage placé après la traversée qu’il devait empêcherThe crossing happened before anything was crossed outRedaction placed after the crossing it was meant to prevent

Des extraits du cahier de service partaient vers quelqu’un hors de la maison. La demande de biffer les secrets voyageait avec les pages. Elle pouvait nettoyer le billet de retour, mais les pages brutes avaient déjà franchi la porte. Aucun secret sorti n’a été établi, et leur nombre reste inconnu.Une conception d’extraction de mémoire de Gemini CLI transmettait au modèle une sélection de contenu issu de transcriptions locales, puis s’en remettait à des instructions placées dans cette même interaction pour caviarder les secrets. Ce placement protège au mieux le texte produit ensuite ; il ne protège pas la frontière que le contenu brut a déjà franchie. Les éléments examinés établissent le problème de placement, mais ni incident de secret démontré, ni fréquence mesurée, ni correction livrée.Extracts from the service book were sent outside the house. The request to strike out secrets travelled with those pages. It could tidy the return note, yet the raw pages had already crossed the door. No secret leaving has been established, and their number remains unknown.A Gemini CLI memory-extraction design passed the model a selection of content drawn from local transcripts, then relied on instructions placed inside that same interaction to redact secrets. Such placement protects at best the text produced afterwards; it does not protect the boundary the raw content has already crossed. The reviewed material establishes the placement problem, but no demonstrated secret incident, no measured frequency, and no delivered fix.

Le billet montrait un petit geste et en accordait un grandLe prompt mettait en avant le segment anodin d’une commande composéeThe slip showed a small move and granted a large oneThe prompt foregrounded the harmless segment of a composed command

Un billet à signer mettait en avant le geste le plus anodin d’une demande composée. Le geste qui engageait vraiment la maison restait caché derrière. Une première correction avait mieux séparé les gestes et renforcé les refus, puis le même défaut d’affichage est revenu.Sur des commandes shell composées, le prompt de permission de Claude Code pouvait mettre en avant un changement de répertoire anodin tandis que l’opération Git significative restait masquée derrière. L’utilisateur validait un libellé sans rapport avec l’autorité réellement accordée. Un correctif structurel a amélioré la segmentation et la priorité des règles de refus ; une récidive côté affichage a suivi. Cette récidive établit que la correction du parsing et la sémantique d’approbation sont deux problèmes distincts.A signing slip highlighted the most harmless move in a combined request. The move that truly bound the house stayed hidden behind it. One correction separated the moves better and strengthened refusals, then the same display fault returned.On composed shell commands, Claude Code’s permission prompt could foreground an innocuous directory change while the meaningful Git operation stayed hidden behind it. The user approved a label unrelated to the authority actually granted. A structural fix improved segmentation and deny-rule precedence, and a later display-side recurrence followed. That recurrence is the evidence that parser correctness and approval semantics are two separate problems.

La main qui barrait devait agir avant de préparer le billetLe caviardage doit précéder l’assemblage du contexte, non l’accompagnerThe hand that struck out words belonged before the note was preparedRedaction must precede context assembly, not ride inside it

Des morceaux du cahier de la maison étaient envoyés avec une demande de taire les secrets écrite sur la même page. Cette demande pouvait au mieux protéger le billet préparé ensuite. La biffure devait intervenir avant de composer l’enveloppe, de la même manière à chaque départ.Une conception d’extraction de mémoire de Gemini CLI transmettait au modèle une sélection de contenu issu de transcriptions locales, puis s’en remettait à des instructions placées dans cette même interaction pour caviarder les secrets. Ce placement protège au mieux le texte produit ensuite. Le motif consiste à déplacer un nettoyage déterministe avant l’assemblage du prompt, et à l’appliquer de façon identique à chaque envoi.Pieces of the house book were sent with a request to keep secrets quiet written on the same page. That request could at best protect the note prepared afterwards. The strike-out had to happen before the envelope was assembled, in the same way for every departure.A Gemini CLI memory-extraction design passed the model a selection of content drawn from local transcripts, then relied on instructions inside that same interaction to redact secrets. That placement can at best govern the text produced afterwards. The pattern is to move a deterministic scrub ahead of prompt assembly and apply it identically on every send.

Fermer le pli a aussi caché la marche du serviceUn même support portait le transport confidentiel et l’observabilité opérateurClosing the note also hid the course of serviceOne representation carried both confidential transport and operator observability

Fermer les plis entre les cuisiniers a bien protégé le destinataire. Cette même fermeture a retiré au chef les traces lisibles qui expliquaient les demandes, les messages et le partage du travail. Personne n’avait choisi de réduire cette lecture : les deux usages reposaient sur le même pli.Le chiffrement des communications agent-à-agent dans Codex a protégé la confidentialité des destinataires. Il a aussi retiré de l’historique normal du parent les traces lisibles des tâches et des messages, supprimant le support sur lequel les opérateurs lisaient le comportement de délégation. Aucune décision de réduire l’auditabilité n’a été prise : le système utilisait la même représentation pour les deux usages.Closing notes between cooks did protect the recipient. That same closure removed the chef’s readable traces of requests, messages, and how work was shared. Nobody chose to reduce that reading: both uses rested on the same note.Encrypting agent-to-agent communication in Codex protected recipient confidentiality. It also stripped readable task and message traces out of the parent’s normal history, removing the surface operators had been using to read delegation behaviour. No decision to reduce auditability was ever taken: the system used one representation for both purposes.

Une garde ne veillait que sur l’amont de sa propre porteUn contrôle ne couvre que l’amont de la ligne qu’il garde, et il y a plusieurs lignesA guard watched only the approach to its own doorA control covers only what precedes the line it guards, and there is more than one line

Une garde de discrétion ne protège que les pages qui n’ont pas encore franchi sa porte. Des pages brutes pouvaient être lues tandis que la biffure était demandée dans le même billet. Ce passage ne se défait pas par une consigne écrite après, et l’enveloppe n’était pas la seule porte de la maison.Une frontière de confidentialité ne protège que les données qui ne l’ont pas encore franchie. Chez Gemini CLI, une sélection de contenu brut issu de transcriptions locales entrait dans le contexte du modèle, tandis que le caviardage était décrit dans cette même interaction. Le franchissement n’est pas réversible par instruction. L’entrée du modèle n’est par ailleurs pas la seule frontière du dispositif.A privacy guard protects only pages that have not yet crossed its door. Raw pages could be read while the strike-out was requested in the same note. That crossing is not undone by a later instruction, and the envelope was not the house’s only door.A privacy boundary protects only data that has not yet crossed it. At Gemini CLI, a selection of raw content from local transcripts entered the model context while redaction was described inside that same interaction. Crossing is not reversible by instruction. Model input is also not the only boundary in the arrangement.

Au passe — Entrer dans une cuisine inconnue, c’est tout accepterUne décision de confiance porte sur tout ce que l’origine peut faire exécuterAt the pass — Trusting a kitchen means trusting everything in itA trust decision covers everything the origin can cause to run

Dans une cuisine inconnue, les consignes au mur, les appareils branchés et les fournisseurs de l’arrière-cour peuvent tous influer sur le service. Une maison les accepte ou les ferme ensemble dès l’entrée. Cinq autres maisons affrontent la même porte, mais chacune conserve sa propre règle.Le modèle de confiance de Gemini CLI désactive ensemble hooks projet, serveurs MCP et fichiers d’instructions dans les dossiers non fiables, les traitant comme une même classe d’influence exécutable. La décision porte sur l’origine, pas sur la nature de chaque sous-système. Claude Code, Codex, Cline, Goose et OpenHands partagent le transport et conservent chacun leur propre politique.In an unknown kitchen, pinned orders, plugged-in equipment, and back-door suppliers can all influence service. One house accepts or closes them together at the entrance. Five other houses face the same door but keep their own rules.Gemini CLI’s trust model disables project hooks, MCP servers and instruction files together in untrusted folders, treating them as one class of executable influence. The decision attaches to the origin rather than to the nature of each subsystem. Claude Code, Codex, Cline, Goose and OpenHands share the transport and each keep their own policy.

La caisse et les réservesCoûts, quotas et consommationThe till and suppliesCosts, quotas and consumption

Ce que chaque service consomme et ce qui peut être compté deux fois.Budgets, jetons, ressources, quotas et consommation des reprises.What each service consumes and what may be counted twice.Budgets, tokens, resources, quotas and retry consumption.

4 fiches4 entrées4 cards4 entries

Un même plat a gonflé l’addition à chaque repriseLa limite annoncée et la dépense réelle divergent dès qu’une reprise refacture le même travailOne dish enlarged the bill every time it was remadeThe advertised bound and the real spend diverge once a retry rebills the same work

Un client avait commandé un plat. Chaque raté faisait recommencer la cuisine et gonflait l’addition comme une nouvelle commande. La maison affichait pourtant une limite qu’elle croyait respecter.Un budget pose une limite vérifiable sur le coût cumulé d’une exécution et de ses reprises. Chez SWE-agent, une famille de problèmes de contrôle des coûts a montré comment retries, sélection de modèle et exceptions de budget avalées peuvent faire diverger limite nominale et dépense réelle. La limite restait annoncée pendant que le même travail logique était refacturé.One guest ordered one dish. Every failed attempt sent the kitchen back to the start and enlarged the bill as if another order had arrived. The house still displayed a limit it believed it was keeping.A budget places a verifiable bound on the cumulative cost of an execution and its retries. At SWE-agent a family of cost-control issues showed how retries, model selection and swallowed budget exceptions can pull nominal limits apart from real spend. The bound stayed advertised while the same logical work was rebilled.

La feuille était pleine avant la première commandeUn catalogue de capacités consomme le contexte avant toute invocationThe sheet was full before the first orderA capability catalogue spends context before anything is invoked

Le commis n’avait qu’une feuille qui tenait dans sa poche. Avant le service, on lui récitait toute la carte et tous les tours de main, au cas où. La première commande arrivait sur une feuille déjà pleine.Le système de skills de Codex a évolué vers un ordre de discovery explicite, des sémantiques de confiance, des toggles, des watchers et des contraintes de budget de prompt. Dès que les skills sont nombreux et chargés dynamiquement, leurs descriptions se disputent le contexte du modèle avant qu’un seul soit invoqué. Le coût est donc porté par la taille du catalogue et non par son usage.The junior cook had one sheet that fit in his pocket. Before service, he was told the whole menu and every kitchen trick, just in case. The first order landed on a sheet already full.Codex’s skills system grew an explicit discovery order, trust semantics, toggles, watchers and prompt-budget constraints. Once skills are numerous and dynamically loaded, their descriptions compete for model context before a single one is invoked. The cost therefore follows catalogue size rather than catalogue use.

La même commande dépassait la limite en revenant au passeUne limite annoncée qui ne compte pas le travail réellement facturéOne order crossed the limit each time it returnedAn announced limit that does not count the work actually billed

Une assiette revenait au passe, était refaite, puis revenait encore. Le carnet voyait une commande, la caisse en voyait trois. La limite restait respectée sur le papier alors que l’addition la dépassait.Les garde-fous de coût bornent dépense, reprises et effets cumulés avant qu’ils ne franchissent un seuil autorisé. Sur SWE-agent, une famille de problèmes a montré comment reprises, sélection de modèle et exceptions de budget avalées font diverger limite nominale et dépense réelle.A plate returned to the pass, was remade, then returned again. The order book saw one order while the till saw three. The limit held on paper while the bill passed it.Cost guards bound spend, retries and cumulative effects before they cross an authorized threshold. A family of cost-control defects in SWE-agent showed nominal limits and actual spend diverging through retries, model selection, and budget exceptions swallowed inside internal control.

Le cahier de compte prenait la place du serviceQuand l’instrumentation devient elle-même la panneThe tally book was taking room from serviceWhen the instrumentation becomes the outage itself

Le cahier gardait tant de traces qu’il prenait de la place et ralentissait le service. Plusieurs réductions ont été nécessaires avant de le contenir. Tenir les comptes est un travail à part entière : son coût, son temps et son volume doivent être décidés avant qu’ils concurrencent la cuisine.Chez Codex, une télémétrie persistante a produit assez de churn local pour que l’observabilité devienne elle-même un problème de performance et de stockage. Plusieurs vagues de réduction ont été nécessaires. Le budget d’observabilité est la contrainte qui manquait : borner le coût, la latence et le volume induits par l’instrumentation avant qu’ils ne concurrencent le travail observé.The book kept so many traces that it took space and slowed the service. Several reductions were needed before it was contained. Keeping the tally is work in its own right: its cost, time, and volume must be decided before they compete with cooking.In Codex, persistent telemetry generated enough local churn that observability itself turned into a performance and storage problem. Several waves of reduction were needed. The observability budget is the missing constraint: bound the cost, latency and volume that instrumentation introduces, before they compete with the work being observed.

La carte qui changeÉvolution et cycle de vieThe changing menuEvolution and lifecycle

Ce qui apparaît, change de direction, ralentit ou quitte la carte.Dérive, convergence, maintenance, pivot, remplacement et fin de projet.What appears, changes direction, slows down or leaves the menu.Drift, convergence, maintenance, pivots, supersession and project endings.

17 fiches17 entrées17 cards17 entries

Le tableau restait plein après la dernière assietteUn inventaire de travail ouvert survit à la décision qui l’a vidé de son sensThe board stayed full after the last plate leftAn inventory of open work outlives the decision that drained it of meaning

Le restaurant a fermé par décision, mais son tableau gardait beaucoup de commandes inachevées. On pouvait croire que la brigade allait les préparer. Pourtant, des pans entiers de la carte avaient disparu et un dernier repas avait déjà été annoncé.Un backlog fossile est un inventaire de travail ouvert qui reste visible après la décision qui l’a vidé de son sens. Chez Roo Code, issues et branches ouvertes sont restées nombreuses alors que le produit était arrêté volontairement, ses surfaces majeures supprimées et une version finale livrée. Le volume mesurait du travail inachevé, pas un engagement à le livrer.The restaurant closed by choice, yet its board still held many unfinished orders. It could look as though the brigade meant to cook them. In fact, whole parts of the menu had gone and a final meal had already been announced.A backlog fossil is an inventory of open work that stays visible after the decision that drained it of meaning. Roo Code kept a large issue and branch surface while the product was deliberately wound down, major surfaces removed and a final release shipped. Volume measured unfinished work, not any commitment to ship it.

La même consigne a soudain rempli le carnetLe comportement observé change alors que la règle écrite est restée identiqueThe same rule suddenly filled the ledgerObserved behavior changes while the written rule stays identical

Une phrase interdite était notée dans un carnet chaque fois qu’elle passait au passe. Pendant des mois, presque aucune croix. Puis plusieurs sont arrivées d’un coup, alors que la consigne n’avait pas changé.La dérive de comportement est un changement observable des sorties sous une règle écrite inchangée. Chez Claude Code, un stop-phrase guard construit côté utilisateur, presque sans violation sur tout son historique, a accumulé brusquement un groupe de violations après un changement produit. La règle n’avait pas bougé ; la distribution des sorties, si.A forbidden phrase was marked in a ledger whenever it reached the pass. For months, almost no marks appeared. Then several arrived together, although the rule had not changed.Behavior drift is an observable change of output under an unchanged written rule. At Claude Code a user-built stop-phrase guard, historically almost violation-free, suddenly accumulated a cluster of violations after a product change. The rule had not moved; the output distribution had.

Une ardoise annonçait un plat que personne ne préparaitUn nom de travail en cours annonce une direction sans rien garantir de sa livraisonA board advertised a dish no one was cookingA work-in-progress name announces direction while guaranteeing nothing about delivery

Une ardoise annonçait un plat qui semblait proche. Pendant ce temps, la salle avait servi bien d’autres repas sans que celui-là avance. Le nom disait ce que la brigade espérait faire, pas ce qu’elle avait préparé.Un nom de branche est un signal avancé : il expose une architecture envisagée avant qu’une release ne la porte. Chez Codex, Roo Code et agent-scripts, une branche au nom crédible est restée en avance de quelques commits pendant que main avançait de plusieurs centaines. Le nom ne dit rien de la livraison ; la divergence, elle, dit tout.A board named a dish that sounded close to ready. Meanwhile, the dining room served many other meals while that one did not move. Its name showed what the brigade hoped to make, not what it had made.A branch name is a forward signal: it exposes intended architecture before any release carries it. At Codex, Roo Code and agent-scripts, a credibly named branch stayed a handful of commits ahead while main advanced by several hundred. The name says nothing about delivery; the divergence says everything.

Des cuisines séparées ont adopté les mêmes gestesDes harnais indépendants font apparaître les mêmes primitives de contrôleSeparate kitchens adopted the same movesIndependent harnesses grow the same control primitives

Des cuisines qui ne se copiaient pas ont rencontré les mêmes soirs difficiles. Elles ont ajouté une main au passe, une fiche de travail, un plan par cuisinier et un carnet de reprise. Cette ressemblance vient d’un même besoin, pas d’une mode.Plusieurs harnais majeurs ajoutent indépendamment les mêmes mécanismes périphériques : hooks, skills, délégation, confiance, reprise, isolation du workspace et protocoles d’outils. Les hooks y passent de la notification de lifecycle vers l’application de politique, le blocage, l’injection de contexte et le contrôle de reprise ; les skills accumulent discovery, precedence, activation, packaging et budget de contexte ; les worktrees passent de discipline développeur à infrastructure gérée par le runtime. Le signal inter-produits le plus fort n’est pas une fonctionnalité isolée mais ce plan de contrôle périphérique commun.Kitchens that did not copy one another met the same hard nights. They added a hand at the pass, a work card, a bench for each cook, and a book for resuming. The resemblance comes from one need, not a fashion.Several major harnesses independently add the same peripheral mechanisms: hooks, skills, delegation, trust, recovery, workspace isolation and tool protocols. Hooks move from lifecycle notification toward policy enforcement, blocking, context injection and resume control; skills accumulate discovery, precedence, activation, packaging and context budget; worktrees move from developer discipline into runtime-managed infrastructure. The strongest cross-product signal is not an individual feature but this shared peripheral control plane.

Un plat encore servi avait déjà été retiré de l’avenirUn élément encore disponible dont l’usage futur est déconseilléStill served, already removed from the futureAn element still available whose future use is discouraged

Un plat pouvait encore sortir alors que le patron annonçait qu’il ne le referait plus. La salle ne se remplissait pas, la carte a changé, puis l’arrêt a été dit clairement. La nouvelle est venue de la cuisine elle-même, pas d’une salle silencieuse.La dépréciation marque un élément encore disponible dont l’usage futur est déconseillé ou voué au remplacement. Chez CodeGate, la faible adoption de la thèse initiale de protection des assistants de code est reconnue explicitement, l’équipe pivote vers les workflows d’agents, puis déclare le projet déprécié et non maintenu au titre d’expérimentation. L’état est annoncé par l’équipe, non déduit d’une inactivité.A dish could still leave the pass while the owner announced it would not be made again. The room was not filling, the menu changed, and the ending was plainly stated. The word came from the kitchen itself, not from a silent room.Deprecation marks an element that remains available while future use is discouraged or scheduled for replacement. CodeGate explicitly acknowledged weak adoption of its original thesis of protecting code assistants, pivoted to agent workflows, then declared the project deprecated and unmaintained as an experiment. The status was announced by the team rather than inferred from inactivity.

Le classeur décrivait le service d’une autre saisonLa documentation publiée ne décrit plus le comportement effectifThe binder described service from another seasonPublished documentation no longer describes effective behavior

Des fiches sont passées d’un essai demandé à une règle servie d’office. Le classeur a gardé l’ancien mot pour aider les cuisines restées à l’ancienne saison. Il enseignait donc un service qui n’était plus celui du jour.La dérive de documentation apparaît lorsque la documentation publiée ne reflète plus le comportement ou les valeurs par défaut effectifs. Chez Gemini CLI, les skills sont passés d’un mode expérimental opt-in à un comportement activé par défaut, et les noms de configuration d’une sémantique expérimentale à une sémantique stable. Documentation et interface ont conservé le vocabulaire antérieur, volontairement, pour ne pas casser les utilisateurs d’anciennes versions.Some cards moved from a trial you requested to a rule served by default. The binder kept the older word to help kitchens on an earlier season. It therefore taught a service that was no longer today’s.Documentation drift appears when published documentation no longer reflects effective behavior or defaults. At Gemini CLI, skills moved from experimental opt-in to on-by-default, and configuration names moved from experimental to stable semantics. Documentation and UI deliberately kept the earlier vocabulary so that users on older versions would not break.

Un plat annoncé au fond n’était pas encore sur la carteUn indice d’évolution qui précède l’intégrationA dish named in back was not yet on the menuAn early indication that runs ahead of integration

Une ardoise au fond portait les essais en cours. Ses noms étaient beaux et disaient où la maison voulait aller. Certains ne sont jamais arrivés sur la carte imprimée, et l’ardoise ne disait pas lesquels.Les signaux avancés indiquent une évolution possible avant son intégration ou sa publication, et doivent rester qualifiés comme tels. Un dossier de ce corpus en établit la forme sur agent-scripts, Roo Code et Codex : des branches nommées peuvent révéler l’architecture planifiée avant les releases. Une forte divergence transforme alors un nom impressionnant en signal de roadmap trompeur.A board in back listed trials under way. Its names were fine and showed where the house hoped to go. Some never reached the printed menu, and the board did not say which.Forward signals point at a possible evolution before it is merged or released, and they must stay qualified as such. One dossier in this corpus establishes the shape across agent-scripts, Roo Code and Codex: named branches can reveal planned architecture ahead of releases. Strong divergence then turns an impressive name into a misleading roadmap signal.

La maison servait encore, mais les ratés restaientUn produit encore en service dont la réparation n’arrive plusThe house still served while the faults remainedA product still in service whose repairs stop arriving

Pendant plus d’un an, plusieurs sortes de ratés ont été annoncées comme des assiettes bien parties. La maison restait ouverte et servait pourtant sans réparer le passe. Cette durée montre un entretien ralenti ; elle ne dit pas quelle intention se trouvait derrière.Le ralentissement de maintenance est une baisse durable du rythme de correction et d’évolution, distincte de l’abandon : le produit reste en service, la réparation n’arrive pas. Chez Aider, des mécanismes de panne différents ont pu se terminer sur un code de succès pendant plus d’un an, cassant le contrat fondamental de l’automatisation headless. Ce que cette fenêtre établit, c’est une durée, pas une intention.For more than a year, several kinds of fault were announced as plates properly sent. The house stayed open and served without repairing the pass. That duration shows slowed upkeep; it does not reveal anyone’s intention.Maintenance slowdown is a sustained drop in the pace of repair and evolution, distinct from abandonment: the product stays in service while the repair does not land. In Aider, unrelated failure mechanisms could exit with a success code for more than a year, breaking the fundamental contract of headless automation. What that window establishes is a duration, not an intent.

Deux maisons changeaient de direction, sans avoir la même issueDeux changements de direction, deux issues distinctesTwo houses changed direction without sharing the same outcomeTwo direction changes, two distinct outcomes

Une maison a reconnu que sa première spécialité attirait trop peu de monde, puis a changé de direction avant d’être déclarée retirée. Une autre concentrait son effort sur les cuisines qui se passent le travail, leurs passages et leurs gardes, plutôt que sur la carte. Le premier chemin est clos ; le second reste en cours sans fin établie.CodeGate a reconnu explicitement une adoption faible pour sa thèse initiale de protection des assistants de code, a pivoté vers les workflows d’agents, puis a été déclaré déprécié en tant qu’expérimentation. Goose montre, dans ses branches actives et l’évolution de ses contrôles, un investissement lourd dans des agents protocolisés, l’interopérabilité et des hooks enforceables plutôt que dans des fonctionnalités utilisateur. Le premier pivot est suivi d’une dépréciation déclarée ; le second est actif et son achèvement n’est pas établi.One house acknowledged that its first speciality drew too few diners, then changed direction before being declared withdrawn. Another concentrated effort on kitchens handing work to one another, their passages, and their guards rather than the menu. The first course is closed; the second remains under way with no established end.CodeGate explicitly acknowledged weak adoption for its original thesis of protecting code assistants, pivoted toward agent workflows, and was then declared deprecated as an experiment. Goose shows, through its active branches and the evolution of its controls, heavy investment in protocolised agents, interoperability and enforceable hooks rather than in user-facing features. The first pivot was followed by a declared deprecation; the second is live and its completion is not established.

La fin d’une maison prenait plusieurs formes, jamais une seuleLa fin d’un projet est un ensemble d’états distincts, pas un événement uniqueA house’s ending took several forms, never just oneA project’s end is a set of distinct states, not a single event

Une maison peut cesser par choix, sans avenir, en passant ailleurs ou en laissant une vitrine en lecture seule. L’archivage, le pivot retiré et le changement d’adresse sont d’autres fins possibles. Ces états se sont révélés incompatibles, non les degrés d’une même échelle. Chaque forme entraîne une continuité différente pour le client.La mortalité d’un projet recouvre des états distincts : arrêt volontaire, maintenance sans avenir stratégique, supersession par un successeur, read-only, archivage à cause inconnue, pivot déprécié, déplacement d’identité de dépôt et ralentissement marqué. La reconstruction historique a produit ces formes comme incompatibles entre elles, et non comme les degrés d’une même échelle. Roo Code, AutoGen, Continue, CodeGate, TaskWeaver et SWE-agent occupent chacun une case différente.A house may end by choice, without a future, by moving elsewhere, or by leaving a read-only window. An archive, a withdrawn turn, and a new address are other possible endings. These states proved incompatible, not degrees on one scale. Each form leaves a different continuity for diners.Project mortality covers distinct states: deliberate sunset, maintenance with no strategic future, supersession by a successor, read-only, archival with unknown cause, a deprecated pivot, a repository identity move, and marked slowdown. Historical reconstruction produced these as mutually incompatible forms rather than as degrees on one scale. Roo Code, AutoGen, Continue, CodeGate, TaskWeaver and SWE-agent each sit in a different one.

La vitrine restait ouverte alors que les fourneaux ne changeaient plus rienL’accès à l’historique survit à la fin des mutationsThe window stayed open while the stoves changed nothing moreHistory stays readable after the changes stop

La maison laissait le livre et les anciennes cartes à disposition tout en limitant les changements à venir. Cet état ne se lisait pas sur la vitrine : les responsables l’avaient annoncé et avaient servi leur dernière version. Lire reste possible, cuisiner de nouveau ne l’est plus.L’état read-only conserve l’accès à l’historique tout en supprimant ou limitant les mutations futures. Continue produit l’inverse d’une heuristique courante : le projet est explicitement déclaré non maintenu activement sans que son dépôt soit archivé. L’état réel est porté par la déclaration des mainteneurs et une posture de release finale, pas par le flag de plateforme.The house left the book and old menus available while limiting future changes. That state could not be read from the window: the keepers announced it and served their final version. Reading remains possible; cooking anew does not.Read-only state preserves access to history while removing or restricting future mutations. Continue inverts a common heuristic: the project is explicitly declared no longer actively maintained while its repository stays unarchived. Real status is carried by the maintainers’ statement and a final-release posture, not by the platform flag.

Le même billet avait recommencé à cacher le geste qui comptaitUn défaut qui revient après un correctif structurelThe same slip had begun hiding the important move againA defect that returns after a structural fix

Un billet pouvait mettre en avant un geste anodin tandis que celui qui engageait la maison restait caché. La faute était revenue après une première correction de fond. Cette récidive est l’élément probant : un défaut valide reparu après une retouche.Une régression est la réapparition ou l’introduction d’un défaut sur un comportement précédemment valide après une modification. Sur les commandes shell composées de Claude Code, le prompt de permission pouvait mettre en avant un changement de répertoire anodin tandis que l’opération Git significative restait masquée derrière. Dans cette famille d’incidents, c’est la récidive après un correctif structurel qui constitue l’élément probant.A slip could highlight a harmless move while the one binding the house stayed hidden. The fault returned after an initial correction to the arrangement. That recurrence is the proof: a valid behaviour failing again after a change.A regression is the reappearance or introduction of a defect in previously valid behavior after a change. On composed shell commands in Claude Code, the permission prompt could foreground a benign directory change while the significant Git operation stayed hidden behind it. In that incident family, recurrence after a structural fix is the probative element.

Le changement d’adresse avait été lu comme une disparitionUne migration d’identité lue comme une disparitionA change of address had been read as disappearanceAn identity migration read as a disappearance

Une maison a changé d’adresse et d’enseigne. Un veilleur qui ne regardait que l’ancien numéro pouvait en déduire du silence, voire une fermeture, alors que la maison canonique servait toujours. L’identité avait continué à travers le déménagement.L’identité de dépôt préserve la continuité d’un projet à travers renommages, transferts et alias. SWE-agent a migré son identité de dépôt vers une autre organisation ; un watcher indexé sur l’ancienne pouvait en inférer de l’inactivité, voire une disparition, alors que le projet canonique restait actif. Il est actif après le changement d’identité.A house changed address and sign. A watcher looking only at the former number could infer silence or even closure while the canonical house still served. Its identity continued through the move.Repository identity preserves project continuity across renames, transfers and aliases. SWE-agent migrated its repository identity to another organization; a watcher indexed on the old one could infer inactivity, or even disappearance, while the canonical project stayed active. It is active after the identity change.

Au passe — Une façon de travailler qui gagne d’autres maisonsSuperpowers est passé de candidat à projet suivi parce que sa méthode traverse les harnaisAt the pass — A way of working other kitchens copiedSuperpowers moved from candidate to tracked project because its method crosses harnesses

Au service, ce n’est pas un plat qui a séduit. C’est une façon de préparer, travailler et vérifier qui s’est mise à circuler. Des cuisiniers l’appliquent désormais dans des maisons sans lien avec celle d’origine. C’est ce qui a fait passer cette méthode de curiosité à cas suivi.Une progression rapide d’adoption ou d’attention est un signal de découverte, jamais une preuve de qualité. Superpowers a émergé comme méthodologie distinctive de workflows et de skills, et son influence traverse plusieurs environnements d’agents de code. C’est cette traversée, et non le volume d’attention, qui a justifié sa promotion de candidat à projet suivi.During service, no single dish made the name. What spread was the order of work itself: prepare, cook, then check before anything leaves. Cooks now use it in houses with no link to the first one, and that is why the method stopped being a curiosity.A rapid rise in adoption or attention is a discovery signal, never proof of quality. Superpowers emerged as a distinctive workflow and skills methodology, and its influence runs across several coding-agent environments. That crossing, rather than the volume of attention, is what justified promoting it from candidate to tracked project.

Au passe — Une maison qui ferme parce qu’elle l’a décidéUne fin de vie décidée se lit dans les retraits et la version finale, jamais dans le silenceAt the pass — A last service announced, then the shutter downA decided end of life reads in removed surfaces and a final release, never in silence

Cette maison n’a pas disparu par manque de clients. Elle a retiré des pans entiers de sa carte, annoncé un dernier service, puis baissé définitivement le rideau. Les habitués ont dû rejoindre d’autres cuisines ou reprendre eux-mêmes certaines recettes.Un sunset est une trajectoire de fin de vie décidée, pas une extinction par inactivité. Roo Code a été arrêté délibérément : des surfaces majeures — cloud, enterprise, télémétrie, marketplace — ont été retirées, une version finale a formalisé l’arrêt, et le repository a été archivé. La continuité s’est déplacée vers des alternatives et des forks communautaires, hors du produit d’origine.This house did not fade for lack of guests. It removed whole sections of the menu, announced a final service, and then lowered the shutter for good. Regulars had to move to other kitchens or take up some recipes themselves.A sunset is a decided end-of-life trajectory, not extinction by inactivity. Roo Code was deliberately halted: major surfaces — cloud, enterprise, telemetry, marketplace — were removed, a final release formalized the stop, and the repository was archived. Continuity moved to alternatives and community forks, outside the original product.

Au passe — La maison reste ouverte, rien ne s’y inventeUn projet reste maintenu après le déplacement de son développement stratégiqueAt the pass — The owners write the new menu elsewhereA project stays maintained after its strategic development moves elsewhere

La première maison n’a pas fermé. Les mêmes patrons ont ouvert une seconde adresse, plus vaste, où ils inventent désormais les nouveaux plats. L’ancienne reste entretenue et continue de servir sa carte connue, mais l’avenir se prépare ailleurs.La supersession est le déplacement du développement stratégique vers un successeur pendant que le projet d’origine reste maintenu. AutoGen est passé en maintenance tandis que ses créateurs dirigeaient le développement nouveau vers un framework successeur, produit par la même organisation et plus large. Le repository existe toujours ; c’est son état stratégique qui a changé.The first house did not close. The same owners opened a larger second address where new dishes are now invented. The old room stays maintained and serves its familiar menu, but the future is prepared elsewhere.Supersession is the shift of strategic development to a successor while the original project stays maintained. AutoGen moved into maintenance while its creators directed new development toward a successor framework, built by the same organization and broader in scope. The repository still exists; what changed is its strategic state.

Au passe — Un dépannage devenu indispensable, puis casséUn contournement toléré devient une dépendance sans contratAt the pass — A stopgap the house came to depend onA tolerated workaround becomes an uncontracted dependency

Des équipes rangent leurs fiches dans un tiroir caché dans un autre. Comme la tournée du matin ne descend pas si loin, elles ajoutent un geste spécial pour les remonter. Cette habitude tient des mois, puis un changement dans l’ouverture de la maison la casse alors qu’aucune fiche n’a bougé.La dérive de contournement est le passage d’un contournement transitoire à une dépendance durable, qui porte alors sa propre surface de panne. Chez Claude Code, la découverte au démarrage ignorait les skills imbriqués, et les utilisateurs les ont exposés par des hooks de démarrage. Une évolution ultérieure du démarrage a cassé ce contournement alors qu’aucun fichier de skill n’avait changé.Crews file their cards in a drawer hidden inside another. Because the morning round never reaches that deep, they add a special opening move to fetch them. The habit works for months, then a change in opening breaks it even though no card moved.Workaround drift is the shift from a transitional workaround to a durable dependency that carries its own failure surface. At Claude Code, startup discovery skipped nested skills, and users exposed them through startup hooks instead. A later change to startup behavior broke that workaround while no skill file had changed.