Files
games/deltas/0.3.1/0-pre.2.fix.2.md

5.7 KiB

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/<version> ; 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 :

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 :

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 :

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.