Voir aussi : ADR-002 — Tool abstractions shared kernel · ADR famille Tools.* hétérogène · Retour à l'index
ADR-003 — Shared kernels secondaires : Analysis.Abstractions et Analysis
Statut : Accepté · Date : 2026-06 · Portée : Orkeon.Application → Orkeon.Analysis.Abstractions ; Orkeon.Infrastructure → Orkeon.Analysis
Contexte
Deux références traversent le sens « canonique » de l'oignon décrit dans CLAUDE.md
(« Application → Domain » / « Infrastructure → Domain + Application »), au profit du sous-système
RaggableTree (src/analysis/) :
Application → Orkeon.Analysis.Abstractions(src/core/Orkeon.Application/Orkeon.Application.csproj). Usage minimal : un seul fichier consomme ce projet —src/core/Orkeon.Application/Crew/DeliverableResolvers/FinalMessageResolver.cs, pour l'interfaceIInlineFqnValidator, injectée en dépendance optionnelle.Orkeon.Analysis.Abstractionsne dépend lui-même que deDomain; ce n'est donc pas une inversion du sens des dépendances, mais l'Application paie une référence de projet entière (64 fichiers d'interfaces/DTOs RaggableTree) pour une seule interface.Infrastructure → Orkeon.Analysis(concret, pas seulement les abstractions) (src/core/Orkeon.Infrastructure/Orkeon.Infrastructure.csproj). Usage circonscrit à la composition DI :Orkeon.Analysisn'est référencé que parsrc/core/Orkeon.Infrastructure/DependencyInjection/RaggableTreeInfrastructureExtensions.cs. L'Infrastructure joue ici un rôle de composition root pour câbler RaggableTree dans le conteneur.
Décision
Documenter et assumer ces deux couplages en l'état pour la version courante, sans les résorber dans l'immédiat :
Orkeon.Analysis.Abstractionsest traité comme un shared kernel secondaire (même statut queTools.Abstractions, cf. ADR-002) : projet d'abstractions ne dépendant que deDomain, donc consommable parApplicationsans cycle ni inversion.- La référence
Infrastructure → Orkeon.Analysisconcret est acceptée comme câblage de composition localisé à un unique fichier d'extensions DI, l'Infrastructure assumant son rôle de composition root pour le sous-système RaggableTree.
Option de résorption (différée)
Cette décision n'est pas définitive. Une résorption reste possible et préférable à terme :
- Application : déplacer le port
IInlineFqnValidatordansApplication(ou l'interface dansDomain), supprimant la référence àAnalysis.Abstractionset rendantApplicationiso-CLAUDE.md(« Application → Domain »). - Infrastructure : remonter la composition RaggableTree dans l'hôte (composition root applicatif
réel, p. ex.
ConsoleApp), retirant la référenceAnalysisconcret de l'Infrastructure.
Tant que ces résorptions ne sont pas faites, la présente ADR sert de justification consultable.
Conséquences
- Positif : les couplages sont désormais traçables et challengeables au lieu d'être
renégociés à l'aveugle à chaque revue. Aucun n'inverse le sens des dépendances ni n'introduit de
cycle (vérifié au commit
b5179b3c). - Vigilance :
Analysis.Abstractionsdoit rester dépendant du seulDomain; toute extension de l'usage deAnalysisconcret dans l'Infrastructure (au-delà du câblage DI) doit rouvrir cette ADR.