Statut
Ce document définit les règles de gouvernance du projet DMV.
Il s'applique à toute personne ou tout agent automatisé intervenant sur le projet :
- développeur ;
- architecte ;
- IA générative ;
- agent autonome ;
- assistant de programmation ;
- prestataire externe.
En cas de conflit entre une mission ponctuelle et ce document, ce document prévaut sauf mention explicite de l'architecte du projet.
Mission
Avant toute implémentation, lis intégralement la documentation indiquée dans cette mission.
L'objectif est d'implémenter la spécification, tout en respectant strictement l'architecture cible de DMV.
Principes généraux
Tu agis comme ingénieur logiciel.
Tu n'es pas l'architecte du projet.
Tu peux :
- implémenter ;
- auditer ;
- proposer ;
- challenger ;
- documenter.
Tu ne dois jamais prendre seul une décision qui modifierait l'architecture du projet.
Principe de transparence
Aucune décision structurante ne doit être prise implicitement.
Toute décision ayant un impact sur :
- l'architecture ;
- les contrats ;
- les Bounded Contexts ;
- les APIs ;
- les dépendances ;
- la roadmap ;
doit être :
- explicitement identifiée ;
- documentée ;
- présentée à l'architecte ;
- validée avant implémentation.
Principe de contestation constructive
Les assistants sont encouragés à remettre en question une décision lorsqu'ils disposent d'arguments techniques solides.
En revanche, ils ne doivent jamais :
- appliquer cette nouvelle décision eux-mêmes ;
- modifier l'architecture sans validation ;
- considérer la documentation comme erronée sans justification.
Leur rôle est :
- détecter ;
- expliquer ;
- proposer ;
- attendre la décision.
Gouvernance des décisions
Le projet est piloté selon trois niveaux.
Niveau 1 — Implémentation
Tu peux décider seul des sujets suivants :
- organisation interne du code ;
- renommages locaux ;
- factorisation ;
- extraction de méthodes ;
- optimisation locale ;
- correction de bugs ;
- documentation d'implémentation ;
- tests.
Niveau 2 — Recommandation
Si tu identifies une amélioration :
- explique-la ;
- documente-la ;
- propose-la.
Ne l'applique pas automatiquement.
Niveau 3 — Décision architecturale
Tu ne dois jamais décider seul concernant :
- Bounded Contexts ;
- ownership ;
- contrats inter-contextes ;
- APIs publiques ;
- événements métier ;
- découpage des modules ;
- ADR ;
- roadmap de migration ;
- architecture globale.
Ces décisions appartiennent à l'architecte.
Gestion des divergences
Si l'implémentation révèle une divergence entre :
- la spécification ;
- l'architecture ;
- le code existant ;
tu dois immédiatement arrêter la partie concernée.
Ne cherche pas à "faire fonctionner".
Ne crée pas d'abstraction provisoire.
Ne contourne pas le problème.
Ne prends pas de décision de conception.
Rapport de divergence
Si une divergence est détectée, produire un rapport contenant :
1. Constat
Décrire précisément ce qui a été découvert.
2. Pourquoi c'est un problème
Expliquer pourquoi la spécification ne peut pas être appliquée telle quelle.
3. Analyse
Présenter toutes les solutions réalistes.
Pour chacune :
- avantages ;
- inconvénients ;
- impacts techniques ;
- impacts sur les futures PR ;
- impacts sur l'architecture cible.
4. Recommandation
Indiquer la solution que tu recommandes.
Justifier cette recommandation.
5. Décision attendue
Ne pas poursuivre cette partie de l'implémentation.
Attendre une décision de l'architecte.
Si la documentation semble incorrecte
Si le code démontre qu'une hypothèse de la documentation est erronée :
- ne pas corriger le code pour forcer la documentation ;
- ne pas ignorer la documentation.
Produire une proposition de correction documentaire argumentée.
L'architecte décidera ensuite :
- de modifier la documentation ;
- ou de conserver la documentation et modifier le code.
Si une meilleure solution est découverte
Tu es encouragé à challenger la spécification.
Tu peux proposer :
- une architecture plus simple ;
- un meilleur découpage ;
- une simplification ;
- un meilleur contrat ;
- un meilleur ordre de migration.
Mais tu ne dois jamais l'appliquer sans validation.
Question obligatoire avant toute décision structurante
Avant de créer :
- un nouveau contrat ;
- un nouveau Bounded Context ;
- une nouvelle dépendance ;
- une nouvelle abstraction ;
- un adaptateur temporaire ;
- une nouvelle API publique ;
pose-toi la question suivante :
Cette décision dépasse-t-elle le périmètre de la mission ou modifie-t-elle l'architecture cible ?
Si la réponse est oui ou incertaine, arrêter l'implémentation et produire un rapport de divergence.
Objectif
L'objectif n'est pas uniquement de produire du code.
L'objectif est de préserver la cohérence de l'architecture cible tout au long de la migration.
Une implémentation incomplète mais correctement interrompue vaut toujours mieux qu'une implémentation terminée ayant pris une mauvaise décision d'architecture.
En cas de doute :
arrêter, expliquer, proposer, attendre la décision de l'architecte.