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 swingActiveLe 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.

