0.3.3-3-rc.1
This commit is contained in:
151
docs/testing/006-V0_3_3_RC_VALIDATION_MATRIX.md
Normal file
151
docs/testing/006-V0_3_3_RC_VALIDATION_MATRIX.md
Normal file
@@ -0,0 +1,151 @@
|
||||
<!-- file: docs/testing/006-V0_3_3_RC_VALIDATION_MATRIX.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Matrice de validation RC 0.3.3
|
||||
|
||||
## Objectif
|
||||
|
||||
`0.3.3-3-rc.1` est une candidate gelée. Elle ne modifie ni gameplay, ni moteur, ni JNI, ni Java, ni logique Gradle : elle revalide qu'un état reproductible du pipeline Android SDL3 natif peut être promu mécaniquement vers `0.3.3`.
|
||||
|
||||
## Gel fonctionnel
|
||||
|
||||
Pendant `3-rc.*`, seules les corrections autorisées par `VER-RC-*` sont admises. Toute nouvelle ABI, nouvelle API Android, nouvelle capability réseau, nouvelle abstraction, refactor volontaire ou changement de comportement est hors scope.
|
||||
|
||||
La future convention de versions `alpha.M / beta.M / rc.M` n'est pas appliquée à `0.3.3`; elle commencera avec la prochaine version et ne doit provoquer aucune réécriture de l'historique.
|
||||
|
||||
## Gate workspace
|
||||
|
||||
Depuis la racine :
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
La suite workspace complète est répétée en RC parce que la version Cargo passe à `0.3.3-3-rc.1`.
|
||||
|
||||
## Rebuild Android propre
|
||||
|
||||
```bash
|
||||
(cd Android && gradle :game-snake-poc:clean :game-reflex-poc:clean)
|
||||
|
||||
(cd Android && gradle :game-snake-poc:assembleDebug)
|
||||
(cd Android && gradle :game-reflex-poc:assembleDebug)
|
||||
|
||||
(cd Android && gradle :game-snake-poc:bundleRelease)
|
||||
(cd Android && gradle :game-reflex-poc:bundleRelease)
|
||||
```
|
||||
|
||||
Le build doit utiliser le JDK normal de l'environnement et un Gradle système `>= 9.6.0`; aucun `JAVA_HOME` spécifique au projet et aucun wrapper Gradle natif ne sont requis.
|
||||
|
||||
## Contrôle quatre ABI
|
||||
|
||||
```bash
|
||||
for game in game-snake-poc game-reflex-poc; do
|
||||
APK="Android/${game}/build/outputs/apk/debug/${game}-debug.apk"
|
||||
AAB="Android/${game}/build/outputs/bundle/release/${game}-release.aab"
|
||||
|
||||
test -f "$APK"
|
||||
test -f "$AAB"
|
||||
|
||||
for abi in arm64-v8a armeabi-v7a x86_64 x86; do
|
||||
unzip -Z1 "$APK" | grep -Fx "lib/${abi}/libSDL3.so"
|
||||
unzip -Z1 "$APK" | grep -Fx "lib/${abi}/libgame_android_entrypoint.so"
|
||||
unzip -Z1 "$AAB" | grep -Fx "base/lib/${abi}/libSDL3.so"
|
||||
unzip -Z1 "$AAB" | grep -Fx "base/lib/${abi}/libgame_android_entrypoint.so"
|
||||
done
|
||||
done
|
||||
```
|
||||
|
||||
## Packaging 16 KB
|
||||
|
||||
```bash
|
||||
ZIPALIGN="$(find "$ANDROID_HOME/build-tools" -mindepth 2 -maxdepth 2 -type f -name zipalign -print | sort -V | tail -n 1)"
|
||||
test -x "$ZIPALIGN"
|
||||
|
||||
"$ZIPALIGN" -c -P 16 -v 4 Android/game-snake-poc/build/outputs/apk/debug/game-snake-poc-debug.apk
|
||||
"$ZIPALIGN" -c -P 16 -v 4 Android/game-reflex-poc/build/outputs/apk/debug/game-reflex-poc-debug.apk
|
||||
```
|
||||
|
||||
Recontrôler les segments ELF 64 bits Release :
|
||||
|
||||
```bash
|
||||
OBJDUMP="$ANDROID_HOME/ndk/28.2.13676358/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-objdump"
|
||||
test -x "$OBJDUMP"
|
||||
|
||||
for game in game-snake-poc game-reflex-poc; do
|
||||
for abi in arm64-v8a x86_64; do
|
||||
for so in \
|
||||
"Android/${game}/build/generated/sasedevNative/release/${abi}/jniLibs/${abi}/libSDL3.so" \
|
||||
"Android/${game}/build/generated/sasedevNative/release/${abi}/jniLibs/${abi}/libgame_android_entrypoint.so"; do
|
||||
test -f "$so"
|
||||
"$OBJDUMP" -p "$so" | grep 'LOAD'
|
||||
done
|
||||
done
|
||||
done
|
||||
```
|
||||
|
||||
Chaque ligne `LOAD` des ABI 64 bits doit rester au minimum à `align 2**14`. Les ABI 32 bits restent supportées mais ne sont pas soumises à ce critère Play 16 KB.
|
||||
|
||||
## Smoke AVD API 36 x86_64
|
||||
|
||||
Avec l'AVD de référence déjà disponible, utiliser son serial ADB, actuellement `emulator-5554` lorsqu'il est lancé. Pour chaque jeu :
|
||||
|
||||
```bash
|
||||
SERIAL=emulator-5554
|
||||
APK=Android/game-snake-poc/build/outputs/apk/debug/game-snake-poc-debug.apk
|
||||
|
||||
adb -s "$SERIAL" install -r "$APK"
|
||||
adb -s "$SERIAL" shell am force-stop com.sasedev.games.snake
|
||||
adb -s "$SERIAL" logcat -c
|
||||
adb -s "$SERIAL" shell am start -W -n com.sasedev.games.snake/.SnakeActivity
|
||||
sleep 3
|
||||
adb -s "$SERIAL" shell pidof com.sasedev.games.snake
|
||||
adb -s "$SERIAL" logcat -d -b crash
|
||||
```
|
||||
|
||||
Puis :
|
||||
|
||||
```bash
|
||||
SERIAL=emulator-5554
|
||||
APK=Android/game-reflex-poc/build/outputs/apk/debug/game-reflex-poc-debug.apk
|
||||
|
||||
adb -s "$SERIAL" install -r "$APK"
|
||||
adb -s "$SERIAL" shell am force-stop com.sasedev.games.reflex
|
||||
adb -s "$SERIAL" logcat -c
|
||||
adb -s "$SERIAL" shell am start -W -n com.sasedev.games.reflex/.ReflexActivity
|
||||
sleep 3
|
||||
adb -s "$SERIAL" shell pidof com.sasedev.games.reflex
|
||||
adb -s "$SERIAL" logcat -d -b crash
|
||||
```
|
||||
|
||||
Vérifier humainement : rendu visible, assets présents, Snake réagit au swipe, Reflex réagit au tap, puis absence de crash immédiat.
|
||||
|
||||
## Smoke ARM64 réel
|
||||
|
||||
Sur le Samsung ou un autre appareil ARM64 disponible, remplacer `<serial>` :
|
||||
|
||||
```bash
|
||||
SERIAL=<serial>
|
||||
|
||||
adb -s "$SERIAL" shell getprop ro.build.version.sdk
|
||||
adb -s "$SERIAL" shell getprop ro.product.cpu.abi
|
||||
```
|
||||
|
||||
Rejouer les deux blocs Snake/Reflex précédents avec `SERIAL=<serial>`. Vérifier humainement rendu, tactile et sortie/Back.
|
||||
|
||||
## Frontières non rejouées par défaut
|
||||
|
||||
Les smokes API 21/x86 et API 35/x86_64 `ps16k` ont été établis en `0-pre.5`, puis aucune logique native/Gradle n'a changé. Ils ne sont pas répétés en RC sauf si un correctif RC touche le pipeline Android, le NDK, SDL3, les ABI, `minSdk`, le packaging ou les bibliothèques natives.
|
||||
|
||||
## Promotion stable
|
||||
|
||||
Si cette gate est propre et qu'aucun correctif n'est nécessaire, la promotion vers `0.3.3` est mécanique : version stable, entrée stable du changelog, historique RC, clôture du plan, delta de release et mise à jour mécanique du prompt `0.3.4` si la base stable doit être rendue certaine. Aucun code fonctionnel ne doit changer.
|
||||
Reference in New Issue
Block a user