# Matrice de validation RC 0.3.1 ## Objectif `0.3.1-3-rc.1` est une candidate gelée. Elle n'ajoute aucune fonctionnalité au POC Snake Tauri Android ; elle vérifie qu'un état reproductible peut être promu mécaniquement vers `0.3.1`. Le host Tauri Android reste un POC de référence. La voie Android productive reste SDL3 natif/Java/JNI. Aucun AAB Tauri n'est requis pour cette RC. ## Gel fonctionnel Pendant `3-rc.*`, seules les corrections autorisées par `VER-RC-*` sont admises. Tout nouveau gameplay, contrôle swipe, refactor Web/Tauri, framework commun, intégration publicitaire ou changement volontaire de comportement est hors scope. ## Gate workspace Depuis la racine : ```bash export JAVA_HOME=/usr/lib/jvm/temurin-17-jdk-amd64 cargo fmt --all cargo fmt --all -- --check 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 check --workspace cargo clippy --workspace --all-targets --all-features -- -D warnings cargo test --workspace --all-targets --all-features ``` Cette suite complète est volontairement répétée au jalon RC parce que la version technique et les métadonnées frontend sont promues vers la candidate. ## Packaging Android autonome Installer/actualiser les dépendances frontend, puis laisser Tauri posséder le build WASM/Vite : ```bash (cd crates/apps/game-snake-poc-tauri && npm install) (cd crates/apps/game-snake-poc-tauri && \ cargo tauri android build --debug --apk --target aarch64 --target x86_64) ``` Ne pas lancer `npm run build` manuellement. Le hook `beforeBuildCommand` doit construire le WASM release, générer les bindings, exécuter TypeScript/Vite et copier les assets. Le package RC de validation reste un APK Debug universal car `0.3.1` ne constitue pas la voie Android de production et ne possède aucun secret/signing de store. L'AAB de production sera étudié dans la future version Android SDL3 native. ## Contrôle ABI À partir du chemin `` affiché par Tauri : ```bash unzip -l | grep -E 'lib/(arm64-v8a|x86_64)/libgame_snake_poc_tauri_lib\.so' ``` Les deux entrées doivent être présentes. ## Smoke AVD x86_64 Lancer l'AVD de référence dans un terminal séparé : ```bash emulator -avd sasedev_games_api36 ``` Puis : ```bash adb devices -l adb -s emulator-5554 install -r adb -s emulator-5554 shell am start -n com.sasedev.games.snake.tauri/.MainActivity ``` Vérifier : démarrage, Canvas, assets, WASM, contrôles disponibles, lifecycle background/foreground, reprise sans rattrapage et Back sans crash. ## Smoke ARM64 réel Avec le Galaxy S9+ ou un autre appareil ARM64 disponible : ```bash adb -s shell getprop ro.product.cpu.abi adb -s install -r adb -s shell am start -n com.sasedev.games.snake.tauri/.MainActivity ``` Vérifier : provenance `android / tauri-webview / wasm / phone / touch`, contrôles tactiles, background/foreground, reprise sans rattrapage, rotation/resize si disponible et plusieurs Back. Aucun Vite, `adb reverse` ou port `1436` ne doit être nécessaire. Le crash `FORTIFY: pthread_mutex_lock called on a destroyed mutex` observé une fois en dev reste un point de surveillance. Sa reproduction sur l'APK autonome RC bloque la promotion stable et impose un `3-rc.1.fix.N`; son absence pendant les smokes RC permet de clore ce risque comme non reproductible dans l'état candidat. ## Promotion stable Si la gate RC est propre et qu'aucun correctif n'est nécessaire, la promotion vers `0.3.1` est mécanique : versions stables, entrée stable du `CHANGELOG.md`, historique RC, clôture du plan et delta de release. Aucun code fonctionnel ne doit changer.