SOLID s'applique aussi au langage
La responsabilité unique interdit à Evidence de porter une conclusion juridique. L'ouverture/fermeture permet d'ajouter un nouveau projecteur via IDslProjector. L'inversion des dépendances place IDslSourceLoader et IEvidenceCatalog dans le Core ; YAML et le disque restent des adapters.
DRY n'efface pas les bounded contexts
DRY signifie ici qu'une règle possède une source de vérité à l'intérieur de son contexte. La provenance est définie une fois dans Citizen. En revanche, deux contextes autonomes peuvent employer des structures semblables sans partager leur sens. Forcer un Status universel entre preuve, contrat et procédure créerait un couplage plus grave que la duplication de quelques valeurs.
Invariants testés
La suite exécutable vérifie notamment :
- l'auto-description de M2 ;
- la composition des trois langages M1 ;
- le statut M0 de Qwant ;
- les imports, types, cardinalités, cycles et références ;
- la provenance obligatoire de chaque pièce ;
- la séparation entre P31, l'assertion de dissimulation et le motif de 2022 ;
- le chargement du module IDE seulement sur son langage cible ;
- le caractère déterministe des projections Mermaid.
Limites juridiques
Le modèle sait dire « cette assertion dispose de telles pièces et a reçu telle appréciation ». Il ne sait pas déterminer la force persuasive d'un témoignage, reconstituer le contradictoire absent ou garantir une décision contrefactuelle.
Les simulations futures devront donc rester des Hypothesis, fournir leurs suppositions et produire un rapport reproductible. Un éventuel agent IA recevrait ce contexte sourcé par un port dédié ; il ne deviendrait ni source de droit ni juge.
Exécuter l'exemple
cd content/blog/ddd-dsl/assets
dotnet test DddDsl.slnx
dotnet run --project src/DddDsl.Cli -- validate examples/qwant.dslcd content/blog/ddd-dsl/assets
dotnet test DddDsl.slnx
dotnet run --project src/DddDsl.Cli -- validate examples/qwant.dslLa série se termine ainsi sur son point de départ : le DSL devient un domaine d'ingénierie à part entière, tandis que Qwant reste exactement ce qu'il doit être — un cas concret, contestable et traçable.