# Règles de profils langage et écosystème ## Scope Cette famille définit le contrat commun des profils liés à un langage, son écosystème et, lorsque pertinent, ses build tools ou package managers. Les règles propres à Rust/Cargo, Java, Maven, Gradle ou à d'autres technologies sont ajoutées dans des documents plus spécifiques uniquement lorsqu'un contenu normatif réel existe. ## Responsabilités de la famille Un profil langage/écosystème MAY posséder les règles spécifiques concernant notamment : - l'organisation canonique des sources, packages, modules, crates ou workspaces ; - les manifests et fichiers de configuration propres à l'écosystème ; - la toolchain de compilation ou d'exécution lorsqu'elle appartient au langage ; - les build tools et package managers liés à cet écosystème ; - les dépendances, features, scopes ou configurations propres au gestionnaire utilisé ; - le formatter, le linter et les commandes officielles de vérification ; - les conventions d'API, d'import, d'erreur ou de safety réellement propres au langage ; - l'organisation des tests lorsque l'écosystème lui donne une structure spécifique ; - les artefacts générés ou lockfiles lorsque leur traitement dépend réellement de l'écosystème. Un profil langage/écosystème MUST NOT absorber des règles dont le propriétaire naturel est une plateforme, un framework, un domaine métier ou le projet particulier. ## Héritage Les profils de cette famille héritent des règles générales PGR et ne doivent pas recopier les contrats déjà possédés par les familles de gouvernance, documentation ou validation. Une règle générale comme l'interdiction de versionner des secrets reste applicable sans être répétée dans chaque profil langage. Lorsqu'un langage ou un build tool impose une contradiction réelle avec un `MUST / MUST NOT` général applicable, le profil spécifique MUST déclarer l'override ou l'exception et sa justification. Un choix différent d'un `SHOULD / SHOULD NOT` général ne nécessite pas, à lui seul, un override. ## Langage et build tool PGR ne force pas un découpage identique pour tous les écosystèmes. Un langage et son build tool MAY partager un profil lorsque leurs responsabilités sont suffisamment liées et que les séparer ne produirait que des renvois artificiels. Ils SHOULD être séparés lorsque plusieurs build tools interchangeables possèdent chacun des règles propres significatives. Dans ce second cas, la composition est explicite : ```text language profile ↓ build-tool specialization ``` Une spécialisation de build tool ne devient pas une règle du langage entier. ## Versions d'outils et dépendances Un profil MUST NOT figer une version exacte d'outil ou de dépendance uniquement parce qu'une version apparaît dans un projet source historique. Une contrainte de version appartient au profil lorsqu'elle répond à une nécessité démontrée de compatibilité, reproductibilité, support, sécurité ou matrice imposée par un outil plus spécifique. Une contrainte introduite par une plateforme ou un framework reste possédée par ce scope plus spécifique et ne se propage pas au langage entier. ## Validation spécialisée Un profil langage/écosystème peut ajouter des commandes de formatage, lint, check ou test propres à sa toolchain. Ces commandes complètent la gouvernance de validation générale ; elles ne redéfinissent ni l'autorité du gate opérateur, ni les statuts de preuve, ni le principe de proportionnalité. Un audit Python PGR ne doit pas réimplémenter une propriété déjà contrôlée de façon fiable par le compilateur, le formatter, le linter ou le build tool officiel sans besoin distinct démontré. ## Nomenclature documentaire Le document `500-LANGUAGES.md` possède le contrat commun de la famille. Les profils spécifiques utilisent la plage `510` à `599`. Leur numéro identifie la navigation documentaire et ne représente ni une priorité normative implicite ni une version technologique. L'applicabilité et les relations de spécialisation sont déterminées par le contenu du profil conformément à [`../architecture/003-RULE_PROFILE_MODEL.md`](../architecture/003-RULE_PROFILE_MODEL.md), jamais par l'ordre lexical des fichiers.