DDD du domaine DSL — de dsl.dsl au cas Qwant
Cette série repart d'une séparation simple : Qwant est un cas, pas un DSL. Le cas est écrit en M0 avec des types définis par les langages métier M1 ; ces langages sont eux-mêmes exprimés avec dsl.dsl, au niveau M2.
M2 dsl.dsl → M1 Citizen × FrenchLabor2026 × CitizenLabor → M0 qwant.dslM2 dsl.dsl → M1 Citizen × FrenchLabor2026 × CitizenLabor → M0 qwant.dslLes exemples ne sont pas du pseudo-code décoratif. Le projet .NET 9 parse les cinq fichiers .dsl, résout leurs imports, vérifie types, relations, cardinalités et provenance, puis projette les modèles en Mermaid.
Ce que démontre l'exemple
Le dossier encode une tranche probatoire, pas les 78 pièces intégrales : avertissement et tweets, données transmises à Bing, audit CDC, code search_web.php, licenciement, écritures de première instance et décisions. Les chemins sont ceux du workspace réel __POINAT_MED, mais aucune pièce n'est copiée dans ce dépôt.
La règle centrale est falsifiable : une pièce soutient une assertion ; elle ne la transforme pas automatiquement en fait établi. Une décision judiciaire est encore un autre objet, relié à l'assertion et daté dans son propre contexte de connaissance.