0.0.2-alpha.2
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/rules/000-README.md -->
|
||||
<!-- version: 6 -->
|
||||
<!-- version: 7 -->
|
||||
|
||||
# Index des règles PGR
|
||||
|
||||
@@ -15,6 +15,10 @@ Les règles générales actuellement nécessaires restent dans `RULES.md`. La fa
|
||||
- [`210-WORKFLOW.md`](210-WORKFLOW.md) — contrats des artefacts workflow, ordre delta/history/commit, reprise et baselines de release.
|
||||
- [`300-DOCUMENTATION.md`](300-DOCUMENTATION.md) — rôles des documents, taxonomie, révisions internes, documents vivants et snapshots historiques.
|
||||
- [`400-VALIDATION.md`](400-VALIDATION.md) — matrice de validation, preuves proportionnelles, tests/audits/diagnostics, doubles de test et autorité du gate opérateur.
|
||||
- [`500-LANGUAGES.md`](500-LANGUAGES.md) — contrat commun des profils langage/écosystème et de leurs spécialisations de build.
|
||||
- [`600-PLATFORMS.md`](600-PLATFORMS.md) — contrat commun des profils plateforme.
|
||||
|
||||
Le modèle transversal d'ownership, d'applicabilité et de composition est décrit dans [`../architecture/003-RULE_PROFILE_MODEL.md`](../architecture/003-RULE_PROFILE_MODEL.md).
|
||||
|
||||
## Organisation prévue
|
||||
|
||||
@@ -25,7 +29,7 @@ Les autres familles seront créées uniquement lorsqu'elles disposent d'un conte
|
||||
200 — governance
|
||||
300 — documentation
|
||||
400 — validation
|
||||
500 — languages
|
||||
500 — languages / ecosystems
|
||||
600 — platforms
|
||||
700 — frameworks
|
||||
800 — architecture
|
||||
|
||||
76
docs/rules/500-LANGUAGES.md
Normal file
76
docs/rules/500-LANGUAGES.md
Normal file
@@ -0,0 +1,76 @@
|
||||
<!-- file: docs/rules/500-LANGUAGES.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# 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 exception réelle à une règle générale, le profil spécifique doit déclarer l'override et sa justification.
|
||||
|
||||
## 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.
|
||||
65
docs/rules/600-PLATFORMS.md
Normal file
65
docs/rules/600-PLATFORMS.md
Normal file
@@ -0,0 +1,65 @@
|
||||
<!-- file: docs/rules/600-PLATFORMS.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Règles de profils plateforme
|
||||
|
||||
## Scope
|
||||
|
||||
Cette famille définit le contrat commun des profils liés à une plateforme de build, d'exécution ou de distribution telle qu'Android, iOS, Desktop, Web ou une cible embarquée lorsqu'un profil réel le justifie.
|
||||
|
||||
Les règles propres à une plateforme sont ajoutées dans des documents plus spécifiques uniquement lorsqu'elles possèdent un contenu normatif réel.
|
||||
|
||||
## Responsabilités de la famille
|
||||
|
||||
Un profil plateforme MAY posséder les règles spécifiques concernant notamment :
|
||||
|
||||
- la structure de projet imposée ou conventionnelle sur cette plateforme ;
|
||||
- les SDKs, targets, runtimes et niveaux minimums supportés ;
|
||||
- les contraintes de toolchain réellement imposées par la plateforme ;
|
||||
- les permissions, manifests, capabilities ou métadonnées de plateforme ;
|
||||
- le packaging, la signature et les artefacts de distribution ;
|
||||
- les émulateurs, simulateurs, appareils ou environnements nécessaires aux smokes ;
|
||||
- les adaptations de lifecycle, input ou services réellement propres à la plateforme ;
|
||||
- les contraintes de compatibilité utilisateur liées à une version minimale de target/runtime.
|
||||
|
||||
Un profil plateforme MUST NOT recopier les règles du langage ou du build tool lorsque celles-ci restent valides sans spécialisation.
|
||||
|
||||
## Composition avec les langages et build tools
|
||||
|
||||
Une plateforme peut être utilisée avec plusieurs langages ou toolchains. Son profil ne doit donc pas supposer implicitement une combinaison unique lorsque la plateforme elle-même ne l'impose pas.
|
||||
|
||||
Lorsqu'une plateforme impose une contrainte plus précise à un langage ou build tool déjà applicable, la règle plateforme peut la raffiner ou la remplacer dans son scope à condition d'identifier clairement la contrainte et sa raison.
|
||||
|
||||
Cette contrainte MUST NOT se propager aux projets utilisant le même langage hors de cette plateforme.
|
||||
|
||||
## Toolchain de build et compatibilité de target
|
||||
|
||||
La modernité de la toolchain de build et la version minimale du runtime ou de la target sont deux décisions distinctes.
|
||||
|
||||
L'utilisation d'un SDK, compilateur ou build tool récent ne justifie pas à elle seule l'augmentation de la version minimale supportée par les utilisateurs.
|
||||
|
||||
Une hausse d'un minimum de target/runtime constitue un changement de compatibilité et doit être justifiée par une contrainte ou un bénéfice réel du projet.
|
||||
|
||||
Inversement, un minimum ancien ne doit pas être conservé artificiellement lorsqu'il empêche une capacité nécessaire, une maintenance raisonnable ou une chaîne de build supportée.
|
||||
|
||||
## Packaging, secrets et configuration locale
|
||||
|
||||
Les règles de packaging ou de signature spécifiques à une plateforme peuvent appartenir à son profil, mais les secrets eux-mêmes restent soumis aux règles générales PGR et ne sont jamais versionnés.
|
||||
|
||||
Une plateforme peut nécessiter des fichiers locaux ou générés particuliers ; leur politique Git doit être documentée dans le profil spécifique seulement lorsqu'elle diffère réellement du contrat général.
|
||||
|
||||
## Validation spécialisée
|
||||
|
||||
Un profil plateforme peut définir les builds, packages et smokes réellement nécessaires pour prouver le support annoncé.
|
||||
|
||||
La présence d'une plateforme dans un projet ne rend pas automatiquement tous ses smokes obligatoires à chaque tranche. La sélection reste proportionnée au scope modifié et aux preuves invalidées.
|
||||
|
||||
Les validations nécessitant un appareil, un simulateur, un service externe ou une chaîne de packaging réelle doivent être distinguées des contrôles documentaires ou unitaires qui ne prouvent pas ces comportements.
|
||||
|
||||
## Nomenclature documentaire
|
||||
|
||||
Le document `600-PLATFORMS.md` possède le contrat commun de la famille.
|
||||
|
||||
Les profils spécifiques utilisent la plage `610` à `699`. Leur numéro sert à la navigation et ne détermine pas une priorité normative implicite.
|
||||
|
||||
La résolution entre profils suit [`../architecture/003-RULE_PROFILE_MODEL.md`](../architecture/003-RULE_PROFILE_MODEL.md).
|
||||
Reference in New Issue
Block a user