ProjetProject

Le tour des postes laisse passer le même défautgstackThe station round misses the same fault againgstack

La brigade fait le tour des postes avant le service et annonce que tout est prêt. Une fois, un poste ne pouvait pas cuisiner et le tour n’a rien vu. La correction est arrivée, puis le même défaut est revenu par une autre porte.gstack est une flotte d’outils et de skills façonnés par rôle pour Claude Code, livrée avec le câblage d’hôte qui les rend utilisables. Sa lignée publique la plus instructive est un false-green : une sonde de préflight rapportait prêt alors que la couverture Codex était silencieusement perdue, d’abord par classification d’erreur fail-open, puis, après le premier correctif, par une identité de cache périmée. Le second correctif, élargi à l’exécutable et au contexte d’authentification réel, est écrit et testé mais non livré.The brigade walks the stations before service and calls everything ready. Once, a station could not cook and the round saw nothing. A repair arrived, then the same failure came back through another door.gstack is a role-shaped fleet of Claude Code tools and skills, shipped with the host wiring that makes them usable. Its most instructive public lineage is a false green: a preflight probe reported ready while Codex coverage was silently lost, first through fail-open error classification and then, after the first fix, through stale cache identity. The second fix, widened to the executable and the real authentication context, is written and tested but not shipped.

Le service bat son pleinActifService is in full swingActive
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 overlapDes 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 primitivesLa 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 onesLe 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 executionUn 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 decliningLe 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 outcomeL’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 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 stateLa 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 effectLa 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 goneAu 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 happenedAu 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 tour des postes revient, puis rate encoreChronologieThe station round starts, then misses againTimeline

La maison commence comme une caisse à outils : des fiches de travail et des gestes tout prêts, rangés pour être repris tels quels. Le constat reste au passe.gstack démarre comme un harnais de skills et de workflows, façonné par rôle et livré avec son câblage d’hôte. L’ensemble est utilisable dès l’installation.The house starts as a toolbox: work cards and ready-made moves, filed so they can be picked up exactly as they are. The finding remains at the pass.gstack starts as a skills and workflow harness, role-shaped and shipped with its host wiring. The whole set is usable on install day.

On ajoute une habitude : avant le service, on parcourt la ligne et l’on demande à chaque poste s’il peut tenir son rôle. Plusieurs paires de mains doivent revoir le même plat.Des préflights de revue multi-modèles sont ajoutés : avant que la revue ne parte, une sonde vérifie que chaque moteur est disponible. La revue croisée suppose que chaque moteur annoncé participe réellement.A habit is added: before service, walk the line and ask each station whether it can hold its role. Several pairs of hands must review the same dish.Cross-model review preflights are added: before the review runs, a probe checks that each engine is available. Cross-model review assumes every announced engine really takes part.

Un soir, le tour annonce que tout est prêt alors qu’un poste ne peut pas cuisiner. Son empêchement avait été pris pour un détail et le tour l’avait laissé passer. La cause est trouvée, une réparation arrive, et le dossier est classé.Un false-green d’installation est découvert : la sonde renvoyait un succès alors que Codex ne pouvait pas s’exécuter. L’explication retenue est une classification d’erreur fail-open. L’issue est fermée comme complétée.One evening, the round calls everything ready while a station cannot cook at all. Its trouble had been read as a detail and the round let it through. The cause is found, a repair arrives, and the case is closed.A false-green install failure is found: the probe returned success while Codex could not execute. The explanation retained is fail-open error classification. The issue is closed as completed.

Quelque temps après, la même annonce couvre la même erreur, mais la cause a changé. Le tour se fie à l’avis de la veille pour un poste qui n’est plus le même.La même classe structurelle récidive : l’état de santé mis en cache restait valide alors que l’identité réelle avait changé. Le symptôme est identique, la cause ne l’est pas.Some time later, the same call hides the same mistake, but the cause has changed. The round trusts yesterday’s verdict for a station that is no longer the same.The same structural class recurs: cached health stayed valid while the real identity had changed. The symptom is identical, the cause is not.

La deuxième réparation ne s’arrête plus au nom du poste. Elle regarde qui tient réellement la casserole et avec quel trousseau. Elle est écrite, éprouvée, ouverte à l’entrée, mais elle n’est pas encore servie.Le second correctif élargit la clé d’identité du cache vers l’exécutable et le contexte d’authentification réel, avec des tests. Il entre dans le flux de merge queue ; à la coupure, la PR est ouverte et mergeable, non livrée.The second repair no longer settles for the station’s name. It looks at who truly holds the pan and with which key ring. It is written, tested, and open at the door, but it has not yet been served.The second fix widens the cache identity key to the executable and the real authentication context, with tests. It enters the merge-queue workflow; at cutoff the pull request is open and mergeable, not shipped.

Deux tours, deux questions trop courtesMécanismeTwo rounds, two questions too shortMechanism

Un tour de postes ne vaut que par sa question. La première fois, on vérifiait qu’un poste répondait, non qu’il pouvait cuisiner. La seconde, un avis d’hier suffisait pour un poste qui avait changé. Dans les deux cas, l’annonce était rassurante et le feu restait éteint.Une sonde de disponibilité ne prouve que ce qu’elle interroge. La première défaillance venait de la classification : une erreur traitée en fail-open se lit comme un succès. La seconde venait de l’identité : une santé mise en cache survit à tout ce qui change la capacité réelle — exécutable, identifiants, configuration, environnement d’exécution pertinent. En élargissant la clé, le second correctif a révélé la frontière d’abstraction que le premier avait manquée.A round of the line is only worth its question. The first time, it checked that a station answered, not that it could cook. The second time, yesterday’s verdict was enough for a station that had changed. Both times the call was reassuring and the stove stayed cold.A readiness probe proves only what it asks. The first failure was classification: an error handled fail-open reads as success. The second was identity: cached health outlives everything that can change real capability — executable, credentials, configuration, relevant runtime environment. Widening the key, the second fix exposed the abstraction boundary the first one had missed.

Demander si le poste peut vraiment cuisinerRéponseAsk whether the station can truly cookResponse

La bonne question est simple : ce poste, tenu par cette main et avec ce trousseau, peut-il cuisiner maintenant ? La réparation est écrite et éprouvée, mais elle n’est pas encore entrée. Pour un plat annoncé parti, la maison garde aussi la preuve de son départ, au lieu de la déduire du ton de l’annonce.Une santé mise en cache doit être invalidée par toute dépendance capable de changer la capacité réelle : identité de l’exécutable, identifiants, configuration et environnement d’exécution pertinent. C’est ce que fait le second correctif, écrit et testé, mais non livré à la coupure. La même famille de défaillance impose une seconde discipline : conserver l’état d’exécution à côté du résultat, plutôt que de déduire l’exécution d’une présentation assurée.The right question is simple: can this station, held by this hand and using this key ring, cook right now? The repair is written and tested, but it has not entered yet. For a plate announced as gone, the house also keeps proof of its departure, never reading it from the tone of the call.Cached health must be invalidated by every dependency able to change actual capability: executable identity, credentials, configuration and the relevant runtime environment. That is what the second fix does — written and tested, but not shipped at cutoff. The same failure family imposes a second discipline: keep execution state alongside the result instead of inferring execution from a confident presentation.

La deuxième correction attend toujours son tourÉtat actuelThe second repair is still waiting its turnCurrent state

La maison tourne et reste pleine. Elle ne fait pas de grandes annonces de nouveauté : les compter ne dirait rien de sa santé. Le deuxième correctif attend toujours d’entrer. Personne n’a mesuré ce qu’il donne une fois en place.gstack est en croissance active alors qu’il ne publie pas de releases — un exemple direct de pourquoi la cadence de release seule classe mal un projet. Le second correctif d’identité de cache est ouvert et mergeable, non livré ; aucune mesure terrain n’est disponible après lui. La lecture causale en deux temps, fail-open puis identité périmée, est retenue à faible confiance ; la perte silencieuse de couverture Codex derrière un préflight vert l’est à confiance moyenne.The house is busy and full. It makes no grand announcements of what is new, so counting them would say nothing about its health. The second repair is still waiting to go in. Nobody has measured what it does once it is there.gstack is in active growth while publishing no releases — a direct example of why release cadence alone misclassifies a project. The second cache-identity fix is open and mergeable, not shipped; no field measurement exists after it. The two-stage causal reading, fail-open then stale identity, is held at low confidence; the silent loss of Codex coverage behind a green preflight is held at medium.

Une annonce rassurante ne réchauffe pas le feuLeçonA reassuring call does not warm the stoveLesson

Un « tout est prêt » ne vaut que s’il vient de ce qui cuisine réellement ce soir-là. Sinon, ce n’est qu’une phrase agréable au-dessus d’un feu éteint.Un health check doit être lié à ce qui s’exécute réellement, pas au nom de ce qui devrait s’exécuter. Et quand un correctif échoue deux fois sur la même forme, c’est la frontière d’abstraction qu’il faut déplacer, pas la représentation visible.An “all ready” is worth something only when it comes from what actually cooks that night. Otherwise it is merely a pleasant sentence above a cold stove.A health check must be bound to what actually executes, not to the name of what ought to. And when a fix fails twice on the same shape, move the abstraction boundary rather than the visible representation.