Une maison qui change de comptoir et de gardeGooseA house changing its counter and guardGoose
Dans cette maison, le garde du passe ne se contente plus de regarder : il peut refuser un plat. Elle a aussi quitté son ancien comptoir pour la façon de faire partagée par le quartier. Une tournée laissée seule qui se dit terminée après s’être arrêtée reste ouverte. Pour une autre, la maison dit l’affaire réglée, mais le geste qui l’aurait réglée n’a pas été retrouvé.Goose est en pivot stratégique, pas en déclin. Les interfaces propriétaires goosed REST/SSE cèdent la place à une architecture multi-client standardisée sur ACP, tandis que les hooks passent de l’observation de lifecycle au refus de politique explicite, puis à un échec fermé configurable. Deux lignées de fiabilité restent ouvertes : un succès rapporté après échec de flux dans les recettes programmées, et un mode autonome dont l’affichage de permissions peut diverger de la capacité réellement délivrée à l’agent.In this house, the guard at the pass no longer only watches: he can reject a plate. The house has also left its old counter for the shared way used across the street. One unattended round that calls itself finished after stopping remains open. For another, the house says the matter is settled, yet the move that settled it has not been found.Goose is in a strategic pivot, not a decline. Custom goosed REST/SSE interfaces give way to an ACP-standardised multi-client architecture, while hooks move from lifecycle observation to explicit policy denial and then to configurable fail-closed behaviour. Two reliability lineages remain open: reported success after a mid-stream failure in scheduled recipes, and an autonomous mode whose permission display can diverge from the capability surface actually delivered to the agent.
La nouvelle carte se prépare ailleursRéorienté ou remplacéThe new menu is prepared elsewhereRedirected or supersededUn garde au passe apprend à dire nonChronologieA guard at the pass learns to say noTimeline
Au début, la cuisine parlait sa propre langue. Les salles se comprenaient parce qu’elles avaient grandi ensemble, et chacune gardait son comptoir.Goose expose d’abord une interface maison, goosed en REST/SSE, avec plusieurs clients d’interface distincts. L’interopérabilité dépend entièrement du produit.At first, the kitchen spoke its own language. Its rooms understood it because they had grown up together, and each kept its own counter.Goose first exposes a custom goosed REST/SSE surface with several distinct UI clients. Interoperability depends entirely on the product itself.
Puis la maison adopte la façon de faire commune du quartier. Elle ne parle plus seulement à ses propres salles : elle peut parler à celles des autres maisons.Goose bascule vers ACP, standard d’interopérabilité entre agents et clients. L’interopérabilité passe du sur-mesure produit à une surface commune.Then the house adopts the common way used across the street. It no longer speaks only to its own rooms: it can speak to rooms in other houses too.Goose moves onto ACP, the agent-client interoperability standard. Interoperability shifts from a product-specific surface to a shared one.
Deux nouvelles salles ouvrent directement sur cette façon commune : un comptoir sobre et une grande salle. Aucune ne ramène une langue à elle.Une TUI TypeScript et l’application Desktop sont construites au-dessus d’ACP. Les nouveaux clients n’ajoutent pas de dialecte propriétaire.Two new rooms open straight onto that shared way: a plain counter and a full dining room. Neither brings back a language of its own.A TypeScript TUI and the Desktop application are built on top of ACP. The new clients add no proprietary dialect.
Pour garder le passe, on commence petit. Quelqu’un note les arrivées, les départs et l’heure. Il ne change encore rien.Les premiers hooks de plugin observent le lifecycle. Ils notifient ; ils ne décident pas.Guarding the pass starts small. Someone records the arrivals, departures, and times. He changes nothing yet.The first plugin hooks observe the lifecycle. They notify; they do not decide.
Puis on lui donne le droit de dire non. Avant que le commis ne prenne le couteau, il peut arrêter le geste. Celui qui regardait décide désormais.Une politique bloquante apparaît sur PreToolUse : le hook peut refuser explicitement une action d’outil avant son exécution. Il cesse d’être un callback pour devenir une frontière d’enforcement.Then he is given the right to say no. Before the cook picks up the knife, he can stop the move. The watcher now makes the decision.A blocking policy lands on PreToolUse: the hook can explicitly deny a tool action before it runs. It stops being a callback and becomes an enforcement boundary.
Reste la question qui fâche : que faire s’il manque ? La maison a écrit ce choix, et elle peut décider que rien ne passe pendant son absence.Goose ajoute un comportement fail-closed configurable pour l’échec du hook PreToolUse lui-même. La panne du contrôle devient une décision de politique déclarée, pas un effet de bord.Then comes the awkward question: what if he is missing? The house wrote down that choice, and it can decide that nothing moves while he is away.Goose adds configurable fail-closed behaviour for failure of the PreToolUse hook itself. Control failure becomes a declared policy decision rather than a side effect.
Le travail continue sur les tournées lancées à l’avance, celles que personne ne surveille. C’est là que la maison n’a pas fini.Le durcissement de fiabilité du scheduler se poursuit. C’est la zone où se concentrent les lignées encore ouvertes.Work continues on the rounds left to run alone, the ones nobody watches. That is where the house is not finished.Scheduler reliability hardening continues. That is where the still-open lineages are concentrated.
Quand le garde manque, le passe cèdeMécanismeWhen the guard is missing, the pass gives wayMechanism
Tant qu’il regardait, son absence ne coûtait rien. Dès qu’il peut refuser, son absence devient une autorisation. Le même piège existe ailleurs : une tournée arrêtée en route peut être rayée comme servie. Et une ardoise qui annonce « tout est permis » ne dit pas quels couteaux sont réellement sur le billot.Un hook qui peut bloquer est un contrôle ; dès lors, sa propre panne est une décision d’autorisation et non un incident neutre. La convergence des noms d’événements entre harnais ne garantit rien : la politique d’échec par défaut et la sémantique des codes de sortie diffèrent matériellement. Deux divergences de même famille apparaissent à l’exécution — un type de retour normal ou une session survivante tenus pour du travail accompli, et un mode d’interface annonçant un usage large d’outils alors que la surface de capacité reçue est plus étroite.While he only watched, his absence cost nothing. Once he can refuse, his absence becomes permission. The same trap appears elsewhere: a round stopped halfway can still be marked as served. And a board saying “everything is allowed” does not tell you which knives are really on the block.A hook that can block is a control, so its own failure is an authorisation decision rather than a neutral incident. Converging event names across harnesses guarantee nothing: default failure policy and exit-code semantics differ materially. Two divergences of the same family appear at runtime — a normal return type or a surviving session taken for completed work, and a UI mode advertising broad tool use while the delivered capability surface is narrower.
Une règle pour le soir où le garde manqueRéponseA rule for the night the guard is missingResponse
La maison a écrit ce qui se passe quand le garde du passe manque, et ce choix peut être réglé. Pour le reste, il y a des consignes, pas encore de preuve. Une tournée laissée seule ne doit dire « terminée » que si le plat est vraiment sorti. Et avant de croire une ardoise, on compte les couteaux sur le billot.La réponse livrée est double : refus de politique explicite sur PreToolUse, et comportement fail-closed configurable quand le hook échoue lui-même. Les deux lignées de fiabilité n’ont produit que des pratiques — le succès d’un agent non surveillé doit représenter du travail accompli, pas une session survivante ni un type de retour normal, et le harnais doit exposer puis vérifier le jeu d’outils et de permissions réellement délivré à l’agent en cours d’exécution. La migration de protocole, elle, se lit comme un signal de stratégie : observer quelles interfaces propriétaires sont supprimées une fois le remplacement standardisé mûr.The house wrote down what happens when the guard at the pass is missing, and that choice can be set. For the rest there are rules, not proof yet. A round left alone may only say “finished” if the plate actually went out. And before believing a board, count the knives on the block.Two responses actually shipped: explicit policy denial on PreToolUse, and configurable fail-closed behaviour when the hook itself fails. The two reliability lineages produced practices only — unattended success must represent completed work rather than a surviving session or a normal return type, and the harness should expose and verify the tool and permission set genuinely delivered to the running agent. The protocol migration reads as a strategy signal: watch which custom interfaces get deleted once the standards-based replacement matures.
La maison tourne, deux réparations restent à prouverÉtat actuelThe house is running; two repairs remain unprovenCurrent state
La maison change de cap, elle ne s’éteint pas. La tournée laissée seule reste signalée et inexpliquée, avec une confiance moyenne. L’ardoise est marquée réglée, sans geste retrouvé ; la réparation ne peut être dite faite ni servie. Une autre maison a vu un refus disparaître du geste, sans avertissement à l’auteur de la consigne.L’état courant est un pivot stratégique, après une phase de croissance puis une extension de périmètre ; la lecture retenue est celle d’un pivot actif, pas d’un déclin. La lignée du scheduler — recette programmée échouant en cours de flux alors que résultat, télémétrie et listing peuvent indiquer completed — est ouverte et non résolue à la date de coupure, à confiance moyenne. La lignée du mode autonome est marquée fermée complétée, mais aucun commit, PR ou release correcteur n’a été reconstitué : le résultat n’est donc requalifié ni en implémenté ni en livré. Un second projet a rapporté un refus d’outil déclaré, accepté puis omis de l’exécution effective, sans avertissement dans le validateur destiné à l’auteur.The house is changing course; it is not going dark. The unattended round remains reported and unexplained, with medium confidence. The board is marked settled without a found repair, so none can be called made or served. Another house saw a refusal disappear from the action, without warning the person who wrote the instruction.Current state is a strategic pivot, after active growth and then a scope expansion; the reading retained is an active pivot, not a decline. The scheduler lineage — a scheduled recipe failing mid-stream while result, telemetry and listing can report completed — is open and unresolved at cutoff, at medium confidence. The autonomous-mode lineage is marked closed completed, yet no correcting commit, pull request or release has been reconstructed, so the outcome is upgraded neither to implemented nor to released. A second project reported a declared tool denial accepted and then omitted from effective execution, with no warning in the author-facing validator.
Un garde qui peut refuser doit prévoir son absenceLeçonA guard who can refuse must plan for absenceLesson
Poster un garde qui peut refuser est un début. Écrire ce qui arrive le soir où il manque en fait une vraie protection. Ni l’annonce d’un menu ni le ticket rendu ne prouvent ce qui est réellement possible. Seuls les couteaux effectivement confiés, ou le plat réellement sorti, le prouvent.Tout hook bloquant a besoin d’une politique explicite pour sa propre défaillance ; sans elle, la panne du contrôle devient une approbation. Et ni un mode d’interface ni un type de retour ne prouvent la capacité effective : seuls le jeu réellement délivré, ou le travail réellement accompli, en tiennent lieu.Posting a guard who can refuse is a start. Writing down what happens on the night he is absent turns it into real protection. Neither a menu announcement nor a returned ticket proves what is truly possible. Only the knives actually handed over, or the plate actually sent out, can prove it.Every blocking hook needs an explicit policy for its own failure; without one, control failure quietly becomes approval. And neither a UI mode nor a return type proves effective capability: only the set actually delivered, or the work actually completed, does.

