Méthode
Comment je travaille, montré sur pièces. Chaque extrait vient d’un de mes dépôts, tel qu’il y est écrit.
Une règle porte sa date et son motif
Chaque règle de mes dépôts est écrite avec l’incident qui l’a produite et la date où il est arrivé.
Colonnes de grille : une colonne unique s’écrit minmax(0, 1fr), jamais 1fr. Avec 1fr, un mot long élargit la page au-delà de l’écran ; c’est arrivé le 20 septembre 2026 avec la police du navigateur à 200 %.
Une règle qui change s’amende dans le texte, avec sa date. Une décision périmée reste au registre, marquée comme telle.
Les contrôles tournent à chaque build
Un contrôle qui compte tourne à chaque construction et arrête tout au premier écart : un style en ligne, un lien vers un fichier absent, un graphique dont deux valeurs différentes seraient à la même hauteur, ou le nombre de pages annoncé dans la documentation quand il ne correspond plus au site.
if chr(8212) in corps:
erreurs.append(f"{nom} : tiret cadratin")
if re.search(r"\bpas\b[^.;:<]{1,40}\bmais\b", corps):
erreurs.append(f"{nom} : tournure « pas X mais Y »")Ce site fait de même. Son build échoue sur un style en ligne, un script, un appel à un service tiers, un marqueur d’écriture automatique, une image sans dimensions, ou un nom que je me suis engagé à ne pas publier.
$ python -m pipeline.gen_site
...
outils.html 63 Ko sans images, 0 Ko d'images
Recette en echec :
- outils.html : tiret cadratin : marqueur d'IA,
liste fermee du 7 septembre 2026
...Anglais C2 — pas scolaire mais courant...
- outils.html : tournure « pas X mais Y » :
marqueur d'IA numero 2
...Anglais C2 — pas scolaire mais courant...
code de sortie 1Les décisions se consignent
Un registre à quatre colonnes, tenu au fil de l’eau : 149 lignes sur la chaîne éditoriale de sortants.fr.
- Date
- 9 septembre 2026
- Décision
- Aucun lien publié ne porte de paramètre de suivi. La convention du 7 septembre est abandonnée
- Motif
- Un lien tracé colle un identifiant à l’adresse que le lecteur copie et repartage
- Document affecté
- plan/formats.md, section 4
Les écarts aussi. Chaque non-conformité porte sa gravité, son origine et son traitement : 30 closes sur ce même projet, dont 28 trouvées au contrôle interne.
Un commit dit ce qui change pour quelqu’un
fix(contact): un envoi sans jeton passe par une page de confirmationfix(villes): un tiret orphelin nommait une ville « - Bourges »fix(contact): retirer les anciens leurres site_web et confirmation_email
Le corps d’un commit de correction suit le même plan : le problème mesuré, la réponse, l’effet chiffré, ce qui reste ouvert.
Travailler avec des assistants d’IA
Chaque dépôt a un fichier de règles à sa racine, lu par tout assistant qui y touche, et par moi dans six mois : la mission, des règles numérotées, la direction artistique, les interdits. Dix-sept dépôts en portent un.
- Tout choix non trivial se soumet, avec les options, leur coût et une recommandation. L’assistant ne tranche pas à ma place sur ce qui engage l’image, le périmètre ou une dépense.
- Aucun fait inventé. Sur le site de l’association, la première règle vient d’un incident : trois témoignages sans source étaient entrés dans un commit de mise en forme.
- Une liste fermée de douze marqueurs d’écriture automatique, chacun avec des exemples écartés tirés de mes propres brouillons, et une procédure de relecture en quatre passes.
- Des gardes mesurées sur toute sortie de modèle. Sur l’assistant, la requête écrite par le modèle est relue par l’analyseur de la base. Sur le jeu, un maillage généré passe douze mesures avant d’entrer.
Écrire pour celui qui reprendra
Le projet repose sur une personne seule. Ce document est ce qui l’empêche d’être un point de défaillance unique.
Le mode d’emploi de sortants.fr commence par la liste des actifs, avec une colonne : perte irréversible, oui ou non. Un seul l’est, le nom de domaine. Tout le reste se reconstruit en trente minutes.