ProjetProject

Le contrôle était trop loin du geste finalCodexThe check stood too far from the final moveCodex

La maison est grande : elle note tout, poste des gardes et confie des tâches à des commis qu’on ne voit pas. Les histoires réunies ici ont la même forme : le contrôle attendait trop loin du geste définitif.Codex accumule un plan de contrôle périphérique : hooks, skills chargés à l’exécution, délégation à des sous-agents, portes d’approbation humaine. Les lignées réunies ici répètent une même défaillance structurelle — un contrôle installé en amont de la frontière qu’il prétend tenir. Deux d’entre elles portent un correctif livré et versionné ; les autres restent ouvertes ou non corrélées à un commit, une release et une observation à l’exécution.The house is large: it writes everything down, posts guards at doors, and sends work to cooks nobody watches. The failures gathered here share one shape: the check stood too far from the final move.Codex has accumulated a peripheral control plane: hooks, runtime-loaded skills, subagent delegation, human approval gates. The lineages gathered here repeat one structural defect — a control installed upstream of the boundary it claims to hold. Two of them carry a shipped, versioned fix; the rest are open, or not yet correlated to a commit, a release and a runtime observation.

Le service bat son pleinActifService is in full swingActive
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 deliveryLe 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 assumesLe 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 forceDeux 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 overlapLa 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 invokedDeux 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 ruleDes 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 primitivesUn 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 harnessesL’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 continuesUn 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 integrationLa 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 upstreamLe 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 continuationUn 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 localLe 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 historyLe 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 itselfFermer 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 observabilityLe 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 fixUn 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 labelAu 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 ownAu 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 occursL’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 describesLa 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 diskEn 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 decisionLa 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 effectSur 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 filesDeux 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 oneLe 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 separatelyAu 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 identityAu 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 runAu 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

Le carnet dévorait la réserveChronologieThe ledger ate the storeroomTimeline

Au commencement, la maison ne gardait que l’entrée et la fin du service. Elle savait qui arrivait et qui repartait. Entre ces deux instants, chaque geste quittait le passe sans regard.Les premiers hooks répondent à une demande de la communauté par un MVP à deux événements, placés aux bornes de session. Ce que couvre cette surface, c’est l’orchestration, pas l’action.At the beginning, the house guarded only the opening and close of service. It knew who arrived and who left. Between those moments, every move left the pass unseen.The first hooks answered community demand with a two-event MVP bound to session start and end. What that surface covers is orchestration, not the individual action.

C’est pourtant entre ces deux bornes que tout se décide. C’est là qu’une casserole entière est jetée, qu’une bouteille interdite sort de cave ou qu’un plat bâclé file en salle.Ces rappels de bornes n’ont aucune prise structurelle sur l’action individuelle d’un outil, c’est-à-dire là où apparaissent les commandes destructrices, les secrets et les défauts de qualité.Yet everything is decided between those two points. That is where a whole pan is thrown away, a forbidden bottle leaves the cellar, or a sloppy plate reaches the dining room.Boundary callbacks have no structural grip on the individual tool action — precisely where destructive commands, secrets and quality defects enter.

Depuis mars, la maison a beaucoup étoffé sa garde : des postes de contrôle partout et une table où relire les décisions. Personne n’a retrouvé la date de chaque ajout.La source observée contient aujourd’hui un sous-système de hooks nettement plus riche que ce MVP de mars : couches d’exigences, surface de relecture, plugins de cœur. La correspondance historique entre chaque événement ajouté et sa PR ou sa version reste incomplète.Since March, the house has greatly enlarged its watch: posts almost everywhere and a table for reading decisions back. Nobody has recovered the date of every addition.The observed source now holds a hooks subsystem far richer than that March MVP: requirement layers, a review surface, core plugins. Mapping each added event back to a pull request or a release is still incomplete.

Le cahier de recettes a suivi le même chemin. Il ne dort plus dans un tiroir : on choisit les fiches qu’on en tire, on veille aux changements et on décide lesquelles méritent confiance.Les skills suivent la même trajectoire : sélection, configuration, surveillance des changements et garde des skills de confiance apparaissent dans la même source. Un catalogue de capacités devient une ressource d’exécution, plus un simple fichier de prompt.The recipe notebook followed the same path. It no longer sleeps in a drawer: you choose which cards to draw, watch for changes, and decide which ones deserve trust.Skills travel the same path: selection, configuration, change watching and trusted-skill guarding all appear in the same source. A capability catalogue becomes a runtime resource rather than a prompt file.

Puis un client relève un autre défaut. La maison consigne chaque détail, parfois deux fois. Le carnet enfle si vite qu’il use la réserve où il est rangé.Une charge réelle signalée montre que la journalisation TRACE persistante et les événements dupliqués produisent un churn SQLite extrême et une amplification d’écriture sur SSD.Then a customer reports another flaw. The house records every detail, sometimes twice. The ledger swells so fast that it wears out the storeroom where it is kept.A reported workload shows persistent TRACE logging plus mirrored events producing extreme SQLite churn and SSD write amplification.

Deux remèdes sont servis en 0.142.0. En regardant de plus près, un responsable voit encore des lignes passer par une voie que le premier tri ignorait.Deux correctifs sont livrés en 0.142.0. Un suivi de mainteneur identifie ensuite un chemin résiduel : après réécriture des métadonnées par les adaptateurs, des enregistrements échappaient au filtre amont.Two remedies are served in 0.142.0. Looking closer, a steward still sees some lines passing by a route the first sorting never saw.Two fixes ship in 0.142.0. Maintainer follow-up then identifies a residual path: once adapters rewrote event metadata, records escaped the upstream filter.

Le second remède déplace la garde : non plus au tri, mais au moment où la ligne entre réellement dans le carnet. Il est servi en 0.143.0. Le client à l’origine du signalement annonce environ 85 % de moins ; personne d’autre n’a repris la mesure depuis.Le second correctif, structurel, déplace l’enforcement vers le sink final et est livré en 0.143.0. L’utilisateur à l’origine du signalement rapporte environ 85 % de réduction pour l’ensemble des correctifs. Aucune mesure terrain indépendante n’a été conduite après 0.143.0.The second remedy moves the guard: not to the sorting, but to where the line truly enters the ledger. It is served in 0.143.0. The customer who raised the matter reports roughly 85 percent less; nobody else has measured since.The second, structural fix moves enforcement into the final sink and ships in 0.143.0. The reporting user measured roughly an 85% reduction across the set of fixes. No independent field measurement has been taken since 0.143.0.

Le tri perd la trace après l’entréeMécanismeThe sorting loses the trail after the doorMechanism

Le tri se faisait dès l’entrée, d’après l’étiquette. Avant l’inscription dans le carnet, certaines étiquettes étaient remplacées et passaient alors sans être reconnues. La même distance affaiblit d’autres gardes de la maison : on surveille l’annonce, pas le geste qui rend la chose définitive.Le défaut commun est la distance entre le point de contrôle et la frontière où l’effet devient irréversible. Le filtre de journalisation s’appliquait avant que les adaptateurs ne réécrivent les métadonnées : après réécriture, les enregistrements n’étaient plus reconnus. La même distance sépare un hook de bornes de session de l’action d’outil qu’il prétend encadrer. Elle sépare aussi un drapeau présenté comme cosmétique, hide_spawn_agent_metadata activé par défaut, du schéma spawn_agent visible par le modèle auquel il retirait des champs de routage.Sorting happened at the door, by the label. Before the entry reached the ledger, some labels were replaced and then passed unrecognised. The same distance weakens other guards in the house: the call is watched, not the move that makes the matter final.The shared defect is distance between the control point and the boundary where the effect becomes irreversible. The logging filter ran before adapters rewrote event metadata, so rewritten records were no longer recognised. The same distance separates a session-boundary hook from the tool action it claims to gate. It also separates a flag presented as cosmetic metadata, hide_spawn_agent_metadata defaulting to true, from the model-visible spawn_agent schema whose routing fields it removed.

Une garde rapprochée, des pratiques encore à prouverRéponseOne guard brought close, other practices unprovenResponse

Pour le carnet, la garde a été portée jusqu’au point d’écriture : cela est fait. Pour le reste, il y a des pratiques, pas encore de preuve. Il faut garder le geste plutôt que l’annonce, et conserver une trace lisible même quand les billets sont scellés. Une question au chef ne doit jamais se résoudre seule après une minute.Pour la journalisation, la réponse livrée est structurelle : l’enforcement est validé au sink final plutôt qu’en amont. Les autres lignées n’ont produit que des pratiques, pas des correctifs observés. Un hook d’enforcement doit s’exécuter à la frontière d’action qu’il revendique, avec une sémantique de blocage et d’échec explicite, et une configuration qui retire des champs du schéma visible par le modèle relève de la logique d’agent, donc de tests d’intégration. Les portes d’approbation humaine doivent échouer en fermé, et la confidentialité du destinataire ne doit pas supprimer la trace locale bornée dont l’opérateur a besoin.For the ledger, the guard was brought to the point of writing: that is done. For the rest there are practices, not proof yet. Watch the move rather than the call, and preserve a readable trace when notes between cooks are sealed. Never let a question for the chef settle itself after a minute.For logging, the shipped response is structural: enforcement is validated at the final sink instead of upstream. The other lineages produced practices, not observed fixes. A hook meant to enforce must run at the action boundary it claims, with explicit block and failure semantics; configuration that strips fields from the model-visible schema is agent logic and needs integration tests. Human approval gates should fail closed, and recipient encryption should not destroy the bounded local trace an operator needs to debug delegation.

Le carnet tient, le reste attend encoreÉtat actuelThe ledger holds; the rest still waitsCurrent state

Le carnet est réglé et le remède est connu. Le reste ne l’est pas : les billets scellés entre commis restent signalés ouverts, comme la porte qui se refermait seule après une minute. Pour la mention effacée, la maison dit l’affaire achevée sans geste, date ni service retrouvé. Depuis, personne hormis le client d’origine n’a remesuré le carnet.Établi : les deux vagues de correctifs de journalisation et leurs versions, ainsi qu’un sous-système de hooks nettement plus riche dans la source observée. Non établi : toute mesure terrain indépendante après 0.143.0, et la correspondance historique entre chaque événement de hook et sa PR ou sa version. Le signalement des sous-agents chiffrés était ouvert au moment de la collecte, et celui de la porte humaine expirant à soixante secondes reste ouvert côté Codex à la date de coupure. Le bug de métadonnées de spawn est marqué complété dans le dépôt, mais le commit correcteur, la version et l’observation à l’exécution restent à corréler.The ledger is settled and the remedy is known. Sealed notes and the door that shut itself after a minute remain reported open. On the erased detail, the house marks the matter complete without a found repair. Since then, only the original customer has measured the ledger again.Established: both waves of logging fixes with their versions, and a substantially richer hooks subsystem in the observed source. Not established: any independent field measurement after 0.143.0, and the historical mapping from each hook event to a pull request or release. The encrypted-subagent report was open at retrieval; the sixty-second human-gate issue remains open on the Codex side at cutoff. The spawn-metadata bug is marked completed in the repository, but the correcting commit, the release and a runtime observation still need correlation.

Garder le geste au dernier instantLeçonGuard the move at its last momentLesson

Une garde postée loin du geste ne garde que l’annonce. Place-la là où rien ne peut plus être repris, puis vérifie sur le vrai chemin que c’est bien elle qui tient le passe.Un contrôle n’encadre que ce qui passe par lui : il doit s’exécuter à la frontière où l’effet devient irréversible, avec une sémantique d’échec déclarée. Après correctif, c’est le chemin d’ingestion réel qu’il faut vérifier, pas la représentation visible au départ.A guard standing far from the move only guards the call. Place it where nothing can be taken back, then check on the real path that it is truly holding the pass.A control only governs what passes through it, so it belongs at the boundary where the effect becomes irreversible, with declared failure semantics. After a fix, verify the actual ingestion path rather than the representation visible at the start.