0.1.3-alpha.2
This commit is contained in:
198
deltas/0.1.3/alpha.2.md
Normal file
198
deltas/0.1.3/alpha.2.md
Normal file
@@ -0,0 +1,198 @@
|
||||
<!-- file: deltas/0.1.3/alpha.2.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.1.3-alpha.2 — contrats Android de base
|
||||
|
||||
## Baseline
|
||||
|
||||
Ce delta s'applique après :
|
||||
|
||||
```text
|
||||
0.1.3-alpha.1
|
||||
+ history/0.1.3/alpha.1.md PASS
|
||||
+ commit/push complet de la tranche alpha.1
|
||||
```
|
||||
|
||||
Il ne doit pas être appliqué avant l'intégration du history `alpha.1`.
|
||||
|
||||
## Objet
|
||||
|
||||
Réviser le profil Android uniquement sur les contrats de base démontrés par le corpus Games et confirmés par la documentation Android officielle courante : structure Android-only versus multi-plateforme, composition langage/build, matrice AGP/Gradle/JDK, niveaux SDK, identité applicative, versioning, configuration locale et signing.
|
||||
|
||||
Cette tranche ne couvre pas encore NDK/ABI/native packaging, APK/AAB, Android Lint, tests instrumentés, installation/smokes device/AVD ni exigences 16 KB ; ces responsabilités restent réservées à `alpha.3`.
|
||||
|
||||
## Modifications
|
||||
|
||||
### Version
|
||||
|
||||
`VERSION` devient :
|
||||
|
||||
```text
|
||||
0.1.3-alpha.2
|
||||
```
|
||||
|
||||
### Plan Android
|
||||
|
||||
`docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md` passe en révision interne `2` et enregistre :
|
||||
|
||||
- le `PASS` opérateur réel de `alpha.1` ;
|
||||
- l'absence de fix avant `alpha.2` ;
|
||||
- les sources Android officielles vérifiées le `2026-09-28` ;
|
||||
- la confirmation que les valeurs Games AGP `9.4.0`, Gradle `>= 9.6.0` et JDK observé restent des preuves locales et non des minima PGR ;
|
||||
- le scope exact de `alpha.2` ;
|
||||
- le maintien du détail 16 KB dans `alpha.3`.
|
||||
|
||||
### Profil Android
|
||||
|
||||
`docs/rules/610-ANDROID.md` passe en révision interne `4`.
|
||||
|
||||
La révision :
|
||||
|
||||
- conserve `Android/` comme convention conditionnelle d'un dépôt multi-plateforme, mais retire `gradlew*` du layout d'exemple afin de ne plus présenter le Wrapper comme structure obligatoire ;
|
||||
- rend le profil Android neutre quant au langage applicatif et applique `520-JAVA.md` uniquement lorsque du Java est réellement présent ;
|
||||
- distingue le JDK qui exécute Gradle/AGP du niveau Java du code applicatif ;
|
||||
- conserve la matrice AGP/Gradle/JDK sans recopier les règles générales possédées par `522-GRADLE.md` ;
|
||||
- clarifie `compileSdk`, `targetSdk` et `minSdk` comme trois contrats distincts ;
|
||||
- remplace l'objectif implicite « `minSdk` aussi bas que possible » par une décision de compatibilité produit explicitement justifiée ;
|
||||
- introduit la séparation explicite entre `namespace` et `applicationId` ;
|
||||
- conserve `VERSION`, `versionName` et `versionCode` comme contrats distincts selon le release train réellement possédé ;
|
||||
- précise que `local.properties` est réservé à l'environnement local Android/AGP et ne doit pas devenir une source de configuration partagée ou un fourre-tout de propriétés produit ;
|
||||
- consolide le traitement des keystores, clés et mots de passe de signing sans recopier l'interdiction générale des secrets ;
|
||||
- clarifie que le manifest possède composants/permissions/capabilities tandis que les identités `namespace` / `applicationId` restent dans la configuration Android du module.
|
||||
|
||||
Aucun template, skeleton, audit Python ou contrat de validation Android n'est créé.
|
||||
|
||||
## Vérification officielle utilisée
|
||||
|
||||
La vérification courante effectuée avant préparation du delta couvre :
|
||||
|
||||
```text
|
||||
Android Gradle plugin 9.4.0 release notes
|
||||
Configure your build
|
||||
Java versions in Android builds
|
||||
Configure the app module
|
||||
Sign your app
|
||||
```
|
||||
|
||||
Elle confirme notamment la matrice AGP/Gradle/JDK, la distinction du JDK de build et du niveau Java, les responsabilités `compileSdk` / `targetSdk` / `minSdk`, la séparation `namespace` / `applicationId`, le rôle local de `local.properties` et le caractère secret des clés de signing.
|
||||
|
||||
Elle n'est pas utilisée pour normaliser encore la contrainte 16 KB.
|
||||
|
||||
## 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.3-alpha.2'
|
||||
git cat-file -e HEAD:history/0.1.3/alpha.1.md
|
||||
test -f history/0.1.3/alpha.1.md
|
||||
test -f deltas/0.1.3/alpha.2.md
|
||||
test ! -e history/0.1.3/alpha.2.md
|
||||
|
||||
grep -A2 '^## Statut$' history/0.1.3/alpha.1.md | grep -Fx 'PASS'
|
||||
grep -Fx '<!-- version: 2 -->' docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md
|
||||
grep -Fx '<!-- version: 4 -->' 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.3/alpha.1.md').read_text(encoding='utf-8')
|
||||
assert re.search(r'## Statut\s+PASS\s', history)
|
||||
|
||||
android = Path('docs/rules/610-ANDROID.md').read_text(encoding='utf-8')
|
||||
assert android.startswith('<!-- file: docs/rules/610-ANDROID.md -->\n<!-- version: 4 -->')
|
||||
|
||||
for phrase in (
|
||||
'Android ne sélectionne pas à lui seul le langage applicatif du projet.',
|
||||
'JDK qui exécute Gradle / AGP',
|
||||
'Le choix de `minSdk` MUST être justifié par le contrat produit',
|
||||
'## Identité applicative et namespace',
|
||||
'`applicationId` identifie l\'application installée et distribuée.',
|
||||
'`local.properties` appartient à l\'environnement local du build Android/AGP',
|
||||
'release / upload keystore',
|
||||
'`AndroidManifest.xml` MUST déclarer uniquement les composants',
|
||||
):
|
||||
assert phrase in android, phrase
|
||||
|
||||
structure = android.split('## Structure du projet', 1)[1].split('## Langage applicatif et logique de build', 1)[0]
|
||||
assert 'gradlew' not in structure
|
||||
assert 'settings.gradle(.kts)' in structure
|
||||
assert '<module>/' in structure
|
||||
|
||||
assert 'Java est le langage applicatif Android par défaut du profil PGR' not in android
|
||||
assert '`minSdk` SHOULD rester aussi bas que raisonnablement supportable' not in android
|
||||
|
||||
plan = Path('docs/plans/009-V0_1_3_ANDROID_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`',
|
||||
'### Vérification Android officielle courante pour `alpha.2`',
|
||||
'AGP `9.4.0` requiert actuellement au minimum Gradle `9.6.0` et JDK `17`',
|
||||
'La vérification 16 KB n\'est pas absorbée ici',
|
||||
'### Scope arrêté pour `alpha.2`',
|
||||
):
|
||||
assert phrase in plan, phrase
|
||||
|
||||
assert not Path('docs/validation/006-ANDROID_VALIDATION.md').exists()
|
||||
assert not Path('history/0.1.3/alpha.2.md').exists()
|
||||
|
||||
for path in (
|
||||
'docs/rules/520-JAVA.md',
|
||||
'docs/rules/522-GRADLE.md',
|
||||
'docs/rules/600-PLATFORMS.md',
|
||||
):
|
||||
assert Path(path).is_file(), path
|
||||
|
||||
print('0.1.3 alpha.2 Android base-contract audit: clean (language/build ownership, SDK contracts, app identity, local config and signing clarified)')
|
||||
PYGATE
|
||||
|
||||
git diff --check
|
||||
git add VERSION \
|
||||
docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md \
|
||||
docs/rules/610-ANDROID.md \
|
||||
deltas/0.1.3/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.3/alpha.2.md
|
||||
M docs/plans/009-V0_1_3_ANDROID_REEVALUATION_PLAN.md
|
||||
M docs/rules/610-ANDROID.md
|
||||
```
|
||||
|
||||
La revue qualitative doit confirmer que :
|
||||
|
||||
- aucun choix Games n'est devenu une règle Android générale par copie de valeur ;
|
||||
- Android n'impose plus Java par défaut et ne confond pas JDK de build avec niveau Java applicatif ;
|
||||
- l'exemple structurel ne rend ni Wrapper ni Gradle système obligatoire ;
|
||||
- `minSdk` est une décision de compatibilité produit et non un concours vers la valeur la plus basse ;
|
||||
- `namespace` et `applicationId` sont distingués sans imposer un schéma de nommage propriétaire ;
|
||||
- `local.properties` ne devient pas une configuration partagée et les secrets de signing restent hors Git ;
|
||||
- aucun contenu NDK/ABI/16 KB, Tauri ou adoption Games n'a été absorbé prématurément ;
|
||||
- aucun artefact supplémentaire n'a été créé uniquement pour remplir la release.
|
||||
|
||||
## Transition
|
||||
|
||||
### PASS
|
||||
|
||||
Produire `history/0.1.3/alpha.2.md`, puis préparer `0.1.3-alpha.3` pour les responsabilités conditionnelles NDK/ABI/native packaging, APK/AAB, Android Lint, niveaux de tests, install/smokes device/AVD et contraintes de distribution modernes réellement applicables.
|
||||
|
||||
Avant toute règle 16 KB, vérifier explicitement les exigences Android officielles courantes et borner le contrat au canal de distribution et aux artefacts natifs réellement concernés.
|
||||
|
||||
### FAIL
|
||||
|
||||
Consigner le diagnostic réel dans `history/0.1.3/alpha.2.md` et rester dans `alpha.2.fix.N` sauf REPLAN justifié. Le fix MUST rester borné aux contrats Android de base et ne doit pas absorber le scope natif/distribution de `alpha.3`, Tauri `0.1.4` ou l'adoption Games `0.1.5`.
|
||||
Reference in New Issue
Block a user