ADR 014
StatutStatus ActifActive
DateDate 2026-05-28
DécideursDecision makers Tech Lead, Design System Lead

ADR-014 — Choix de Conventional Commits pour les messages de commit

Date : 2026-05-28 Statut : ✅ Actif Décideurs : Tech Lead, Design System Lead Type: contract Chemin logique: decisions/ADR-014-conventional-commits.md Lecture avant: AGENTS.md, DESIGN.md, .claude/rules/git-workflow.md Relations: .claude/rules/git-workflow.md, decisions/ADR-004-gouvernance-humaine.md, decisions/ADR-012-audit-tokens-script.md


Contexte

L'historique git est l'une des sources de mémoire décisionnelle du système. Un commit qui dit fix stuff ne transmet aucune information exploitable — ni par un humain qui fait une revue, ni par un agent qui cherche quand un comportement a changé, ni par un pipeline CI qui décide si un changement nécessite une revue de gouvernance.

Dans un système agentique, les commits ont un rôle supplémentaire : ils sont des événements lisibles par machine. Un commit de type token peut déclencher automatiquement une revue de gouvernance. Un commit de type a11y peut déclencher une re-exécution des tests axe-core en priorité.

La question posée était :

Comment rendre les messages de commit exploitables par les agents et les pipelines CI, tout en restant lisibles et sans friction pour les humains ?


Décision

Adoption de la spécification Conventional Commits avec un type supplémentaire spécifique au système de design : token.

Format : type: [description courte]

Les types autorisés dans ce projet :

TypeUsageDéclencheur CI
featNouveau composant ou fonctionnalité
fixCorrection de bug
tokenModification de tokensRevue de gouvernance obligatoire
docsDocumentation uniquement
a11yAmélioration accessibilitéRe-run axe-core en priorité
styleChangement de style sans impact fonctionnel
refactorRefactoring sans changement de comportement
testAjout ou modification de tests
choreMaintenance, dépendances
ciConfiguration CI/CD

Le type token est une extension locale à Conventional Commits. Il signale explicitement qu'une modification de fichier de tokens est incluse — déclenchant une revue de gouvernance et potentiellement un TCR.


Alternatives rejetées

AlternativeRaison du rejet
Messages de commit libresNon parsables par machine. Un agent qui cherche "quand color.action.primary a-t-il changé ?" doit lire chaque message de commit. Avec Conventional Commits, il filtre par token(semantic).
Semantic Versioning dans les commits (ex: v1.2.3)Versionner chaque commit individuellement est lourd et duplique l'information portée par les tags git. Conventional Commits + git tags couvrent ce besoin sans verbosité.
Préfixes maison ([DS], [TOKEN], [FIX])Sans spécification partagée, les préfixes dérivent rapidement : [DS-fix], [ds fix], [FixDS]. Conventional Commits est une spécification publique avec des outils de validation (commitlint) — pas besoin d'écrire et maintenir la nôtre.
GitmojiExpressif visuellement mais difficile à filtrer par machine (🐛 pour fix, pour feat). L'équipe peut ajouter des emojis en complément mais pas en remplacement du type textuel.
AngularJS commit conventionConventional Commits est directement dérivé de la convention Angular et en est la standardisation publique. Adopter la spécification standard plutôt que la version d'un framework spécifique.

Conséquences

Pour les agents IA :

tokens/*.json est modifié, a11y si la modification cible l'accessibilité

un agent qui écrit token(semantic): ... sait qu'il déclenche une revue humaine

git log --grep="^token" -- tokens/semantic.json → tous les changements de tokens sémantiques

Pour le CI/CD :

au Principal Designer, check de TCR associé, audit de dérive automatique

pas besoin de faire tourner Chromatic pour un changement de documentation

Pour les humains :

dit immédiatement quelle gouvernance s'applique

Pour la mémoire du système (ADR-013) :

decisions/ constituent une trace complète : le quoi (commit), le pourquoi (ADR/TCR)

Coût accepté :

ne le connaissent pas et peuvent l'ignorer


Incidents ou déclencheurs

Décision fondatrice. Le déclencheur indirect : lors de tests avec des agents génératifs sur l'historique git du projet, les agents ne pouvaient pas répondre à "quand ce token a-t-il été modifié ?" avec des messages de commit libres. Avec Conventional Commits, la même question devient une requête git log structurée.

← ADR-013 ADR-015 →