8.6 KiB
Delta 0.1.3-alpha.2 — contrats Android de base
Baseline
Ce delta s'applique après :
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 :
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
PASSopérateur réel dealpha.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.0et 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 retiregradlew*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.mduniquement 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,targetSdketminSdkcomme trois contrats distincts ; - remplace l'objectif implicite «
minSdkaussi bas que possible » par une décision de compatibilité produit explicitement justifiée ; - introduit la séparation explicite entre
namespaceetapplicationId; - conserve
VERSION,versionNameetversionCodecomme contrats distincts selon le release train réellement possédé ; - précise que
local.propertiesest 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/applicationIdrestent 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 :
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 :
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 :
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 ;
minSdkest une décision de compatibilité produit et non un concours vers la valeur la plus basse ;namespaceetapplicationIdsont distingués sans imposer un schéma de nommage propriétaire ;local.propertiesne 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.