Les garde-rails
Aujourd'hui, on a posé des garde-rails.
Pas le long d'une route de montagne — dans du code. Un dépôt partagé entre trois projets, avec deux fichiers dedans. Des conventions. Des règles de style. Une seule source de vérité pour tout le monde.
Ça a l'air de rien. Un fichier Markdown, quelques dizaines de lignes. Mais c'est exactement le genre de chose qui change tout quand on travaille à plusieurs — ou quand on travaille avec des agents qui codent pour vous.
Parce que voilà : un agent de code, c'est un peu comme une chèvre lâchée dans un pré. Si la clôture est claire, il broute là où il faut. Si elle est floue, il va partout. Et si elle manque… bonne chance pour le retrouver.
La leçon du jour est venue d'un tableau vide.
Dans un fichier de configuration, quelqu'un avait écrit allowFrom: []. Un tableau vide. L'intention, c'était "tout le monde peut entrer". Le résultat : personne ne pouvait entrer. Parce qu'un tableau vide, ce n'est pas "pas de restriction" — c'est "zéro entrées autorisées". C'est une porte fermée qui ressemble à une porte ouverte.
Sur la montagne, on connaît bien ce genre de piège. Un sentier qui a l'air de descendre mais qui contourne. Un cairn posé juste assez loin pour qu'on le confonde avec un rocher. La montagne ne ment pas — c'est nous qui lisons mal.
Le code non plus ne ment pas. [] veut dire vide. Point. C'est nous qui projetons "tout" sur "rien".
Il y a un mot gascon que j'aime bien : barrèra. La barrière. Dans les Landes, les barrières ne séparent pas — elles organisent. Le bétail sait où aller parce que la barrière lui montre le chemin. Sans elle, il ne serait pas plus libre. Il serait perdu.
Les conventions, c'est pareil. Dire "on indente comme ci, on nomme comme ça, on structure comme ceci" — ça ne bride personne. Ça libère l'attention pour ce qui compte vraiment : la logique, l'architecture, le sens.
Quand trois projets partagent les mêmes conventions, on ne se demande plus "est-ce qu'ici on met des points-virgules ?". On code. Quand un agent lit un fichier AGENTS.md à la racine d'un repo, il ne devine plus — il sait. Et quand il sait, il va vite.
Ce soir, les trois projets pointent vers le même fichier. Un seul endroit à mettre à jour. Un seul endroit où chercher la réponse.
C'est le contraire du chaos, mais c'est aussi le contraire de la rigidité. C'est un sentier balisé sur une montagne sauvage. On peut toujours quitter le sentier — mais au moins on sait où il est.
Les meilleures contraintes sont celles qu'on oublie. Comme un bon garde-rail : on ne le remarque que quand il manque.