# Delta 0.0.2-alpha.4 — profil Java / Maven / Gradle ## Baseline Version attendue avant application : ```text 0.0.2-alpha.3 ``` Le history `history/0.0.2/alpha.3.md` MUST avoir été appliqué et committé avant ce delta. Version après application : ```text 0.0.2-alpha.4 ``` ## Objet Matérialiser le deuxième profil technologique de PGR : `Java / Maven / Gradle`. Cette tranche conserve une frontière explicite entre : ```text Java → règles du langage et de l'API Maven / Gradle → spécialisations de build Android / frameworks futurs → contraintes plus spécifiques qui pourront surcharger localement Java ou Gradle ``` Aucune règle Android, AGP, SDK, `minSdk`, `targetSdk`, `versionCode`, APK/AAB ou JNI n'est absorbée dans ce profil. ## Réconciliation retenue Le profil reprend les principes déjà établis par PGR et les corpus de conception revus pour cette release : - JDK LTS par défaut, dernière LTS compatible utilisée en priorité ; - bascule vers une LTS plus ancienne lorsqu'une dépendance ou un outil l'exige ; - non-LTS uniquement par exception justifiée ; - séparation entre JDK de build et niveau Java/runtime supporté ; - structure standard `src/main/java`, `src/main/resources`, `src/test/java`, `src/test/resources` ; - packages orientés responsabilités et visibilité minimale ; - imports explicites ; - interfaces uniquement lorsqu'une vraie frontière existe ; - pas de Lombok/convenience codegen implicite par défaut, sans interdire les annotations fonctionnelles de frameworks ; - nullabilité et exceptions explicites ; - tests unitaires/intégration/environnement séparables ; - politique Maven centralisée dans le parent/root ; - `dependencyManagement` / `pluginManagement` utilisés pour la politique commune sans ajouter artificiellement les dépendances aux modules ; - Maven Wrapper conditionnel selon le besoin de reproductibilité ; - configuration Gradle commune centralisée ; - version catalog Gradle uniquement si la complexité le justifie ; - contrainte Gradle exprimée comme minimum, range, pin exact ou latest compatible selon la vraie matrice ; - Gradle Wrapper recommandé lorsqu'il apporte une reproductibilité réelle, sans interdire un Gradle système explicitement contraint ; - un DSL Gradle cohérent par projet, sans transformer Groovy/Kotlin DSL en préférence de langage applicatif ; - tâches ciblées pendant le développement, gates globales lorsque leur preuve devient utile ; - `clean` traité comme maintenance ; - outputs/caches/état local hors Git, avec wrappers comme exception volontaire lorsqu'ils sont retenus. ## Profil créé Le nouveau propriétaire normatif est : ```text docs/rules/520-JAVA_MAVEN_GRADLE.md ``` Il complète la famille `500 — languages / ecosystems` et n'introduit pas de nouvelle famille de navigation. Aucun audit Java/Maven/Gradle n'est ajouté : le dépôt PGR ne contient actuellement aucun projet de ce type sur lequel une telle gate fournirait une preuve réelle. ## Scope REPLACE : ```text VERSION RULES.md docs/rules/000-README.md ``` ADD : ```text docs/rules/520-JAVA_MAVEN_GRADLE.md deltas/0.0.2/alpha.4.md ``` DELETE : aucun. Aucun manifest de suppression n'est nécessaire. ## Validation opérateur ```bash test "$(cat VERSION)" = "0.0.2-alpha.4" test -f docs/rules/520-JAVA_MAVEN_GRADLE.md test -f deltas/0.0.2/alpha.4.md grep -F 'le JDK de développement SHOULD être une version LTS' docs/rules/520-JAVA_MAVEN_GRADLE.md grep -F 'JDK utilisé pour construire' docs/rules/520-JAVA_MAVEN_GRADLE.md grep -F 'src/main/' docs/rules/520-JAVA_MAVEN_GRADLE.md grep -F 'Lombok et les outils équivalents de convenience/codegen implicite SHOULD NOT être utilisés par défaut' docs/rules/520-JAVA_MAVEN_GRADLE.md grep -F 'Le fichier PGR `VERSION` reste la version canonique de l' docs/rules/520-JAVA_MAVEN_GRADLE.md grep -F 'PGR MUST NOT ajouter un Maven Wrapper uniquement par cérémonie.' docs/rules/520-JAVA_MAVEN_GRADLE.md grep -F 'minimum seulement' docs/rules/520-JAVA_MAVEN_GRADLE.md grep -F 'Un Gradle Wrapper SHOULD être versionné lorsqu' docs/rules/520-JAVA_MAVEN_GRADLE.md grep -F 'Groovy DSL et Kotlin DSL sont tous deux reconnus.' docs/rules/520-JAVA_MAVEN_GRADLE.md grep -F 'gradle clean` est une opération de maintenance' docs/rules/520-JAVA_MAVEN_GRADLE.md grep -F 'Aucune commande Maven/Gradle n' docs/rules/520-JAVA_MAVEN_GRADLE.md grep -F '520-JAVA_MAVEN_GRADLE.md' RULES.md grep -F '520-JAVA_MAVEN_GRADLE.md' docs/rules/000-README.md python3 -B scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs deltas history prompts git diff --check git add VERSION RULES.md docs/rules/000-README.md docs/rules/520-JAVA_MAVEN_GRADLE.md deltas/0.0.2/alpha.4.md git diff --cached --check git status --short ``` La sortie attendue avant ajout du history est : ```text M RULES.md M VERSION A deltas/0.0.2/alpha.4.md M docs/rules/000-README.md A docs/rules/520-JAVA_MAVEN_GRADLE.md ``` Revue opérateur complémentaire : - confirmer que les règles Java restent distinctes des contraintes propres à Maven/Gradle ; - confirmer que les contraintes Android restent hors de ce profil et pourront surcharger localement Gradle/JDK en `alpha.5` ; - confirmer que la politique JDK privilégie les LTS sans pin exact arbitraire ; - confirmer que Lombok/convenience codegen est distingué des annotations fonctionnelles de frameworks ; - confirmer que Maven Wrapper et Gradle Wrapper sont des choix de reproductibilité justifiés, pas des obligations cérémonielles universelles ; - confirmer qu'aucune commande Maven/Gradle réelle n'est exigée pour valider cette tranche documentaire dans le dépôt PGR lui-même. ## Transition ### PASS Créer et appliquer séparément `history/0.0.2/alpha.4.md`, committer la tranche, puis préparer `0.0.2-alpha.5` consacré au profil plateforme Android. ### FAIL Rester dans `0.0.2-alpha.4.fix.M` tant que les frontières Java/build tool ou les politiques de compatibilité restent incorrectes. Effectuer un REPLAN si la tranche révèle une dérive significative du scope.