De RFC à ADR : Prendre la décision et conserver le raisonnement
Un RFC concerne généralement l'atteinte d'un accord ; un ADR enregistre l'accord une fois atteint — et la raison pour laquelle les ADR pourrissent est que le débat se déroule dans les discussions de chat et les commentaires de pull-request tandis que l'enregistrement est écrit par la suite, de mémoire, par une seule personne. Pour faire fonctionner le flux RFC vers ADR afin que l'enregistrement ne découle pas du débat : énoncez la proposition comme une affirmation principale (le titre de l'ADR futur) ; ajoutez du contexte sous forme de contre-arguments séparés afin que chaque force puisse être contestée individuellement ; donnez à chaque option considérée son propre nœud frère avec ses propres avantages et inconvénients — y compris ceux qui ont été rejetés ; faites le tour des commentaires RFC sous forme de chaînes (chaînes de questions-réponses pour clarification, chaînes de révision pour objections — chacune étant un dialogue de quatre tours entre le réviseur et l'auteur de l'option, avec N réviseurs signifiant N chaînes parallèles ; chaînes de compromis pour réconcilier les divergences, où une chaîne complétée enregistre la tentative qu'elle ait résolu ou non) ; faites évaluer les options par les décideurs comme preuve de la position de la salle — l'évaluation n'est pas la décision, un humain nommé l'appelle toujours ; enregistrez les conséquences acceptées comme des enfants de l'option choisie ; et modélisez la substitution en liant une décision ultérieure à celle qu'elle remplace, en gardant l'ancienne lisible. Le semis à partir d'ADRs markdown existants ou de transcriptions lourdes en décisions fonctionne via l'extraction AI avec provenance estampillée. Limites honnêtes : cela ne remplace pas les ADR suivis par le dépôt (exportez et engagez l'enregistrement) ; il n'y a pas de champ d'état ADR intégré, donc proposé/accepté/supplanté est une convention que vous maintenez ; une chaîne complétée ne signifie pas que les parties ont convenu — ce qui est précisément ce qui rend le désaccord et l'engagement lisibles.
Un RFC concerne généralement l'atteinte d'un accord ; un ADR enregistre l'accord une fois atteint. Les ADR pourrissent parce que l'atteinte de l'accord se fait dans le chat et que l'enregistrement se fait plus tard, de mémoire. Exécutez les deux dans une seule structure :
- La proposition est une revendication fondamentale; les forces contextuelles sont séparées, des arguments pro contestables; chaque option — y compris celles rejetées — obtient son propre nœud
- Le tour RFC est des chaînes : Questions-réponses pour clarifier, Révision pour s'opposer, Compromis pour réconcilier — dialogues à quatre tours, N examinateurs = N chaînes parallèles
- La note n'est pas la décision : les décideurs évaluent comme preuve ; un humain nommé l'appelle — et écrit pourquoi, surtout contre la salle
- L'ADR est l'arbre : rien n'est transcrit, donc rien n'est perdu dans la transcription — exportez vers le dépôt si votre organisation l'exige
La décision que personne ne pouvait reconstruire
Le nouveau responsable technique pose une question raisonnable : pourquoi chaque service communique-t-il avec le système de facturation via cette file d'attente ? Il y a un ADR — ADR-014, quatre phrases, rédigé il y a onze mois. Contexte : "nous avions besoin d'une intégration de facturation fiable." Décision : "utiliser la file d'attente." Conséquences : "une certaine latence ajoutée." C'est techniquement un enregistrement. Cela ne répond à rien.
Vous étiez là, donc vous savez ce que dit pas ADR-014 : l'argument de trois semaines à travers deux canaux Slack et un fil de discussion PR animé ; l'option API synchrone qui a perdu à cause d'une limite de taux qui a depuis été augmentée ; l'objection de l'ingénieur du personnel qui a été répondue par un benchmark que personne ne peut retrouver maintenant. Le débat a eu lieu. Le compte rendu a été écrit ensuite, de mémoire, par une personne, un vendredi.
C'est le mode de défaillance documenté, presque universel, d'une pratique véritablement bonne. Les recommandations prescriptives d'AWS et les documents Well-Architected de Microsoft recommandent tous deux les ADR — et notent tous deux la douleur : les maintenir à jour prend du temps, et les gérer devient complexe à mesure que les équipes et les choix se multiplient. La cause profonde est structurelle : le débat et le dossier vivent à des endroits différents, donc le dossier est toujours une transcription avec perte. La solution est de les rendre au même endroit. La pratique n'est pas spécifique à l'ingénierie, ni même spécifique aux ADR. Google exige un dossier de conception — problème, approche proposée, alternatives considérées, compromis — écrit et examiné avant que des travaux techniques significatifs ne commencent, une pratique énoncée dans le propre Software Engineering at Google de l'entreprise. C'est la même discipline qu'un ADR, appliquée une étape plus tôt : l'ADR enregistre le choix qu'un dossier de conception a argumenté. Les deux échouent de la même manière pour la même raison, et les deux sont corrigés par le même mouvement — tenir l'argument là où le dossier vit, plutôt que de transcrire l'un dans l'autre par la suite. Lisez chaque étape ci-dessous comme couvrant les deux artefacts.
Pourquoi les ADR se détériorent
Une phrase tirée du matériel de la communauté ADR porte tout le diagnostic : un RFC concerne généralement l'atteinte d'un accord ; un ADR enregistre l'accord une fois atteint. Deux artefacts, deux moments — et tout ce qui se trouve entre eux fuit. Les alternatives qui étaient "évidemment" fausses ne sont pas enregistrées (jusqu'à ce qu'elles cessent d'être évidentes). L'objection qui a façonné le design final survit uniquement en tant que commentaire PR sur un fil fermé. La section contexte est écrite en dernier, de manière médiocre, par celui qui a perdu le jeu du "pas moi". Les réunions qui auraient dû produire des décisions produisent des résumés à la place, et le raisonnement qui rend une décision durable — la chose sur laquelle toute la chaîne de qualité des décisions dépend — est exactement ce que la transcription laisse de côté.
Ce dont vous avez besoin
Une discussion Argumentree par RFC. Si vous avez un corpus existant d'ADRs en markdown ou un compte rendu de réunion riche en décisions, téléchargez-le — l'extraction par IA le transforme en arguments structurés pour/contre avec les passages sources attachés, estampillés comme extraits afin que les revendications importées ne soient jamais confondues avec celles en cours (comment fonctionne l'extraction).
Étape 1–3 : La proposition, le contexte, les options
- 1Énoncez la proposition comme la revendication principale — la décision proposée, pas une question : "Nous acheminerons toutes les écritures de facturation via une file d'attente durable." Cette phrase est le titre de l'ADR futur. Point de contrôle : la racine existe, une phrase, rédigée par le proposeur.
- 2Contexte en tant qu'arguments pro séparés. Chaque force qui rend la décision nécessaire — l'exigence de fiabilité, la limite de taux du système de facturation, le mandat d'audit — est son propre argument sous la racine. Un paragraphe "Contexte" monolithique ne peut pas être contesté ; trois revendications de contexte séparées peuvent chacune être remises en question, confirmées ou rejetées individuellement. Point de contrôle : ≥2 arguments de contexte, chacun une force.
- 3Chaque option a son propre nœud. La file d'attente, l'API synchrone, le travail par lots — des arguments frères, chacun avec ses propres avantages et inconvénients. Les avantages/inconvénients sont relatifs au parent, donc les inconvénients d'une option dépendent de cette option, et non de la décision. Incluez les options que vous vous attendez à rejeter : le frère rejeté est ce qui répondra à la question de l'année prochaine "pourquoi n'avons-nous pas simplement...". Point de contrôle : chaque option sur laquelle un lecteur pourrait s'interroger existe.
Étape 4–6 : Le tour RFC qui laisse une trace
Maintenant, le tour de révision — normalement la partie qui se disperse dans les discussions, les commentaires et les couloirs. Ici, cela se déroule sous trois types d'échanges structurés, chacun étant un dialogue en quatre tours entre un évaluateur et l'auteur de l'option :
Chaîne de questions-réponses — clarifier
"Que se passe-t-il pour les clients synchrones existants ?" L'auteur de l'option répond, le réviseur fait un suivi, l'auteur répond à nouveau — complet. Aucune option ne devrait laisser une question sans réponse dans la décision.
Chaîne d'examen — objet
Un évaluateur juge une option comme non valide ; l'auteur répond ; suivi ; réponse. N évaluateurs = N chaînes parallèles sur la même option — chaque objection est un échange attribuable à part entière, et non un commentaire perdu dans un fil partagé.
Chaîne de compromis — réconcilier
Deux camps se divisent ? L'un propose l'option intermédiaire à l'autre auteur. Si cela se résout, vous avez un nouveau nœud d'option. Si ce n'est pas le cas, la chaîne complétée est l'enregistrement qu'il a été essayé — ce qui vaut presque autant.
Terminé ≠ convenu
Une chaîne atteignant complété signifie que l'échange a suivi son cours — question posée et répondue deux fois — pas que les parties étaient d'accord. Gardez cette distinction ; elle va devenir importante.
Étape 7 : Décider — et ce que la note n'est pas
Les décideurs évaluent les options : une étiquette de notation pour chacune. La distribution est une preuve authentique — où la salle se tenait, sur le registre, avant l'appel. Mais la notation n'est pas la décision. Un humain nommé décide toujours, et si l'appel va à l'encontre de la distribution, le nœud de décision est l'endroit où cela est expliqué. (Qui devrait être cet humain nommé, et comment attribuer le rôle avant le débat plutôt qu'après, est une discipline à part entière — voir le tutoriel sur les droits de décision.)
La question pour votre équipe
Qui a décidé de votre dernier choix architectural — et pouvez-vous le prouver ? Pas qui était dans la réunion : qui a pris la décision, et où est son raisonnement écrit ?
Étape 8–9 : L'ADR que vous n'avez pas eu à rédiger
Voici le résultat. L'enregistrement est pas un document que vous rédigez par la suite — c'est le nœud de l'option choisie plus tout ce qui y est déjà attaché : les arguments de contexte (Contexte), les frères et sœurs rejetés (Options Considérées), les chaînes complètes (la discussion, avec les auteurs), les évaluations (où en était la salle), et l'argument de décision avec sa justification (Décision). Rien n'est transcrit, donc rien n'est perdu dans la transcription.
- 1Enregistrez les conséquences que vous acceptez. Les inconvénients connus — la latence supplémentaire, le fardeau opérationnel de la file d'attente — continuent en tant qu'enfants con de l'option choisie, reconnus par le décideur. Les écrire est ce qui en fait une décision plutôt qu'une préférence. Point de contrôle : ≥1 conséquence acceptée sur le registre.
- 2Exportez si votre organisation nécessite des ADR suivis par le dépôt. Beaucoup le font, à juste titre — l'ADR en markdown à côté du code reste l'artefact de conformité. Rédigez le résumé en quatre sections à partir de l'arbre (cinq minutes, pas un vendredi), renvoyez à la discussion pour le débat complet. Point de contrôle : l'ADR du dépôt cite l'arbre ; l'arbre contient le raisonnement.
Désaccord et engagement, sur le registre
Le modèle qu'Amazon a rendu célèbre — désaccord et engagement — a un problème de lisibilité : comment savoir plus tard que le désaccord était réel, entendu et répondu, plutôt que simplement écrasé ? La mécanique de la chaîne y répond. Une chaîne de révision qui a effectué ses quatre tours complets et s'est terminée sans accord est précisément le reçu : l'objection a été formulée, répondue, pressée et à nouveau répondue, dans les archives, avant que le dissident ne s'engage. Le dissident est documenté comme ayant été entendu — ce qui rend l'engagement ultérieur raisonnable plutôt que simplement obéissant.
Ne considérez pas l'achèvement comme un consensus.
Terminé signifie que l'échange est terminé, pas que quelqu'un a changé d'avis. Si vous signalez l'achèvement de la chaîne comme un accord, vous fabriquerez un faux consensus et brûlerez la confiance que le mécanisme existe pour construire. La lecture honnête : consulté, répondu, toujours opposé, engagé quand même — les quatre faits sont visibles.
Étape 10 : Remplacer sans supprimer
L'âge des décisions. Lorsque la limite de taux qui a tué l'option synchrone est augmentée, le bon choix est une nouvelle décision qui fait référence à celle qu'elle remplace — un nouvel argument lié au nœud de l'ADR-014, indiquant ce qui a changé. L'ancienne décision reste lisible ; son raisonnement est exactement la raison pour laquelle la nouvelle décision sait ce qu'elle annule.
Un écart honnête à gérer explicitement : il n'y a pas de champ de statut ADR intégré. Proposé / accepté / remplacé n'est pas un état de première classe sur un argument — le remplacement est modélisé par le lien, et la convention vous appartient de la maintenir. Énoncez-le dans l'accord de travail de votre équipe plutôt que de supposer que le produit l'impose.
Limitations honnêtes
- ✗Cela ne remplace pas les ADR dans votre dépôt si votre organisation les exige versionnés à côté du code. Exportez et engagez le résumé ; utilisez l'arborescence pour la partie où le markdown est mauvais — le débat.
- ✗Aucun champ de statut ADR. Proposé/accepté/supplanté est une convention de liaison que vous maintenez, pas quelque chose que le produit impose.
- ✗Une chaîne est composée de quatre tours. Un profond désaccord architectural nécessitera un appel ; la chaîne est l'enregistrement de ce qui a déjà été essayé auparavant.
- ✗Les évaluations sont une valeur unique étiquetée, pas un score multi-critères pondéré.
- ✗Cela ne fait écrire à personne un bon contexte. La structure réduit le coût d'un bon enregistrement ; elle ne fournit pas le jugement.
Leçons pratiques
- ✓Un RFC, une discussion. Résistez à l'arbre méga couvrant l'architecture de tout le quartier — les liens de supersession connectent les décisions mieux que l'imbrication ne le fait.
- ✓Semence de ce qui existe. Un procès-verbal chargé de décisions ou votre ancien dossier ADR, extrait, donne un bon départ au débat — étiqueté comme importé, afin que les arguments en direct restent distincts.
- ✓Mettez les noms des évaluateurs sur leurs chaînes et laissez-les là. L'attribution est la responsabilité ; les objections architecturales anonymes se transforment en folklore.
- ✓La section des conséquences appartient au décideur, à personne d'autre. Les inconvénients acceptés écrits par la personne qui les a acceptés ont un poids différent de celui des avertissements d'un examinateur.
ADR-014, la version qui répond
Revenons à la question du nouveau responsable technique. Dans la version reconstruite, l'ADR-014 est un nœud : la décision de la file d'attente avec sa justification, trois forces contextuelles (dont une maintenant obsolète — visiblement), un frère de l'API synchrone rejeté dont le nom fatal mentionne l'ancienne limite de taux, quatre chaînes de révision complètes, y compris celle de l'ingénieur responsable, et le benchmark attaché comme preuve. Le responsable technique lit pendant dix minutes, voit que la limite de taux a changé, et ouvre une proposition de remplacement liée à l'ancien nœud. Personne n'excave Slack. C'est toute la promesse : les chaînes atteignent l'accord, l'arbre l'enregistre — et l'enregistrement répond à des questions auxquelles vous ne saviez pas qu'il serait posé.
Sources et lectures complémentaires
- Nygard, M. (2011). Documenter les décisions architecturales. Blog Cognitect.L'essai qui a popularisé les ADR : contexte, décision, conséquences, respecté avec le code.
- AWS Prescriptive Guidance — Registres de décisions architecturales.Le cadre RFC-vs-ADR et la douleur de maintenance documentée que ce tutoriel existe pour résoudre.
- Microsoft Azure Well-Architected Framework — Registres de décisions architecturales.Pratique de l'ADR dans le contexte de l'examen Well-Architected.
- L'organisation ADR GitHub (adr.github.io).Modèles, outils et les conventions accumulées de la communauté — y compris la pratique du champ de statut que ce tutoriel modélise en liant.
Questions Fréquemment Posées
Quelle est la différence entre un RFC et un ADR ?
Un RFC (demande de commentaires) est le processus d'atteinte d'un accord : une proposition est diffusée, des alternatives sont discutées, des objections sont soulevées et répondues. Un ADR (enregistrement de décision d'architecture) consigne l'accord une fois atteint : contexte, options considérées, décision, conséquences, statut. Le mode de défaillance de les traiter comme des artefacts séparés est que tout ce qui se trouve entre eux fuit — le débat se déroule dans les discussions et les commentaires de PR tandis que le compte rendu est rédigé par la suite de mémoire. Traiter le RFC comme un arbre d'argumentation structuré fait que l'ADR découle du débat lui-même : rien n'est transcrit, donc rien n'est perdu dans la transcription.
Pourquoi les ADR deviennent-ils obsolètes ou cessent-ils d'être rédigés ?
Parce que les rédiger est un travail de transcription. Le véritable raisonnement se déroule dans les fils Slack, les commentaires de révision et les réunions ; ensuite, une personne reconstruit une section Contexte de mémoire, généralement de manière brève et en dernier. Les propres directives d'AWS et de Microsoft notent la douleur : les ADR prennent du temps à rédiger et à mettre à jour, et la gestion devient complexe à mesure que les décisions se multiplient. Les équipes ne cessent pas de croire aux ADR — elles cessent de payer la taxe de transcription. Faire en sorte que le débat et le dossier aient la même structure supprime la taxe.
Comment organisez-vous un tour de révision RFC avec un enregistrement ?
Trois mouvements structurés, chacun un dialogue de quatre tours avec l'auteur de l'option. Chaînes de questions-réponses pour clarification : question, réponse, suivi, réponse. Chaînes de révision pour objections : évaluation, réponse, suivi, réponse — avec N réviseurs ouvrant N chaînes parallèles sur la même option plutôt qu'un fil partagé, de sorte que chaque objection reste attribuable et répondue. Chaînes de compromis pour les divisions : un côté propose la position intermédiaire à l'autre, et que cela résolve ou non, la chaîne complétée enregistre qu'elle a été essayée. Le point de contrôle avant de décider : aucune option ne porte une question sans réponse, et chaque objection substantielle existe sous forme de chaîne complétée.
Comment fonctionne le principe de 'désaccord et engagement' avec les enregistrements de décision ?
La mécanique de la chaîne la rend lisible. Une chaîne de révision qui suit son cours complet — objection, réponse, suivi, réponse — et se termine sans accord est le reçu que le désaccord était réel, entendu et répondu avant que le dissident ne s'engage. De manière critique, terminé ne signifie pas convenu : cela signifie que l'échange est terminé. Rapportez la complétion comme un consensus fabrique un faux accord et détruit la valeur du mécanisme. L'enregistrement honnête montre quatre faits à la fois : consulté, répondu, toujours opposé, engagé quand même — ce qui est exactement ce qui rend l'engagement après un désaccord raisonnable.
Les enregistrements de décision devraient-ils remplacer les ADR dans le dépôt de code ?
Non — et ce tutoriel le dit explicitement. Si votre organisation exige des ADR versionnés à côté du code (beaucoup le font, à juste titre, pour la conformité et l'accès hors ligne), conservez-les : rédigez le résumé en quatre sections en markdown à partir de l'arbre en cinq minutes et reliez-le à la discussion. La division du travail est claire : l'ADR du dépôt est l'artefact de conformité durable ; l'arbre contient ce que le markdown ne gère pas bien — le débat en direct, les options rejetées avec leur raisonnement, les objections et leurs réponses, et les évaluations.
Comment marquez-vous un ADR comme remplacé ?
Par convention, et non par un domaine — et il convient d'être honnête, il n'y a pas de statut proposé/accepté/supplanté intégré sur un argument. Modélisez la supplantation en créant la nouvelle décision comme son propre argument lié à celui qu'elle remplace, en indiquant ce qui a changé (le seuil de taux augmenté, la nouvelle exigence). L'ancienne décision reste lisible — la supprimer détruirait exactement le raisonnement auquel la nouvelle décision doit se référer. Énoncez la convention dans l'accord de travail de votre équipe afin qu'elle soit maintenue délibérément.
Arrêtez de transcrire les décisions. Commencez à les conserver.
Exécutez votre prochain RFC sous forme d'arbre : options avec leur raisonnement, objections sous forme de chaînes de réponses, et un ADR qui s'écrit tout seul.
Commencez un essai gratuit de 14 jours