From 0ad980a06b173ecf8603208d59f9bb4f4897cc7f Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Mon, 21 Sep 2026 16:34:14 +0200 Subject: [PATCH] 0.3.3 --- CHANGELOG.md | 13 ++- Cargo.toml | 2 +- README.md | 8 +- ROADMAP.md | 4 +- deltas/0.3.3/rel.001.md | 59 +++++++++++ docs/plans/000-README.md | 4 +- ...03-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md | 10 +- history/0.3.3/3-rc.1.md | 100 ++++++++++++++++++ 8 files changed, 189 insertions(+), 11 deletions(-) create mode 100644 deltas/0.3.3/rel.001.md create mode 100644 history/0.3.3/3-rc.1.md diff --git a/CHANGELOG.md b/CHANGELOG.md index ecf5be1..64c45f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,19 @@ - + # Changelog +## 0.3.3 — 2026-09-21 + +- publication stable du pipeline Android SDL3 natif multi-ABI possédé par Gradle/Cargo, sans orchestrateur Python de build ni `src/main/jniLibs` généré dans les sources ; +- APK Debug universal et AAB Release produits pour `arm64-v8a`, `armeabi-v7a`, `x86_64` et `x86`, avec `minSdk 21` conservé et fumé sur Android 5.0/API 21 x86 ; +- compatibilité pages mémoire 16 KB validée pour les ABI 64 bits : `zipalign -P 16`, segments ELF `align 2**14` et smoke API 35 x86_64 `ps16k` avec `PAGE_SIZE=16384` ; +- smokes finaux Snake et Reflex validés sur AVD API 36 x86_64 et Samsung API 29 ARM64, avec installation réussie, activité lancée, processus vivant et aucune entrée crash remontée ; +- environnement Android natif validé avec JDK courant et Gradle système `>= 9.6.0`, sans wrapper Gradle ni `JAVA_HOME` imposé au projet ; +- préparation de `0.3.4` pour l'API de transport realtime/WebSocket et pour la nouvelle nomenclature prospective `alpha.M / beta.M / rc.M`, sans aucune réécriture des anciens `deltas/`, `history/`, prompts ou entrées historiques. + +Les détails des phases `pre`, `beta`, `rc` et de leurs correctifs restent dans `deltas/0.3.3/` et `history/0.3.3/`. + ## 0.3.3-3-rc.1 — 2026-09-21 - gel fonctionnel du pipeline Android SDL3 natif désormais possédé par Gradle/Cargo, sans orchestrateur Python de build ni `src/main/jniLibs` généré dans les sources ; diff --git a/Cargo.toml b/Cargo.toml index dc6f435..9aa91e0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,7 +21,7 @@ members = [ ] [workspace.package] -version = "0.3.3-3-rc.1" +version = "0.3.3" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/games" diff --git a/README.md b/README.md index 5446a80..e4e7539 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ - + # games.sasedev @@ -25,11 +25,11 @@ Workspace expérimental puis productif pour des jeux multiplateformes principale ## Baseline -Version stable de référence : `0.3.1`. +Version stable de référence : `0.3.3`. -Version active de développement : `0.3.3-0-pre.1`. `0.3.2` reste différée. +Prochaine version planifiée : `0.3.4-alpha.1`. `0.3.2` reste différée. -La stable `0.3.1` conserve Snake Tauri Android comme POC de référence validé sur AVD x86_64 et appareil ARM64 réel. `0.3.3-0-pre.1` cadre maintenant la voie Android SDL3 native multi-ABI, le packaging Gradle/APK/AAB, le plancher Android soutenable et la compatibilité des bibliothèques natives avec les pages mémoire de 16 KB. +La stable `0.3.3` livre la voie Android SDL3 native multi-ABI : build Gradle/Cargo sans orchestrateur Python, APK Debug universal et AAB Release pour `arm64-v8a`, `armeabi-v7a`, `x86_64` et `x86`, `minSdk 21` réellement fumé et compatibilité pages mémoire 16 KB validée sur les ABI 64 bits. `0.3.4-alpha.1` ouvrira la prochaine session avec la migration de nomenclature puis le cadrage de l'API de transport realtime/WebSocket. Les deux premiers jeux sont des POC structurels : `game-reflex-poc` et `game-snake-poc`. Ils existent d'abord pour valider les frontières du workspace, le moteur, les assets et le packaging multiplateforme. diff --git a/ROADMAP.md b/ROADMAP.md index 4c8ec8f..55d3603 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,5 +1,5 @@ - + # Roadmap @@ -48,7 +48,7 @@ Le détail historique des prereleases `0.1.0-*` reste dans `deltas/0.1.0/` et `h - (x) `0.3.1` — Snake Tauri Android livré comme POC de référence réutilisant la baseline Web/WASM ; la production Android reste orientée SDL3 natif. - (d) `0.3.2` — Tauri Desktop + Snake est différé tant qu’une solution de monétisation desktop/WebView, notamment vidéo récompensée, n’est pas démontrée techniquement et contractuellement ; ne pas créer cette distribution seulement pour réutiliser le host Web. -- ( ) `0.3.3` — Android SDL3 natif multi-ABI avec Cargo/Gradle natifs, APK universal pour tests, AAB comme cible de distribution et évaluation du `minSdk`/support d’anciennes versions Android, sans script Python de build. +- (x) `0.3.3` — Android SDL3 natif multi-ABI livré avec Cargo/Gradle natifs, APK universal pour tests, AAB comme cible de distribution, `minSdk 21` fumé et compatibilité 16 KB 64 bits validée, sans script Python de build. - ( ) `0.3.4` — API de transport realtime + WebSocket/tokio-tungstenite baseline, sans serveur Uroburas Mode 3. - ( ) `0.3.5` — POC WebTransport/QUIC sur le même protocole, avec comparaison mesurée et fallback WebSocket. - ( ) `0.3.6` — consolidation des POC plateforme/réseau et préparation de la baseline `0.4.x`. diff --git a/deltas/0.3.3/rel.001.md b/deltas/0.3.3/rel.001.md new file mode 100644 index 0000000..ec8fc1f --- /dev/null +++ b/deltas/0.3.3/rel.001.md @@ -0,0 +1,59 @@ + + + +# Delta 0.3.3 — release stable + +## Base + +Base fonctionnelle validée : `0.3.3-3-rc.1`. + +Le delta documentaire `0.3.3-3-rc.1.fix.1` est également appliqué et validé ; il n'a pas modifié la version Cargo ni le runtime. + +## Objet + +Promouvoir mécaniquement la candidate validée vers `0.3.3` sans introduire de nouveau comportement. + +## Changements + +La release stable : + +- passe `workspace.package.version` de `0.3.3-3-rc.1` à `0.3.3` ; +- positionne `README.md` sur `0.3.3` comme stable de référence et `0.3.4-alpha.1` comme prochaine version planifiée ; +- marque `0.3.3` terminée dans `ROADMAP.md` ; +- ajoute l'entrée stable `0.3.3` dans `CHANGELOG.md` ; +- enregistre la validation effective de la RC dans `history/0.3.3/3-rc.1.md` ; +- clôt `docs/plans/003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md` et son entrée d'index ; +- conserve `prompts/005-V0_3_4_START_PROMPT.md` comme transmission de la prochaine session. + +## Frontière de release + +Aucun changement de gameplay, code Rust, dépendance, Gradle, Android, JNI, Java, ABI, `minSdk`, NDK, SDL3, asset, protocole ou architecture n'est introduit après la RC. + +La nouvelle convention de prerelease n'est pas rétroactivement appliquée à `0.3.3`. Elle commencera avec `0.3.4-alpha.1`, qui mettra à jour les règles actives sans renommer ni réécrire l'historique existant. + +## Validation proportionnelle + +La gate RC complète a déjà été validée sur un état fonctionnellement identique. La promotion stable demande uniquement les contrôles proportionnels aux changements de version/documentation : + +```bash +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 +``` + +Les rebuilds Android, Clippy strict, suite workspace complète, contrôles APK/AAB/ELF et smokes runtime ne sont pas répétés puisque la promotion stable ne modifie aucun comportement ni pipeline. + +## Publication + +Après validation de ce delta : + +- commit de release ; +- tag stable unique `v0.3.3` ; +- archive/tag de dépôt utilisée comme base de la prochaine session ; +- démarrage de `0.3.4` uniquement depuis `v0.3.3` avec `prompts/005-V0_3_4_START_PROMPT.md` ; +- première tranche suivante : migration de gouvernance puis `0.3.4-alpha.1` ; +- aucun ancien `deltas/`, `history/`, prompt ou changelog n'est renommé pour harmoniser sa nomenclature. diff --git a/docs/plans/000-README.md b/docs/plans/000-README.md index 3d3234e..2f5c57a 100644 --- a/docs/plans/000-README.md +++ b/docs/plans/000-README.md @@ -1,5 +1,5 @@ - + # Plans de versions games.sasedev @@ -13,4 +13,4 @@ Le `ROADMAP.md` reste la trajectoire macroscopique du projet ; les deltas décri - [`001-V0_3_0_WEB_SNAKE_POC_PLAN.md`](001-V0_3_0_WEB_SNAKE_POC_PLAN.md) — plan clôturé de `0.3.0`, baseline Snake et premier POC Web direct. - [`002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md`](002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md) — plan clôturé de `0.3.1`, second host Snake Tauri Android. -- [`003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md`](003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md) — plan actif de `0.3.3`, pipeline Android SDL3 natif Gradle/Cargo multi-ABI. +- [`003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md`](003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md) — plan clôturé de `0.3.3`, pipeline Android SDL3 natif Gradle/Cargo multi-ABI. diff --git a/docs/plans/003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md b/docs/plans/003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md index 88e7093..35914e3 100644 --- a/docs/plans/003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md +++ b/docs/plans/003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md @@ -1,5 +1,5 @@ - + # Plan 0.3.3 — Android SDL3 natif multi-ABI et packaging Gradle @@ -188,6 +188,14 @@ La convention de prerelease reste inchangée jusqu'à la stable `0.3.3`. La migr Promotion mécanique de la RC validée. Aucun changement fonctionnel ou architectural. +## Statut de clôture + +Plan clôturé avec la publication stable `0.3.3` le 2026-09-21. + +La RC a confirmé la reproductibilité du workspace, les builds Android Debug/Release quatre ABI, les APK/AAB, `zipalign -P 16`, les segments ELF 64 bits `align 2**14` et les smokes Snake/Reflex sur AVD API 36 x86_64 et appareil ARM64 réel. Les preuves de frontière API 21/x86 et API 35/x86_64 `ps16k` ont été acquises avant beta puis conservées sans régression du pipeline natif. + +Aucun comportement nouveau n'est introduit par la promotion stable. La suite appartient à `0.3.4`, qui commencera sous la nouvelle convention `alpha.M / beta.M / rc.M` sans réécrire les jalons historiques de `0.3.3` ou antérieurs. + ## Sizing Le scope reste raisonnable pour une seule version avec cinq prereleases techniques avant beta, la nouvelle `0-pre.4` isolant volontairement l'extension 32 bits du packaging AAB/16 KB. Les zones susceptibles de forcer un split de version sont uniquement une incompatibilité profonde de `cargo-ndk` avec AGP/Gradle, une SDL3 AAR non exploitable par Prefab comme prévu, ou une incompatibilité effective d'une des deux ABI 32 bits encore supportées. diff --git a/history/0.3.3/3-rc.1.md b/history/0.3.3/3-rc.1.md new file mode 100644 index 0000000..306e85c --- /dev/null +++ b/history/0.3.3/3-rc.1.md @@ -0,0 +1,100 @@ + + + +# Historique 0.3.3-3-rc.1 + +## Statut + +`0.3.3-3-rc.1` a été validée par l'utilisateur le 2026-09-21 puis retenue pour promotion mécanique vers la stable `0.3.3`. + +Le correctif `3-rc.1.fix.1` est strictement documentaire : il enrichit le prompt `0.3.4` sans changer la version Cargo, le runtime ou le pipeline Android. Ses audits Markdown/distribution ont ensuite été validés. + +## Gate workspace et packaging + +La gate RC a confirmé : + +- audits Rust général, exports, workspace, Markdown et distribution propres ; +- `cargo fmt --all` / `--check`, `cargo check --workspace`, Clippy strict et suite workspace complète avec 35 tests réussis ; +- rebuild propre Snake/Reflex en Debug et Release ; +- quatre ABI `arm64-v8a`, `armeabi-v7a`, `x86_64`, `x86` dans les APK Debug et AAB Release ; +- `zipalign -c -P 16 -v 4` avec `Verification successful` sur les deux APK. + +## Alignement ELF 64 bits + +Les bibliothèques Release `libSDL3.so` et `libgame_android_entrypoint.so` de Snake et Reflex ont été inspectées pour `arm64-v8a` et `x86_64` avec `llvm-objdump` du NDK `28.2.13676358`. + +Toutes les lignes `LOAD` observées sont alignées à : + +```text +align 2**14 +``` + +Le critère 16 KB 64 bits de la matrice RC est donc satisfait. + +## Smokes AVD API 36 x86_64 + +Snake : + +```text +install: Success +Status: ok +LaunchState: COLD +pidof: 4777 +crash buffer: aucune entrée remontée +``` + +Reflex : + +```text +install: Success +Status: ok +LaunchState: COLD +pidof: 5545 +crash buffer: aucune entrée remontée +``` + +## Smokes ARM64 réels + +Le Samsung de validation rapporte : + +```text +API 29 +ro.product.cpu.abi=arm64-v8a +``` + +Snake : + +```text +install: Success +Status: ok +LaunchState: COLD +pidof: 21137 +crash buffer: aucune entrée remontée +``` + +Reflex : + +```text +install: Success +Status: ok +LaunchState: UNKNOWN (-1) +pidof: 22830 +crash buffer: aucune entrée remontée +``` + +`LaunchState: UNKNOWN (-1)` n'a pas été traité comme un crash : l'activité a terminé la commande `am start -W`, le processus est resté vivant et le buffer crash n'a remonté aucune entrée. + +Les observations humaines demandées par la matrice RC ont été exécutées dans le cadre de ces smokes et aucun défaut supplémentaire n'a été signalé avant la promotion stable. + +## Frontières déjà acquises + +Aucune modification native/Gradle n'étant intervenue depuis les preuves précédentes, la RC conserve aussi : + +- Android 5.0/API 21 x86 avec installation et démarrage Snake ; +- Android 15/API 35 x86_64 `ps16k` avec `PAGE_SIZE=16384`, installation, démarrage et processus vivant ; +- support des quatre ABI dans le pipeline Gradle/Cargo ; +- suppression du builder Python Android historique et interdiction des `src/main/jniLibs` générés. + +## Conclusion + +Aucun défaut nécessitant un `3-rc.1.fix.N` fonctionnel n'a été remonté. La promotion vers `0.3.3` reste strictement mécanique.