La signature
META(Ex × Ty) n'est pas une métaphore. C'est littéralement une signature de type au sens des langages typés, et c'est l'index qui distingue les cadres juridiques spécifiques générés par le système. Chaque valeur concrète de la signature désigne un cadre distinct, avec son vocabulaire propre, ses spécifications propres, sa juridiction d'application propre. La signature elle-même est stable ; les cadres qu'elle indexe sont multiples, spécifiques, et coexistent.
Décomposition formelle :
META(Ex × Ty) = un cadre juridique spécifique pour un (lieu, tradition, époque, auteur) précis
Ex = (GeographicScope, LegalTradition)
GeographicScope ∈ {France, EU, UK, Germany, Quebec, NewCaledonia, RomeAntique, World, ...}
LegalTradition ∈ {Codified, CommonLaw, Roman, Canon, Customary, Hybrid, ...}
Ty = Time
Année unique : 1995, 2026
Période : 1988-1995
Règne / mandature : MoyenAge, JulienPaul, MitterrandIIMETA(Ex × Ty) = un cadre juridique spécifique pour un (lieu, tradition, époque, auteur) précis
Ex = (GeographicScope, LegalTradition)
GeographicScope ∈ {France, EU, UK, Germany, Quebec, NewCaledonia, RomeAntique, World, ...}
LegalTradition ∈ {Codified, CommonLaw, Roman, Canon, Customary, Hybrid, ...}
Ty = Time
Année unique : 1995, 2026
Période : 1988-1995
Règne / mandature : MoyenAge, JulienPaul, MitterrandIIÀ cette signature s'ajoute, dans la convention de nommage des packages d'instance, le composant ${Author} — qui n'est pas dans la signature formelle stricte mais qui en est la trace politique opérationnelle (cf. Partie 2 et Partie 16).
Pourquoi deux axes pour Ex
La structure Ex = (GeographicScope, LegalTradition) mérite une explication. Pourquoi ne pas se contenter d'un seul axe géographique ?
Parce que l'espace géopolitique et la tradition juridique varient indépendamment. Le Royaume-Uni est sur l'île britannique, mais sa tradition juridique est CommonLaw. La France est en Europe, mais sa tradition est Codified. Le Québec est en Amérique du Nord (où domine le CommonLaw), mais son droit civil est Codified (hérité du Code Napoléon). La Nouvelle-Calédonie est administrativement française mais elle a un droit coutumier kanak qui est Customary, distinct du droit codifié français qui s'y applique en parallèle. Le Vatican est un État européen mais son droit est Canon. La Rome antique sous Julien Paul (jurisconsulte du IIIe siècle) avait un droit Roman distinct du Codified continental moderne qui en descend.
Si on n'avait qu'un seul axe géographique, on perdrait la possibilité de typer un même territoire par plusieurs traditions concurrentes. Or c'est précisément ce qu'il faut pour rendre opérationnels des cadres comme Law.NewCaledonia2026.Customary.${Author}.Dsl (droit coutumier kanak) coexistant avec Law.NewCaledonia2026.Codified.Etalab.Dsl (droit français appliqué au territoire). Les deux cadres décrivent la même réalité géographique, mais selon deux traditions juridiques différentes, et ils peuvent — et doivent — être analysés en parallèle pour les cas où les deux droits se rencontrent.
Pourquoi un axe Time
Le Time mérite un développement à part. Sans lui, on aurait un système formel qui prétendrait à l'éternité, ce qui violerait directement la leçon centrale de Whitehead (cf. Partie 3) : la réalité change, donc tout cadre formel doit savoir qu'il est paramétré par un temps qui le déborde.
Concrètement, le Time capture trois choses différentes selon l'usage. Une année unique (2026, 1995, 1804, 1958) désigne un état du droit à une date de référence. Une période (par exemple 1988-1995) désigne une fenêtre où le droit était stable sur les axes qui intéressent le cadre. Un règne ou une mandature (MoyenAge, JulienPaul, MitterrandII) désigne une époque historique reconnue dans la périodisation conventionnelle de la juridiction concernée. Les trois formes coexistent, et c'est à l'auteur du cadre de choisir celle qui convient à son objet.
L'avantage immédiat est qu'on peut faire des time-travel queries sur le droit (cf. Partie 13) : dotnet add package Law.France2024.Etalab.Dsl --version 4.7.2 permet de retrouver l'état du droit français tel qu'il aurait été le 1er janvier 2024. Pour un chercheur en sciences juridiques ou un historien du droit, c'est une révolution méthodologique : la reproductibilité scientifique du droit, jamais possible auparavant. Pour un avocat plaidant un cas survenu il y a cinq ans, c'est la garantie de pouvoir compiler son cas contre le droit de l'époque et non contre le droit actuel.
LawDslGenerator paramétré par toute la signature
LawDslGenerator (le méta-générateur juridique, traité en détail en Partie 7) est paramétré par tout ce qui fait varier le vocabulaire d'attributs. C'est-à-dire toute la signature META(Ex × Ty), mais en pratique il ne s'active que quand au moins un axe (GeographicScope, LegalTradition, Time) modifie le vocabulaire eux-mêmes — pas seulement leurs valeurs concrètes.
Le tableau suivant illustre cette distinction pour chaque axe :
| Axe | Exemple où il fait varier le vocabulaire | Exemple où il ne fait pas varier |
|---|---|---|
| Tradition | Codified → CommonLaw : [Article] devient [Statute], [CaseLaw], [Precedent] |
France 1995 → France 2026 : tradition codifiée stable, vocabulaire stable |
| Espace | France métropolitaine → Nouvelle-Calédonie : ajout de [CustomaryRight]. France → UE : ajout de [Regulation], [Directive] |
France métropolitaine → France métropolitaine : pas de changement |
| Temps | Code Napoléon 1804 → Code civil 2026 : disparition de [PaternalAuthority], [Servitude] ; apparition de [PersonalData], [SmartContract] |
France 1995 → France 2026 : vocabulaire stable, seuls les contenus changent |
Cette distinction est cruciale parce qu'elle évite la prolifération inutile de cadres. Si on avait besoin d'un cadre Law.${Space}${Time}.${Author}.Dsl pour chaque combinaison concrète sans distinguer les variations de vocabulaire des variations de contenu, on multiplierait à l'infini des cadres qui partagent en réalité les mêmes attributs avec des contenus différents — ce qui serait à la fois redondant et coûteux à maintenir. La règle pratique est : on génère un nouveau cadre quand un attribut apparaît, disparaît ou change de signature ; sinon, on enrichit le contenu d'un cadre existant.
Deux fréquences de regénération radicalement différentes
Une conséquence importante de la distinction vocabulaire/contenu est que les deux familles de cadres Common et Law se regénèrent à des rythmes très différents :
| Composant | Fréquence | Déclencheur |
|---|---|---|
Common.${Space}${Time}.${Author}.Dsl |
Élevée — quotidienne ou hebdomadaire | Toute publication au JO ; toute jurisprudence majeure ; tout décret |
Law.${Space}${Time}.${Author}.Dsl |
Basse — annuelle au plus, parfois jamais sur 50 ans | Refonte structurelle d'un Code ; révolution juridique ; révision constitutionnelle ; transition métacratique forte |
CommonDslGenerator peut tourner en CI quotidien : chaque publication au Journal Officiel ajoute potentiellement un nouvel actif (SocialHousingPLAI2026, par exemple), une nouvelle procédure (OnlineCAFRequest2026), une nouvelle subdivision géographique (une commune fusionnée). La regénération est fréquente mais peu invasive, parce qu'elle n'ajoute que du contenu dans un vocabulaire stable.
LawDslGenerator tourne rarement — peut-être cinq à dix fois en trente ans pour la France. Il ne tourne que quand le vocabulaire d'attributs change, c'est-à-dire quand on entre dans une nouvelle ère juridique structurelle. Le passage du Code Napoléon de 1804 au Code civil contemporain a vu disparaître [PaternalAuthority] et apparaître [PersonalData] — c'est une refonte qui requiert une nouvelle génération de cadre. Une révision constitutionnelle qui changerait fondamentalement le rôle du Conseil constitutionnel impliquerait peut-être l'apparition d'attributs nouveaux. Mais sur la grande majorité des années, le vocabulaire juridique français reste stable, et seul le contenu change.
Pour le cas Dumas et l'horizon France 1995-2026 (qui sera traité en détail en Partie 10), les trois axes sont stables : tradition codifiée constante, France métropolitaine constante, vocabulaire d'attributs ([Article], [Alinea], [Measure], [DemocraticProcedure]) fonctionnel et stable sur trente-et-un ans. On utilise donc deux instances de Common pour distinguer les époques (Common.France1995.Erard.Dsl avec francs et RMI ; Common.France2026.Etalab.Dsl avec euros et RSA majoré) mais une seule famille de Law au niveau du vocabulaire — les attributs sont les mêmes.
Pour aller au-delà — Code Napoléon, droit kanak, droit romain, common law
Dès qu'on veut typer le Code Napoléon de 1804, le droit coutumier kanak, le droit romain antique, le droit canonique, le common law britannique : le vocabulaire change. C'est là que LawDslGenerator devient indispensable. Pour le Ship 1 (le smoke test cas Dumas), on ne va pas jusque là — on s'arrête à la France codifiée 1995. Pour les Ships ultérieurs, et pour les contributions futures de la communauté, le générateur permet de produire de nouveaux cadres juridiques en quelques centaines de lignes de définition, sans réécrire l'infrastructure.
C'est précisément ce qui rend le projet générique sans être universalisant. Le méta-générateur est stable et générique ; les cadres qu'il produit sont spécifiques et multiples. La signature META(Ex × Ty) est l'interface entre les deux : elle est l'engagement formel qu'aucun cadre généré ne pourra prétendre à l'universalité, parce que son nom même portera son contexte d'application.
Pour aller plus loin
- Partie 3 — Filiation intellectuelle (précédente)
- Partie 5 — Architecture en couches (suivante)
- Hub de la série