0.3.3-0-pre.1
This commit is contained in:
204
deltas/0.3.3/0-pre.1.md
Normal file
204
deltas/0.3.3/0-pre.1.md
Normal file
@@ -0,0 +1,204 @@
|
||||
<!-- file: deltas/0.3.3/0-pre.1.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.3.3-0-pre.1
|
||||
|
||||
## Base
|
||||
|
||||
Base autoritaire : archive fournie `games-v0.3.1.zip`, téléchargée depuis le lien ZIP du tag Gitea `v0.3.1`.
|
||||
|
||||
La version workspace de la base est `0.3.1`. L'archive taggée ne contient pas `.git`; aucun état Git absent n'est inventé et aucune autre branche/version n'est utilisée comme source.
|
||||
|
||||
`0.3.2` reste différée conformément au prompt de reprise.
|
||||
|
||||
## Objet
|
||||
|
||||
Ouvrir `0.3.3` par son gate obligatoire `0-pre.1` : audit complet de la baseline et des règles, audit du pipeline Android SDL3 natif historique, recherche officielle actuelle, choix ABI/API, cadrage APK/AAB, contrainte pages mémoire 16 KB, sizing, risques, validations et plan vivant.
|
||||
|
||||
Cette tranche n'introduit volontairement aucune nouvelle tâche Gradle productive et ne modifie pas le comportement Android. La réécriture du chemin de build commence seulement en `0-pre.2`.
|
||||
|
||||
## Version
|
||||
|
||||
La version workspace passe de :
|
||||
|
||||
```text
|
||||
0.3.1
|
||||
```
|
||||
|
||||
à :
|
||||
|
||||
```text
|
||||
0.3.3-0-pre.1
|
||||
```
|
||||
|
||||
Les versions npm/Tauri et `versionName` Android ne sont pas synchronisées dans cette tranche de cadrage. Les produits concernés n'ont pas encore reçu de changement de packaging et `VER-TAURI-003`/`VER-TAURI-004` interdisent une synchronisation npm cérémonielle.
|
||||
|
||||
## Audit de l'archive
|
||||
|
||||
Avant modification, l'environnement de génération a obtenu :
|
||||
|
||||
```text
|
||||
unzip -t : no errors
|
||||
General Rust rule audit: clean
|
||||
Rust export completeness audit: 0 candidate(s)
|
||||
games.sasedev workspace audit: clean
|
||||
Markdown table audit: clean (5 table(s), 222 file(s))
|
||||
Distribution layout audit: clean (48 required path(s), 1 forbidden path(s) absent)
|
||||
```
|
||||
|
||||
Le ZIP contient 378 fichiers, aucun lien symbolique, aucun fichier vide et aucun `.git`, `target/`, `node_modules/` ou `gen/android/` généré.
|
||||
|
||||
La sortie utilisateur initiale sur son arbre local est également propre pour les trois audits, avec 230 fichiers Markdown et un `cargo check --workspace` réussi. Elle montre ensuite un build Tauri Android Debug universal réussi pour ARM64 et x86_64. Le compte Markdown local supérieur au ZIP taggé est compatible avec un `gen/android/` Tauri déjà présent localement ; le ZIP fourni reste la source autoritaire et aucun fichier généré n'est ajouté au delta.
|
||||
|
||||
## Audit des règles
|
||||
|
||||
La revue demandée par `prompts/004-V0_3_3_START_PROMPT.md` confirme notamment :
|
||||
|
||||
- `0-pre.1` doit contenir le cadrage et le plan avant le développement lourd ;
|
||||
- une prerelease non-fix synchronise la version workspace ;
|
||||
- un nouveau chemin de build `0.3.x` ne doit pas être piloté par Python ;
|
||||
- Gradle doit posséder l'artefact Android final et les outputs générés doivent rester hors sources versionnées ;
|
||||
- toute modification Rust/Cargo déclenche fmt, audit, check workspace et Clippy strict ;
|
||||
- les builds, tests et smokes finaux sont attestés côté utilisateur ;
|
||||
- les tests workspace complets restent des gates rares et planifiées ;
|
||||
- aucun historique `history/0.3.3/0-pre.1.md` n'est créé avant validation effective de cette tranche.
|
||||
|
||||
Aucune contradiction bloquante n'est trouvée entre le prompt, les règles et la baseline `v0.3.1`. L'audit documentaire relève toutefois un paragraphe obsolète dans `Android/README.md`, resté au vocabulaire `0.1.0-0-pre.9` et affirmant que le NDK n'était pas encore utilisé ; cette tranche le réaligne sur la réalité stable `0.3.1` sans changer le build.
|
||||
|
||||
## Pipeline Android hérité
|
||||
|
||||
La baseline configure :
|
||||
|
||||
```text
|
||||
AGP 9.4.0
|
||||
Gradle 9.6.0 attendu
|
||||
JDK 17
|
||||
compileSdk 36
|
||||
targetSdk 36
|
||||
minSdk 21
|
||||
NDK 28.2.13676358 / r28c
|
||||
SDL3 AAR 3.4.16
|
||||
```
|
||||
|
||||
`scripts/build_android_rust.py` réalise aujourd'hui l'extraction/linkage SDL3 par ABI, la résolution NDK, `cargo ndk`, la sélection d'une unique feature jeu, le staging dans `src/main/jniLibs` et la vérification de `libgame_android_entrypoint.so`.
|
||||
|
||||
Ces responsabilités doivent être transposées dans la logique Gradle commune, avec outputs sous `build/generated/...`, avant suppression du script.
|
||||
|
||||
## Recherche et décisions 0-pre.1
|
||||
|
||||
Les sources officielles actuelles confirment :
|
||||
|
||||
- AGP 9.4.0 : Gradle 9.6.0, JDK 17 et NDK par défaut `28.2.13676358` ;
|
||||
- SDL3 Android actuel : SDK 35+, NDK r28c+ et API minimale 21 ;
|
||||
- SDL3 3.4.16 : release stable actuelle de la baseline ;
|
||||
- Google Play : API 36+ requise depuis le 31 août 2026 pour nouvelles apps/mises à jour téléphone/tablette ;
|
||||
- application native ciblant API 35+ : compatibilité pages mémoire 16 KB à assurer ; NDK r28+ produit l'alignement 16 KB par défaut ;
|
||||
- AAB : format de distribution, dont le store dérive des APK optimisés, notamment par ABI.
|
||||
|
||||
Les choix retenus sont donc :
|
||||
|
||||
```text
|
||||
minSdk candidat 21
|
||||
ABI par défaut arm64-v8a + x86_64
|
||||
armeabi-v7a différée
|
||||
APK local universal multi-ABI
|
||||
AAB distribution
|
||||
splits ABI non par défaut
|
||||
NDK natif r28c épinglé, distinct du NDK 30 observé dans le POC Tauri
|
||||
```
|
||||
|
||||
Le détail, les sources et les risques sont consignés dans `docs/studies/025-V0_3_3_ANDROID_NATIVE_MULTI_ABI_AUDIT.md`.
|
||||
|
||||
## Plan créé
|
||||
|
||||
`docs/plans/003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md` devient le plan actif avec le forecast révisé :
|
||||
|
||||
```text
|
||||
0-pre.1 audit / règles / ABI-API / minSdk / APK-AAB / 16 KB / plan
|
||||
0-pre.2 ownership Gradle/Cargo Snake sur arm64-v8a + wrapper Gradle
|
||||
0-pre.3 arm64-v8a + x86_64 + APK universal + Reflex si factorisation naturelle
|
||||
0-pre.4 AAB + minSdk/smokes + 16 KB + fermeture du script Python historique
|
||||
2-beta.1 validation large + packaging final
|
||||
3-rc.1 gel + reproductibilité + consolidation documentaire
|
||||
0.3.3 promotion mécanique stable
|
||||
```
|
||||
|
||||
Le scope reste compatible avec une seule version/session tant qu'aucune incompatibilité structurante de Gradle/cargo-ndk/SDL3 n'est découverte.
|
||||
|
||||
## Fichiers
|
||||
|
||||
Ajoutés :
|
||||
|
||||
```text
|
||||
docs/plans/003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md
|
||||
docs/studies/025-V0_3_3_ANDROID_NATIVE_MULTI_ABI_AUDIT.md
|
||||
deltas/0.3.3/0-pre.1.md
|
||||
```
|
||||
|
||||
Modifiés :
|
||||
|
||||
```text
|
||||
Android/README.md
|
||||
Cargo.toml
|
||||
README.md
|
||||
docs/000-README.md
|
||||
docs/plans/000-README.md
|
||||
docs/studies/000-README.md
|
||||
```
|
||||
|
||||
Aucun fichier Gradle, Rust source, règle normative, roadmap, changelog ou historique n'est modifié dans ce cadrage. `Android/README.md` reçoit uniquement la correction documentaire de baseline décrite ci-dessus.
|
||||
|
||||
## Validations exécutées dans l'environnement de génération
|
||||
|
||||
Après constitution de l'état livré, exécuter uniquement les audits statiques autorisés au générateur :
|
||||
|
||||
```bash
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates Android Web deltas history
|
||||
python3 scripts/audit_distribution_layout.py
|
||||
```
|
||||
|
||||
Aucun build Cargo/Gradle, test ou smoke final n'est attribué au générateur.
|
||||
|
||||
## Validation utilisateur demandée
|
||||
|
||||
Le manifest workspace change de version ; la gate minimale est donc :
|
||||
|
||||
```bash
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates Android Web deltas history
|
||||
python3 scripts/audit_distribution_layout.py
|
||||
|
||||
cargo fmt --all
|
||||
cargo fmt --all -- --check
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
||||
```
|
||||
|
||||
Aucun test workspace complet n'est demandé : cette tranche ne change aucun code Rust, comportement, dépendance ou configuration Android productive.
|
||||
|
||||
La première gate du prompt `004` demande également l'inventaire frais qui conditionne `0-pre.2` :
|
||||
|
||||
```bash
|
||||
rustc --version
|
||||
cargo --version
|
||||
cargo ndk --version
|
||||
rustup target list --installed
|
||||
java -version
|
||||
printf 'JAVA_HOME=%s\nANDROID_HOME=%s\n' "$JAVA_HOME" "$ANDROID_HOME"
|
||||
adb version
|
||||
adb devices -l
|
||||
emulator -list-avds
|
||||
(cd Android && gradle --version)
|
||||
printf 'configured NDK: '; sed -n 's/^androidNdkVersion=//p' Android/gradle.properties
|
||||
ls -ld "$ANDROID_HOME/ndk/28.2.13676358"
|
||||
test -f Android/libs/SDL3-3.4.16.aar && sha256sum Android/libs/SDL3-3.4.16.aar
|
||||
```
|
||||
|
||||
La sortie déjà fournie confirme JDK 17 sélectionné via `JAVA_HOME`, les targets Tauri ARM64/x86_64 suffisamment opérationnelles pour produire un APK universal et un NDK 30 utilisé par Tauri. Elle ne remplace pas l'inventaire du pipeline Android natif ci-dessus.
|
||||
|
||||
## Suite après validation
|
||||
|
||||
Si la gate est propre, la tranche suivante crée `history/0.3.3/0-pre.1.md` avec les sorties réellement obtenues puis ouvre `0.3.3-0-pre.2`.
|
||||
|
||||
`0-pre.2` doit d'abord introduire le Gradle Wrapper et prouver sur Snake/ARM64 que `:game-snake-poc:assembleDebug` déclenche lui-même le build Rust/SDL3 sans `scripts/build_android_rust.py`. Une défaillance de la gate ou une erreur du cadrage produit d'abord `0-pre.1.fix.N`.
|
||||
Reference in New Issue
Block a user