From 7e77b296427d3ef58f0ff40fc928086cd3ac5634 Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Thu, 17 Sep 2026 18:05:10 +0200 Subject: [PATCH] 0.1.0-3-rc.1 --- Android/game-reflex-poc/build.gradle | 4 +- Android/game-snake-poc/build.gradle | 4 +- CHANGELOG.md | 10 +- Cargo.toml | 4 +- ROADMAP.md | 4 +- .../apps/game-reflex-poc-tauri/package.json | 2 +- .../game-reflex-poc-tauri/tauri.conf.json | 2 +- deltas/0.1.0/3-rc.1.md | 82 ++++++++++ docs/000-README.md | 4 +- docs/rules/RULES_COMMANDS.md | 12 +- docs/testing/003-RC_VALIDATION_MATRIX.md | 144 ++++++++++++++++++ history/0.1.0/2-beta.1.fix.4.md | 109 +++++++++++++ 12 files changed, 367 insertions(+), 14 deletions(-) create mode 100644 deltas/0.1.0/3-rc.1.md create mode 100644 docs/testing/003-RC_VALIDATION_MATRIX.md create mode 100644 history/0.1.0/2-beta.1.fix.4.md diff --git a/Android/game-reflex-poc/build.gradle b/Android/game-reflex-poc/build.gradle index 7a9a969..59418fa 100644 --- a/Android/game-reflex-poc/build.gradle +++ b/Android/game-reflex-poc/build.gradle @@ -1,5 +1,5 @@ // file: Android/game-reflex-poc/build.gradle -// version: 21 +// version: 22 plugins { id 'com.android.application' @@ -18,7 +18,7 @@ android { minSdk 21 targetSdk 36 versionCode 1 - versionName '0.1.0-2-beta.1.fix.4' + versionName '0.1.0-3-rc.1' } compileOptions { diff --git a/Android/game-snake-poc/build.gradle b/Android/game-snake-poc/build.gradle index 40e8c1e..5c592a8 100644 --- a/Android/game-snake-poc/build.gradle +++ b/Android/game-snake-poc/build.gradle @@ -1,5 +1,5 @@ // file: Android/game-snake-poc/build.gradle -// version: 21 +// version: 22 plugins { id 'com.android.application' @@ -18,7 +18,7 @@ android { minSdk 21 targetSdk 36 versionCode 1 - versionName '0.1.0-2-beta.1.fix.4' + versionName '0.1.0-3-rc.1' } compileOptions { diff --git a/CHANGELOG.md b/CHANGELOG.md index 8cc6720..53da220 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,16 @@ - + # Changelog +## 0.1.0-3-rc.1 — 2026-09-17 + +- validation de `2-beta.1.fix.4` sur Desktop SDL3 natif, Tauri/WASM, Android AVD x86_64 et Galaxy S9+ ARM64 ; +- validation du logging Android vers logcat et du Back système Android 16 via observer non consommant ; +- clôture de la phase beta et gel fonctionnel du socle `0.1.0` ; +- entrée en phase RC centrée sur la reproductibilité des builds de release, les artefacts de distribution et la documentation de livraison ; +- ajout d'une matrice RC et d'une gate workspace complète avant promotion vers `0.1.0`. + ## 0.1.0-2-beta.1 — 2026-09-17 - validation de `1-alpha.2.fix.5` avec Reflex exécuté dans Tauri/WebView/WASM via Vite + TypeScript ; diff --git a/Cargo.toml b/Cargo.toml index d8d6192..c3f138c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ # file: Cargo.toml -# version: 33 +# version: 34 [workspace] resolver = "3" @@ -19,7 +19,7 @@ members = [ ] [workspace.package] -version = "0.1.0-2-beta.1.fix.4" +version = "0.1.0-3-rc.1" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/games" diff --git a/ROADMAP.md b/ROADMAP.md index 050c16c..2203877 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,5 +1,5 @@ - + # Roadmap @@ -18,6 +18,6 @@ - [x] `0-pre.11` — POC Snake jouable et validation de la réutilisation du moteur. - [x] `1-alpha.1` — première API moteur V1 volontairement stabilisée et provenance runtime/input pour les futures sessions et scores. - [x] `1-alpha.2` — POC Web/WASM embarqué dans Tauri, sans site distant, et validation de la frontière des services Web/ads. -- [ ] `2-beta.1` — stabilisation, packaging, tests multi-appareils. +- [x] `2-beta.1` — stabilisation, packaging, tests multi-appareils. - [ ] `3-rc.1` — candidat de release du socle 0.1.0. - [ ] `0.1.0` — première baseline stable du framework POC. diff --git a/crates/apps/game-reflex-poc-tauri/package.json b/crates/apps/game-reflex-poc-tauri/package.json index cf8be6a..c6d535b 100644 --- a/crates/apps/game-reflex-poc-tauri/package.json +++ b/crates/apps/game-reflex-poc-tauri/package.json @@ -1,7 +1,7 @@ { "name": "game-reflex-poc-tauri", "private": true, - "version": "0.1.0-2-beta.1.fix.4", + "version": "0.1.0-3-rc.1", "type": "module", "scripts": { "dev": "vite", diff --git a/crates/apps/game-reflex-poc-tauri/tauri.conf.json b/crates/apps/game-reflex-poc-tauri/tauri.conf.json index 74b3d4b..c78eb05 100644 --- a/crates/apps/game-reflex-poc-tauri/tauri.conf.json +++ b/crates/apps/game-reflex-poc-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Reflex POC Tauri", - "version": "0.1.0-2-beta.1.fix.4", + "version": "0.1.0-3-rc.1", "identifier": "com.sasedev.games.reflex.tauri", "build": { "beforeDevCommand": { diff --git a/deltas/0.1.0/3-rc.1.md b/deltas/0.1.0/3-rc.1.md new file mode 100644 index 0000000..6f37dc6 --- /dev/null +++ b/deltas/0.1.0/3-rc.1.md @@ -0,0 +1,82 @@ + + + +# Delta 0.1.0-3-rc.1 + +## Base + +Base validée : `0.1.0-2-beta.1.fix.4`. + +## Objectif + +Entrer en phase RC sans changement fonctionnel. + +Le socle `0.1.0` est gelé ; la priorité devient la reproductibilité des builds, les artefacts de release et la promotion stable. + +## Historique beta + +La validation complète de la beta est enregistrée sous : + +```text +history/0.1.0/2-beta.1.fix.4.md +``` + +## Matrice RC + +La matrice durable est documentée dans : + +```text +docs/testing/003-RC_VALIDATION_MATRIX.md +``` + +## Gates + +```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 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 +``` + +## Desktop release + +```bash +cargo build -p game-reflex-poc-desktop --release +cargo build -p game-snake-poc-desktop --release + +../builds/sasedev-games/target/release/game-reflex-poc-desktop +../builds/sasedev-games/target/release/game-snake-poc-desktop +``` + +## Tauri release + +```bash +cd crates/apps/game-reflex-poc-tauri +cargo tauri build +cd ../../.. +``` + +Le build frontend reste possédé par Tauri/Vite ; ne pas lancer `npm run build` comme gate indépendante. + +## Android + +Revalider les deux jeux sur : + +- AVD x86_64/API 36 ; +- appareil ARM64 réel. + +Les commandes détaillées sont dans `docs/testing/003-RC_VALIDATION_MATRIX.md`. + +## Publication + +Les secrets de signature et credentials de store restent externes au dépôt. + +`3-rc.1` ne devient `0.1.0` qu'après une gate RC complète propre et sans modification supplémentaire. + +Tout défaut du candidat produit `3-rc.1.fix.N`. diff --git a/docs/000-README.md b/docs/000-README.md index edef886..7174215 100644 --- a/docs/000-README.md +++ b/docs/000-README.md @@ -1,5 +1,5 @@ - + # Documentation games.sasedev @@ -50,6 +50,7 @@ Voir [`../RULES.md`](../RULES.md), notamment [`rules/RULES_COMMANDS.md`](rules/R - [`testing/001-TEST_ARCHITECTURE.md`](testing/001-TEST_ARCHITECTURE.md) — séparation `unit_tests/` / `tests/`, tests ciblés et tracing de test. - [`testing/002-BETA_VALIDATION_MATRIX.md`](testing/002-BETA_VALIDATION_MATRIX.md) — matrice beta Desktop SDL3, Tauri/WASM et Android multi-appareils. +- [`testing/003-RC_VALIDATION_MATRIX.md`](testing/003-RC_VALIDATION_MATRIX.md) — matrice RC de reproductibilité, packaging final et promotion vers `0.1.0`. - [`development/003-TRACING_AND_DIAGNOSTICS.md`](development/003-TRACING_AND_DIAGNOSTICS.md) — socle `tracing`, subscriber et appender communs. - [`development/004-SDL3_DESKTOP_PREREQUISITES.md`](development/004-SDL3_DESKTOP_PREREQUISITES.md) — prérequis SDL3 Desktop, stratégie de liaison système et vérification `pkg-config`. - [`development/005-DESKTOP_WINDOW_POLICY.md`](development/005-DESKTOP_WINDOW_POLICY.md) — taille initiale, redimensionnement et séparation future entre fenêtre physique et résolution virtuelle. @@ -59,4 +60,3 @@ Voir [`../RULES.md`](../RULES.md), notamment [`rules/RULES_COMMANDS.md`](rules/R ## Historique validé - [`../history/README.md`](../history/README.md) — convention et navigation de l'historique transitoire immuable des jalons validés. - diff --git a/docs/rules/RULES_COMMANDS.md b/docs/rules/RULES_COMMANDS.md index 8730a6c..19752d9 100644 --- a/docs/rules/RULES_COMMANDS.md +++ b/docs/rules/RULES_COMMANDS.md @@ -1,5 +1,5 @@ - + # Règles d'exécution des commandes @@ -69,3 +69,13 @@ - **CMD-BETA-002** — La transition alpha vers beta exécute une suite Cargo workspace complète en plus des tests ciblés. - **CMD-BETA-003** — Le build Tauri de packaging est lancé via `cargo tauri build`; ses hooks possèdent le build WASM et Vite/TypeScript. - **CMD-BETA-004** — Les APK Debug servent à la validation multi-appareils beta ; la signature de publication appartient à la phase RC/stable. + +## RC et release + +- **CMD-RC-001** — L'entrée en RC gèle le périmètre fonctionnel de `0.1.0` ; seuls les correctifs, la reproductibilité des builds, le packaging, la documentation de livraison et les défauts de release sont admis. +- **CMD-RC-002** — La validation d'une RC exécute `cargo test --workspace --all-targets --all-features` en plus des audits, du check et de Clippy strict. +- **CMD-RC-003** — Les deux runners Desktop natifs sont construits en `--release` et font l'objet d'un smoke sur les binaires de release. +- **CMD-RC-004** — Le POC Tauri est construit uniquement via `cargo tauri build`; ses hooks possèdent toujours le build WASM et Vite/TypeScript. +- **CMD-RC-005** — Android RC revalide au minimum x86_64 sur AVD et ARM64 sur appareil réel avec les APK issus de l'état RC. +- **CMD-RC-006** — Les secrets de signature, keystores et credentials de publication ne sont jamais commités. Leur présence est une condition externe de publication, pas une donnée du dépôt. +- **CMD-RC-007** — Une RC n'est promue en stable que si aucun correctif `.fix.N` n'est nécessaire après la gate RC complète. diff --git a/docs/testing/003-RC_VALIDATION_MATRIX.md b/docs/testing/003-RC_VALIDATION_MATRIX.md new file mode 100644 index 0000000..6891339 --- /dev/null +++ b/docs/testing/003-RC_VALIDATION_MATRIX.md @@ -0,0 +1,144 @@ + + + +# Matrice de validation RC 0.1.0 + +## Objectif + +La phase RC n'ajoute aucune fonctionnalité au socle `0.1.0`. + +Elle vérifie qu'un état candidat peut être reproduit, packagé et promu en stable sans modification fonctionnelle. + +## Gel fonctionnel + +Pendant `3-rc.*`, les changements admis sont limités à : + +- correction d'un défaut ; +- correction de packaging ou de build release ; +- correction documentaire de livraison ; +- compatibilité nécessaire à la distribution ; +- sécurité ou conformité bloquant la release. + +Tout nouveau gameplay ou nouvelle capacité est reporté après `0.1.0`. + +## Gate statique et Rust + +```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 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 +``` + +## Desktop SDL3 natif + +Build release : + +```bash +cargo build -p game-reflex-poc-desktop --release +cargo build -p game-snake-poc-desktop --release +``` + +Smoke sur les binaires produits sous le répertoire externe de build : + +```bash +../builds/sasedev-games/target/release/game-reflex-poc-desktop +../builds/sasedev-games/target/release/game-snake-poc-desktop +``` + +Critères : + +- démarrage ; +- rendu ; +- contrôles ; +- sortie propre ; +- aucune dépendance à un fichier généré dans le dépôt. + +## Tauri / WASM + +Build candidat : + +```bash +cd crates/apps/game-reflex-poc-tauri +cargo tauri build +cd ../../.. +``` + +Ne pas lancer `npm run build` comme gate manuelle indépendante. + +Critères : + +- build WASM piloté par le hook ; +- Vite/TypeScript piloté par le hook ; +- frontend généré hors racine de build interdite ; +- binaire Tauri release produit ; +- smoke Reflex ; +- tracing Rust/TypeScript ; +- `Escape` ferme proprement. + +## Android x86_64 / API 36 + +```bash +python3 scripts/build_android_rust.py reflex --abi x86_64 +python3 scripts/build_android_rust.py snake --abi x86_64 + +cd Android +gradle :game-reflex-poc:assembleDebug +gradle :game-snake-poc:assembleDebug +cd .. +``` + +Déployer les deux APK sur l'AVD de référence et revalider : + +- démarrage ; +- tactile ; +- logcat ; +- Back système ; +- arrêt propre. + +## Android ARM64 réel + +```bash +python3 scripts/build_android_rust.py reflex --abi arm64-v8a +python3 scripts/build_android_rust.py snake --abi arm64-v8a + +cd Android +gradle :game-reflex-poc:assembleDebug +gradle :game-snake-poc:assembleDebug +cd .. +``` + +Déployer sur l'appareil ARM64 de référence et revalider Reflex et Snake. + +## Artefacts et signature + +Les secrets de publication ne font pas partie du dépôt. + +Avant publication stable, vérifier séparément : + +- identité/package final ; +- `versionCode` Android approprié ; +- keystore/signing Android disponible hors dépôt ; +- artefacts Desktop/Tauri attendus ; +- licences et assets distribuables ; +- absence de secrets dans l'archive/repository ; +- provenance exacte du commit/tag de release. + +La RC peut être validée fonctionnellement avec les artefacts de test existants ; la publication vers un store exige ensuite les credentials externes correspondants. + +## Promotion stable + +`0.1.0-3-rc.1` peut être promue vers `0.1.0` uniquement si : + +- toutes les gates ci-dessus sont propres ; +- aucun défaut fonctionnel ou packaging n'est ouvert ; +- aucune modification de code n'est nécessaire après la dernière validation ; +- la documentation de release correspond exactement aux artefacts validés. + +Si un défaut apparaît, produire `0.1.0-3-rc.1.fix.N` et recommencer la gate affectée. diff --git a/history/0.1.0/2-beta.1.fix.4.md b/history/0.1.0/2-beta.1.fix.4.md new file mode 100644 index 0000000..49223a0 --- /dev/null +++ b/history/0.1.0/2-beta.1.fix.4.md @@ -0,0 +1,109 @@ + + + +# Historique 0.1.0-2-beta.1.fix.4 + +## Statut + +Validé par l'utilisateur le 2026-09-17. + +## Gates Rust et audits + +La beta finale a passé : + +- `cargo fmt --all` puis `cargo fmt --all -- --check` ; +- audit Rust général propre ; +- audit d'exports Rust propre ; +- audit workspace `games.sasedev` propre ; +- audit Markdown propre ; +- audit de distribution propre ; +- `cargo check --workspace` ; +- `cargo clippy --workspace --all-targets --all-features -- -D warnings` ; +- tests ciblés `engine-v1-sdl` et `game-logging-lib`. + +La phase beta avait également exécuté la suite workspace complète lors de son entrée et validé les packagings Desktop/Tauri. + +## Desktop natif + +Reflex et Snake ont été construits en release et exécutés avec le runtime SDL3 natif. + +Les deux runners démarrent et s'arrêtent proprement. + +## Tauri / WASM + +Reflex a été construit avec `cargo tauri build`. + +Le build Tauri possède le build WASM et Vite/TypeScript via ses hooks. + +Le smoke a confirmé : + +- démarrage Tauri ; +- tracing frontend ; +- provenance `Desktop / TauriWebView / Wasm / KeyboardMouse` ; +- sortie `Escape` via le contrat moteur commun. + +## Android x86_64 / API 36 + +Reflex et Snake ont été compilés en x86_64, assemblés en APK Debug, installés et exécutés sur l'AVD API 36. + +Les deux jeux ont validé : + +- démarrage SDL3 ; +- gameplay/tactile ; +- tracing Android vers logcat ; +- Back système ; +- arrêt propre. + +Sur API 36, Back est observé sans être consommé : + +```text +Android system Back observed +``` + +puis Android exécute sa navigation système et le runtime SDL3 s'arrête proprement. + +## Android ARM64 réel + +Les deux jeux ont été reconstruits en `arm64-v8a`, assemblés, installés puis exécutés sur le Samsung Galaxy S9+ de référence. + +Le logging Android est actif et les runtimes se terminent proprement. + +Les traces de fin observées incluent notamment : + +```text +SDL3 runtime stopped +Finished main function +onStop() +onDestroy() +SDLActivity thread ends +``` + +Un relancement de Snake a produit : + +```text +AndroidRuntime: VM exiting with result code 0 +``` + +ce qui correspond à une sortie normale du processus précédent, suivie d'un nouveau démarrage réussi. + +## Back Android + +Le correctif beta final conserve deux responsabilités distinctes : + +- Android possède la navigation Back de la launcher Activity ; +- le moteur SDL conserve `AcBack` pour les plateformes qui émettent réellement cet événement. + +Sur API 36+, `PRIORITY_SYSTEM_NAVIGATION_OBSERVER` sert uniquement à tracer la navigation sans la consommer. + +## Conclusion + +La matrice beta est validée sur : + +```text +Desktop SDL3 natif +Tauri / WebView / WASM +Android x86_64 / API 36 +Android ARM64 réel +``` + +Le socle fonctionnel `0.1.0` entre en phase RC.