0.0.1-alpha.3.fix.1
This commit is contained in:
259
deltas/0.1.2/alpha.2.md
Normal file
259
deltas/0.1.2/alpha.2.md
Normal file
@@ -0,0 +1,259 @@
|
||||
<!-- file: deltas/0.1.2/alpha.2.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.1.2-alpha.2 — révision ciblée Java / Gradle
|
||||
|
||||
## Baseline et version
|
||||
|
||||
Baseline attendue : commit opérateur de `0.1.2-alpha.1`, réalisé après application de `history/0.1.2/alpha.1.md` avec statut `PASS`.
|
||||
|
||||
Le hash de ce commit n'est pas anticipé.
|
||||
|
||||
Version avant application :
|
||||
|
||||
```text
|
||||
0.1.2-alpha.1
|
||||
```
|
||||
|
||||
Version après application :
|
||||
|
||||
```text
|
||||
0.1.2-alpha.2
|
||||
```
|
||||
|
||||
## Objet
|
||||
|
||||
Appliquer la révision normative ciblée décidée après l'audit Games de `alpha.1` sans transformer les choix locaux du corpus en prescriptions générales.
|
||||
|
||||
La tranche précise uniquement :
|
||||
|
||||
- la distinction entre JDK de build, niveau source et bytecode/runtime supporté ;
|
||||
- la possibilité pour un JDK plus récent de cibler explicitement un niveau Java plus ancien ;
|
||||
- l'ownership naturel de `settings.gradle(.kts)`, du build root, des builds de modules et de `gradle.properties` partagé ;
|
||||
- la nécessité qu'une politique « Gradle système » possède une contrainte effectivement vérifiée ;
|
||||
- la séparation entre configuration Gradle partagée portable et état local/machine/secrets ;
|
||||
- la frontière entre règles Java/Gradle générales et overrides Android.
|
||||
|
||||
Les sections Maven sont relues et conservées sans nouvel artefact : Games `0.3.6` ne contient aucun projet Maven permettant de justifier une normalisation supplémentaire.
|
||||
|
||||
## Scope
|
||||
|
||||
REPLACE :
|
||||
|
||||
```text
|
||||
VERSION
|
||||
docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md
|
||||
docs/rules/520-JAVA_MAVEN_GRADLE.md
|
||||
```
|
||||
|
||||
ADD :
|
||||
|
||||
```text
|
||||
deltas/0.1.2/alpha.2.md
|
||||
```
|
||||
|
||||
DELETE : aucun.
|
||||
|
||||
`docs/rules/610-ANDROID.md`, `RULES.md`, `ROADMAP.md`, `CHANGELOG.md`, les autres profils, templates, skeletons, validations, scripts et tests restent inchangés.
|
||||
|
||||
Aucun `history/0.1.2/alpha.2.md` n'est anticipé.
|
||||
|
||||
## Décisions Java
|
||||
|
||||
Le contrat existant est conservé et rendu plus explicite :
|
||||
|
||||
```text
|
||||
JDK de build
|
||||
!= niveau Java du code source
|
||||
!= niveau de bytecode/runtime minimal supporté
|
||||
```
|
||||
|
||||
Un JDK de build plus récent peut être utilisé avec une cible Java plus ancienne lorsque cette cible est déclarée explicitement par le build et réellement supportée par la toolchain.
|
||||
|
||||
PGR ne rend obligatoire ni `--release`, ni une toolchain Java, ni `sourceCompatibility`/`targetCompatibility` pour tous les builds. Le mécanisme concret dépend de Maven, Gradle, du plugin et du projet ; le contrat important est que la compatibilité ne soit pas une conséquence implicite du JDK actif.
|
||||
|
||||
Les versions Games observées restent locales : ni JDK 25 LTS ni Java 17 ne deviennent un minimum PGR.
|
||||
|
||||
## Décisions Gradle
|
||||
|
||||
### Ownership
|
||||
|
||||
La responsabilité est explicitée sans imposer le layout Games :
|
||||
|
||||
```text
|
||||
settings.gradle(.kts)
|
||||
composition du build
|
||||
politiques globales de résolution lorsqu'elles existent
|
||||
contraintes de bootstrap/version devant agir avant les projets
|
||||
|
||||
build root
|
||||
plugins, versions et conventions réellement partagés
|
||||
|
||||
build de module
|
||||
plugins, dépendances, sources, tâches et paramètres locaux au module
|
||||
|
||||
gradle.properties partagé
|
||||
propriétés portables, non secrètes et réellement communes
|
||||
```
|
||||
|
||||
Une logique transverse devenue importante peut être extraite dans un script, build logic ou plugin possédé plutôt que dupliquée. Aucun de ces mécanismes n'est rendu obligatoire.
|
||||
|
||||
### Gradle système et Wrapper
|
||||
|
||||
Le Wrapper reste conditionnel : il est recommandé lorsqu'il apporte une reproductibilité utile, mais son absence dans Games reste `KEEP-LOCAL` et n'est pas généralisée.
|
||||
|
||||
Lorsqu'un projet choisit un Gradle système, sa contrainte de compatibilité doit être effectivement vérifiée par le build ou par une gate exécutée par le projet/CI. Une version écrite uniquement dans la documentation ne suffit pas.
|
||||
|
||||
PGR ne reprend ni le minimum `9.6.0` ni l'API `GradleVersion.current()` de Games comme règle universelle. Ils constituent une implémentation valide d'une politique locale, pas la forme obligatoire de la vérification.
|
||||
|
||||
### Propriétés et état local
|
||||
|
||||
Un `gradle.properties` partagé doit rester portable et non secret. Les chemins machine, credentials, secrets et overrides développeur utilisent un mécanisme local approprié et restent hors Git.
|
||||
|
||||
Le version catalog reste optionnel. Groovy DSL et Kotlin DSL restent tous deux reconnus ; le choix Groovy de Games reste `KEEP-LOCAL`.
|
||||
|
||||
## Maven
|
||||
|
||||
Aucun `pom.xml`, Maven Wrapper ou projet Maven n'existe dans le corpus Games autoritaire. Les sections Maven de `520` ont donc uniquement été relues pour vérifier qu'elles restent cohérentes avec la philosophie générale : centraliser ce qui est réellement commun, ne pas imposer un Wrapper par cérémonie, préférer les gates ciblées et ne pas automatiser `clean` sans besoin.
|
||||
|
||||
Aucun template, skeleton, audit ou autre artefact Maven n'est ajouté.
|
||||
|
||||
## Frontière Android
|
||||
|
||||
`610-ANDROID.md` n'est pas modifié.
|
||||
|
||||
Les éléments suivants restent hors scope de `0.1.2` :
|
||||
|
||||
```text
|
||||
AGP et sa matrice de compatibilité
|
||||
compileSdk / targetSdk / minSdk
|
||||
NDK et ABI
|
||||
JNI / AAR / Prefab
|
||||
applicationId / namespace
|
||||
manifests / resources
|
||||
APK / AAB / signing
|
||||
Variant API Android
|
||||
devices / AVD / smokes Android
|
||||
contraintes 16 KB
|
||||
SDL3 et architecture Games
|
||||
```
|
||||
|
||||
`520` documente seulement qu'une plateforme ou un framework peut imposer un override plus étroit sans transformer cet override en minimum Java/Gradle général.
|
||||
|
||||
## Validation opérateur
|
||||
|
||||
Après application du history `PASS`, commit/push de `alpha.1`, puis application du présent delta :
|
||||
|
||||
```bash
|
||||
test "$(cat VERSION)" = '0.1.2-alpha.2'
|
||||
git cat-file -e HEAD:history/0.1.2/alpha.1.md
|
||||
test -f history/0.1.2/alpha.1.md
|
||||
test -f deltas/0.1.2/alpha.2.md
|
||||
test ! -e history/0.1.2/alpha.2.md
|
||||
|
||||
grep -A2 '^## Statut$' history/0.1.2/alpha.1.md | grep -Fx 'PASS'
|
||||
grep -Fx '<!-- version: 2 -->' docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md
|
||||
grep -Fx '<!-- version: 3 -->' docs/rules/520-JAVA_MAVEN_GRADLE.md
|
||||
grep -Fx '<!-- version: 2 -->' docs/rules/610-ANDROID.md
|
||||
|
||||
python3 -B -m unittest discover -s tests -v
|
||||
|
||||
python3 -B scripts/audit_markdown_headers.py \
|
||||
README.md RULES.md ROADMAP.md CHANGELOG.md docs deltas history prompts
|
||||
python3 -B scripts/audit_markdown_tables.py \
|
||||
README.md RULES.md ROADMAP.md CHANGELOG.md docs deltas history prompts
|
||||
python3 -B scripts/audit_markdown_links.py \
|
||||
README.md RULES.md ROADMAP.md CHANGELOG.md docs deltas history prompts
|
||||
|
||||
python3 -B - <<'PYGATE'
|
||||
from pathlib import Path
|
||||
import re
|
||||
|
||||
history = Path('history/0.1.2/alpha.1.md').read_text(encoding='utf-8')
|
||||
assert re.search(r'## Statut\s+PASS\s', history)
|
||||
|
||||
profile = Path('docs/rules/520-JAVA_MAVEN_GRADLE.md').read_text(encoding='utf-8')
|
||||
for phrase in (
|
||||
'Un JDK de build plus récent MAY compiler un projet qui cible un niveau source ou bytecode plus ancien',
|
||||
'Le simple fait qu\'une compilation réussisse avec le JDK actif ne constitue pas une déclaration de compatibilité.',
|
||||
'composition du build et inclusion des projets',
|
||||
'plugins, dépendances, sources, tâches et paramètres propres au module',
|
||||
'propriétés portables, non secrètes et réellement communes au build',
|
||||
'effectivement vérifiée',
|
||||
'Une version seulement écrite dans la documentation sans contrôle exécutable n\'est pas une preuve suffisante',
|
||||
'Son absence dans un corpus particulier ne constitue pas une règle générale.',
|
||||
):
|
||||
assert phrase in profile, phrase
|
||||
|
||||
for phrase in (
|
||||
'AGP',
|
||||
'`minSdk`',
|
||||
'`targetSdk`',
|
||||
'NDK',
|
||||
'ABI/JNI',
|
||||
'packaging APK/AAB',
|
||||
'device/AVD',
|
||||
):
|
||||
assert phrase in profile, phrase
|
||||
|
||||
plan = Path('docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md').read_text(encoding='utf-8')
|
||||
for phrase in (
|
||||
'## Décision après `alpha.1`',
|
||||
'La gate opérateur de `alpha.1` est `PASS`',
|
||||
'`KEEP-LOCAL` : Groovy DSL, absence de Wrapper dans Games, JDK 25 LTS et cible Java 17',
|
||||
'`OVERRIDE` : matrice AGP/Gradle/JDK et autres contraintes de plateforme Android',
|
||||
'`DEFER` : version catalog, skeleton Java/Gradle, audit Python Java/Gradle et nouveaux artefacts Maven',
|
||||
'`alpha.2` est donc bornée à la révision du profil `520`',
|
||||
):
|
||||
assert phrase in plan, phrase
|
||||
|
||||
android = Path('docs/rules/610-ANDROID.md').read_text(encoding='utf-8')
|
||||
assert android.startswith('<!-- file: docs/rules/610-ANDROID.md -->\n<!-- version: 2 -->')
|
||||
|
||||
for path in (
|
||||
'docs/templates',
|
||||
'docs/skeletons',
|
||||
'scripts',
|
||||
):
|
||||
assert Path(path).is_dir(), path
|
||||
|
||||
print('0.1.2 alpha.2 Java/Gradle audit: clean (JDK/source/bytecode explicit, Gradle ownership and system-version verification clarified, Android boundary preserved)')
|
||||
PYGATE
|
||||
|
||||
git diff --check
|
||||
git add VERSION \
|
||||
docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md \
|
||||
docs/rules/520-JAVA_MAVEN_GRADLE.md \
|
||||
deltas/0.1.2/alpha.2.md
|
||||
git diff --cached --check
|
||||
git status --short
|
||||
```
|
||||
|
||||
Le scope indexé attendu avant ajout du history est :
|
||||
|
||||
```text
|
||||
M VERSION
|
||||
A deltas/0.1.2/alpha.2.md
|
||||
M docs/plans/008-V0_1_2_JAVA_GRADLE_REEVALUATION_PLAN.md
|
||||
M docs/rules/520-JAVA_MAVEN_GRADLE.md
|
||||
```
|
||||
|
||||
La revue qualitative doit confirmer que :
|
||||
|
||||
- aucune version JDK ou Java observée dans Games n'est devenue un minimum général ;
|
||||
- un Gradle système reste permis seulement avec une contrainte réellement vérifiée ;
|
||||
- le Wrapper reste conditionnel et le Groovy DSL n'est pas privilégié normativement ;
|
||||
- `gradle.properties` partagé ne devient pas un emplacement pour secrets ou chemins machine ;
|
||||
- les sections Maven n'ont pas acquis de règle provenant d'un corpus qui n'exerce pas Maven ;
|
||||
- aucune responsabilité Android n'a été déplacée hors de `610` ou démarrée prématurément dans `0.1.2` ;
|
||||
- aucun template, skeleton ou audit supplémentaire n'a été créé pour matérialiser artificiellement la release.
|
||||
|
||||
## Transition
|
||||
|
||||
### PASS
|
||||
|
||||
Produire `history/0.1.2/alpha.2.md`, puis préparer `0.1.2-beta.1` pour la réconciliation finale du profil contre Games, `500-LANGUAGES.md`, `610-ANDROID.md` et les règles générales de validation, ainsi que la décision explicite sur l'absence ou la nécessité d'artefacts supplémentaires.
|
||||
|
||||
### FAIL
|
||||
|
||||
Consigner le diagnostic réel dans `history/0.1.2/alpha.2.md` et rester dans `alpha.2.fix.N` sauf REPLAN justifié. Le fix MUST rester borné à la révision Java/Gradle et ne doit pas absorber `beta.1` ou le scope Android `0.1.3`.
|
||||
Reference in New Issue
Block a user