Aller au contenu principal

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 :

  1. détecter ;
  2. expliquer ;
  3. proposer ;
  4. 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.