Le veilleur du passe peut maintenant arrêter un platDe callbacks non bloquants au veto, puis à une politique d’échec configurableThe watcher at the pass can now refuse a plateHooks went from non-blocking observation to explicit veto, then to a configurable failure policy
L’homme posté au passe notait d’abord seulement les assiettes sorties. On lui a ensuite permis d’en retenir une. La maison a maintenant écrit ce que devient le service lorsque ce veilleur lui-même flanche.Les hooks de Goose ont d’abord observé les événements du cycle de vie sans bloquer l’exécution. PreToolUse a ensuite reçu une sémantique de blocage explicite, livrée dans le produit actif. Le comportement en cas d’échec du hook lui-même est devenu configurable, séparant refus de politique et indisponibilité du garde.The watcher at the pass once only recorded plates leaving. Later, he was allowed to hold one back. The house has now written what happens to service when that watcher himself fails.Goose hooks began as non-blocking callbacks over lifecycle events. PreToolUse later acquired explicit blocking semantics, and that behavior ships in the active product. Behavior when the hook itself fails is now configurable, separating a policy denial from an unavailable guard.
Vérifier le platValidation et preuvesChecking the dishValidation and evidenceLe greffier du passe devient gardeChronologieThe pass clerk becomes a guardTimeline
Au début, le commis du passe note seulement les départs. Il ne retient jamais une assiette.Première étape : observation seule des événements du cycle de vie, sans interruption de l’exécution.At first, the pass clerk only records departures. He never holds a plate.Stage one is pure observation: lifecycle events are read, execution is never interrupted.
Ensuite, la maison lui confie un vrai pouvoir. Il peut dire non avant qu’une assiette quitte le passe.PreToolUse acquiert ensuite une sémantique de blocage explicite, applicable avant l’appel d’outil.Then the house gives him real authority. He may say no before a plate leaves the pass.PreToolUse then gained explicit blocking semantics, applied ahead of the tool call.
Ce droit de retenir les plats est réellement utilisé pendant le service. Il ne reste pas dans un cahier de projets.Ce comportement est livré dans le produit actif, et non resté à l’état de proposition.The right to hold plates is used during real service. It did not remain in a planning book.That behavior is shipped in the active product rather than left as a proposal.
Une nouvelle panne apparaît : si le garde se tait, la brigade doit-elle servir toutes les assiettes ? Les laisser partir sans décision peut être dangereux.Un mode de panne apparaît alors : le hook d’autorisation peut lui-même échouer, et laisser passer par défaut n’est pas sûr.A new failure appears: if the guard goes silent, should the brigade serve every plate? Sending them out without a decision may be dangerous.A failure mode surfaced: the authorization hook can itself fail, and defaulting to allow is unsafe.
La maison écrit alors deux lignes différentes. L’une dit « plat refusé », l’autre « garde muet ».La politique d’échec devient configurable et distingue explicitement un refus de politique d’une panne du hook.The house then writes two different lines. One says “plate refused,” the other “guard silent.”Failure policy became configurable, and it now separates a denial issued by policy from an outright hook failure.
Quand le garde tombe, le service a deux problèmesMécanismeWhen the guard fails, service has two problemsMechanism
Quand le commis ne faisait qu’écrire, son absence laissait seulement une page blanche. Dès qu’il peut bloquer une assiette, son silence menace aussi le service. La règle pour ce soir-là doit exister avant de lui donner ce pouvoir.Dès qu’un hook peut opposer un veto, le harnais doit définir le comportement lorsque le mécanisme de veto est indisponible. L’enforcement ajoute une panne de second ordre : celle du garde lui-même, distincte de l’action qu’il devait contrôler.While the clerk only wrote notes, his absence left a blank page. Once he can block a plate, his silence also threatens service. The rule for that night must exist before he receives that power.Once a hook can veto an action, the harness owes a defined behavior for the case where the veto mechanism is unavailable. Enforcement adds a second-order failure mode — the guard’s own failure, which is not the same event as the action it was meant to gate.
Le sort des assiettes se décide avant la panneRéponseDecide what happens to plates before the guard failsResponse
Si le garde ne répond plus, l’ardoise doit montrer « garde en panne », jamais « plat refusé ». La maison choisit d’avance si elle ferme le passe, continue ou ralentit. Elle ne tranche pas au milieu du coup de feu.Exposer la panne du hook comme un état de première classe, lisible et distinct d’un refus. La politique choisit alors délibérément fail-open, fail-closed ou mode dégradé, au lieu d’hériter d’un défaut implicite.If the guard stops answering, the board must say “guard failed,” never “plate refused.” The house chooses in advance whether to close the pass, continue, or slow down. It does not decide in the dinner rush.Expose hook failure as first-class state, legible and distinct from a denial. Policy then picks fail-open, fail-closed or degraded operation deliberately, instead of inheriting whatever the implicit default happened to be.
La maison a écrit la règle du poste muetÉtat actuelThe house wrote a rule for a silent passCurrent state
Ce poste ne sert plus seulement à observer. Il retient vraiment des assiettes, et la maison a prévu ce qui arrive s’il tombe en panne. Ce passage du carnet au pouvoir est clairement établi.Goose est l’un des exemples les plus nets de hooks devenus un véritable control plane plutôt que des callbacks de confort. Le pouvoir de blocage est livré, et la politique d’échec est énoncée au lieu d’être subie.This station no longer merely watches. It truly holds plates, and the house has planned what happens if it fails. The move from record keeper to authority is clearly established.Goose is among the clearest cases of hooks maturing into a genuine control plane rather than convenience callbacks. Blocking authority ships, and the failure policy is stated rather than assumed.
Un garde doit avoir une règle pour sa propre panneLeçonA guard needs a rule for his own failureLesson
Le chef qui place un garde au passe doit aussi écrire quoi faire lorsque ce garde se tait. Sans cette consigne, le service dépend d’un choix que la brigade n’a jamais fait.Un hook ne devient un garde-fou qu’une fois sa propre sémantique d’échec définie. Tant que le comportement en cas d’indisponibilité du garde reste implicite, l’autorité de blocage repose sur un défaut que personne n’a choisi.A chef who places a guard at the pass must also write what to do when that guard goes silent. Without that order, service depends on a choice the brigade never made.A hook only counts as a guardrail once its own failure semantics are defined. Until the unavailable-guard case is specified, blocking authority rests on a default nobody chose.

