# Delta 0.3.1-0-pre.2.fix.2 ## Base Base déclarée : `0.3.1-0-pre.2.fix.1`. ## Objet Ce fix retire la migration Gradle 9 locale introduite par `fix.1`, revient au chemin Android officiellement généré par Tauri 2 stable et corrige l'audit workspace pour qu'il n'analyse pas le contenu généré sous `gen/` comme du code source du dépôt. Il corrige également une violation documentaire de `fix.1` : `history/0.3.1/0-pre.2.md` avait été créé alors que `0-pre.2` n'était pas accepté. Aucune entrée `history/` n'est conservée pour ce jalon tant que sa gate n'est pas verte. ## Cause confirmée Le smoke `0-pre.2` a établi trois faits distincts : - Tauri sélectionne correctement le NDK side-by-side sous `$ANDROID_HOME/ndk/` ; l'absence de `NDK_HOME` utilisateur n'est pas la cause du défaut ; - le wrapper Android généré par Tauri CLI `2.11.3` utilise Gradle `8.14.3`, qui ne peut pas s'exécuter avec Java 25 ; - `cargo tauri android init` crée légitimement `gen/android/app/src/main/assets`, mais l'audit `GAME-ASSET-001` parcourait jusque-là les répertoires générés. La dernière CLI Tauri 2 stable vérifiée pendant ce fix est `2.11.5`. Son template Android conserve Gradle `8.14.3` et AGP `8.11.0`. La migration Gradle 9 existe upstream mais n'est pas encore publiée dans la branche stable Tauri 2 ; la reproduire par patch local ferait du projet games.sasedev le mainteneur d'un fork implicite du template Tauri. ## Correction Tauri Android Le host Snake ne modifie plus `gen/android` : - suppression de `scripts/prepare-android-gradle.mjs` ; - suppression du hook `android:prepare` dans `package.json` ; - restauration des hooks Tauri vers le seul pipeline WASM/Vite ; - `build.rs` délègue uniquement à `tauri_build::build()` ; - l'audit de distribution interdit désormais la réintroduction d'un patch `gen/android` dans ces deux surfaces. Pour Tauri 2 stable, le contrat local devient celui recommandé par Tauri : `JAVA_HOME` doit pointer vers un JDK compatible avec le wrapper généré, de préférence le JBR livré avec Android Studio. Le Java 25 global peut rester installé ; il ne doit simplement pas être le JDK utilisé par les commandes Android Tauri tant que le wrapper stable ne le supporte pas. Le Gradle global installé sous `/opt/gradle` n'est pas utilisé par `gen/android/gradlew` et n'entre pas dans le contrat de build. ## Correction de l'audit workspace `gen/` est déjà un chemin généré et ignoré par `.gitignore`. `audit_project_workspace_rules.py` exclut désormais ces arbres pour les contrôles qui portent sur la propriété du code source : - `GAME-ASSET-001` n'interdit plus les `assets` créés par le projet Android Tauri généré ; - `GAME-ANDROID-001` n'interdit plus les éventuelles sources Java générées sous `gen/`. Les assets et sources Java réellement versionnés hors des emplacements autorisés restent interdits. ## Historique `history/0.3.1/0-pre.2.md` est supprimé. `DOC-HIST-002` et `DOC-HIST-003` imposent qu'une entrée d'historique ne soit créée qu'après acceptation effective du jalon. Le prochain delta ne recréera cette entrée que si la gate `0-pre.2.fix.2` est validée. ## Suppressions Le manifest `deltas/0.3.1/0-pre.2.fix.2.delete.txt` supprime : - `crates/apps/game-snake-poc-tauri/scripts/prepare-android-gradle.mjs` ; - `history/0.3.1/0-pre.2.md`. Après extraction du delta à la racine du dépôt, appliquer les suppressions avec : ```bash while IFS= read -r path; do rm -f -- "$path" done < deltas/0.3.1/0-pre.2.fix.2.delete.txt ``` ## Fichiers modifiés - `Cargo.toml` ; - `README.md` ; - `crates/apps/game-snake-poc-tauri/build.rs` ; - `crates/apps/game-snake-poc-tauri/package.json` ; - `crates/apps/game-snake-poc-tauri/README.md` ; - `crates/apps/game-snake-poc-tauri/USAGE.md` ; - `docs/plans/002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md` ; - `scripts/audit_project_workspace_rules.py` ; - `scripts/audit_distribution_layout.py`. ## Fichiers ajoutés - `deltas/0.3.1/0-pre.2.fix.2.md` ; - `deltas/0.3.1/0-pre.2.fix.2.delete.txt`. ## Validation statique du générateur Le générateur peut exécuter les audits statiques et vérifier explicitement que les chemins générés Tauri ne déclenchent plus `GAME-ASSET-001` / `GAME-ANDROID-001`. Ces contrôles ne remplacent pas les gates build/runtime utilisateur. ## Gate utilisateur Après application du delta et de son manifest de suppression : ```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 cargo test -p game-snake-poc-wasm --all-targets --all-features ``` Avant le smoke Android, sélectionner le JBR d'Android Studio dans le shell. Exemple si Android Studio est sous `/opt/android-studio` : ```bash export JAVA_HOME=/opt/android-studio/jbr "$JAVA_HOME/bin/java" -version (cd crates/apps/game-snake-poc-tauri && cargo tauri android dev) ``` Si Android Studio se trouve ailleurs, remplacer `/opt/android-studio/jbr` par son chemin réel. Ne pas exécuter `npm run dev` directement et ne pas rejouer `cargo tauri android init` pour ce fix lorsque `gen/android` existe déjà. ## Critère d'acceptation Le fix est accepté lorsque : - les trois audits Python sont propres malgré la présence du `gen/android` local ; - Cargo/Clippy/tests ciblés sont propres ; - `cargo tauri android dev` n'échoue plus sur `Unsupported class file major version 69` ; - le host minimal atteint le smoke Android prévu par `0-pre.2`.