From ff1ec09d683918c0b5ecb20c04c0a7dc9862ad4c Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Sun, 20 Sep 2026 14:20:07 +0200 Subject: [PATCH] 0.3.0-2-beta.1 --- Cargo.toml | 4 +- README.md | 4 +- Web/game-snake-poc/package.json | 2 +- deltas/0.3.0/2-beta.1.md | 64 +++++++++++++++++++++ docs/plans/001-V0_3_0_WEB_SNAKE_POC_PLAN.md | 8 ++- docs/validation/001-VALIDATION_GATES.md | 30 +++++++++- history/0.3.0/0-pre.5.fix.1.md | 59 +++++++++++++++++++ 7 files changed, 163 insertions(+), 8 deletions(-) create mode 100644 deltas/0.3.0/2-beta.1.md create mode 100644 history/0.3.0/0-pre.5.fix.1.md diff --git a/Cargo.toml b/Cargo.toml index b0abcab..b046740 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ # file: Cargo.toml -# version: 67 +# version: 68 [workspace] resolver = "3" @@ -20,7 +20,7 @@ members = [ ] [workspace.package] -version = "0.3.0-0-pre.5.fix.1" +version = "0.3.0-2-beta.1" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/games" diff --git a/README.md b/README.md index 1cb4f1f..bfd3a06 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ - + # games.sasedev @@ -26,7 +26,7 @@ Workspace expérimental puis productif pour des jeux multiplateformes principale Version stable de référence : `0.2.0`. -Version de développement : `0.3.0-0-pre.5.fix.1`. +Version de développement : `0.3.0-2-beta.1`. 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/Web/game-snake-poc/package.json b/Web/game-snake-poc/package.json index 2a695b2..0585c94 100644 --- a/Web/game-snake-poc/package.json +++ b/Web/game-snake-poc/package.json @@ -1,7 +1,7 @@ { "name": "game-snake-poc-web", "private": true, - "version": "0.3.0", + "version": "0.3.0-2-beta.1", "type": "module", "scripts": { "dev": "vite", diff --git a/deltas/0.3.0/2-beta.1.md b/deltas/0.3.0/2-beta.1.md new file mode 100644 index 0000000..be3358b --- /dev/null +++ b/deltas/0.3.0/2-beta.1.md @@ -0,0 +1,64 @@ + + + +# Delta 0.3.0-2-beta.1 + +## Objectif + +Entrer en beta avec un scope `0.3.0` feature-complete et exécuter une validation large du POC Snake Web direct et de son témoin Desktop SDL3, sans introduire de nouveau comportement. + +## Baseline acceptée + +`0.3.0-0-pre.5.fix.1` est validée : audits, check/Clippy, tests plateforme/WASM, build WASM, build Vite, assets/provenance/inputs dans le navigateur et smoke Desktop SDL3 passent. Aucun défaut structurel ne justifie `0-pre.6`, qui est donc omise. + +## Changements + +- passage de la version workspace à `0.3.0-2-beta.1` ; +- passage du package frontend Snake Web au jalon `0.3.0-2-beta.1` ; +- ajout de l'historique validé `0-pre.5.fix.1` ; +- réconciliation du plan `0.3.0` avec l'omission de `0-pre.6` ; +- documentation de la gate beta release Web/Desktop. + +Aucun gameplay, bridge WASM, runtime SDL3, shell HTML/TypeScript ou contrat d'asset n'est modifié par cette tranche. + +## Validation attendue + +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 +``` + +Build et smoke Desktop Snake release : + +```bash +cargo build -p game-snake-poc-desktop --release +../builds/sasedev-games/target/release/game-snake-poc-desktop +``` + +Build WASM release et frontend production : + +```bash +cargo build -p game-snake-poc-wasm --release --target wasm32-unknown-unknown +wasm-bindgen ../builds/sasedev-games/target/wasm32-unknown-unknown/release/game_snake_poc_wasm.wasm \ + --target web \ + --out-dir ../builds/sasedev-games/game-snake-poc-web/wasm \ + --out-name game_snake_poc_wasm + +(cd Web/game-snake-poc && npm install && npm run build && npm run preview) +``` + +Ouvrir `http://127.0.0.1:4174/main.html` puis vérifier : jeu visible, clavier/pointer, ratio Canvas, SimpleBar, assets `snake / engine-v1`, provenance cohérente, resize et pause/reprise sans rattrapage massif après masquage d'onglet. + +## Après validation + +Si cette gate beta est propre, la tranche suivante est `0.3.0-2-beta.2` pour la consolidation documentaire et la transmission : plan, documentation durable, `CHANGELOG.md`, `ROADMAP.md`, history et prompt de la version/session suivante. diff --git a/docs/plans/001-V0_3_0_WEB_SNAKE_POC_PLAN.md b/docs/plans/001-V0_3_0_WEB_SNAKE_POC_PLAN.md index 8d8280d..6f4df0e 100644 --- a/docs/plans/001-V0_3_0_WEB_SNAKE_POC_PLAN.md +++ b/docs/plans/001-V0_3_0_WEB_SNAKE_POC_PLAN.md @@ -1,5 +1,5 @@ - + # Plan v0.3.0 — baseline Snake et premier POC Web direct @@ -91,13 +91,17 @@ Gate : audits statiques, `cargo check --workspace`, Clippy workspace strict, tes Suivi `0-pre.5.fix.1` : la validation de `0-pre.5` confirme les gates Rust/WASM et le build Vite production, mais le smoke `vite dev` reste bloqué sur le chargement des assets. Les targets `vite-plugin-static-copy` utilisent des sources absolues sans `rename.stripBase`, ce qui ne garantit pas les routes runtime canoniques. Le fix impose `stripBase: true` aux deux targets afin que dev et build exposent exactement `/common/data/runtime.json` et `/game/data/game.json`. +Validation `0-pre.5.fix.1` : les audits, `cargo check`, Clippy workspace strict, les tests plateforme/WASM, le build WASM, `wasm-bindgen`, le build Vite et le smoke navigateur passent. Les assets affichent `snake / engine-v1`, la provenance observée est `web / browser / wasm / desktop / keyboard-mouse`, les contrôles clavier/souris fonctionnent et le runner Desktop SDL3 démarre puis s'arrête proprement après 411 frames. Aucun défaut structurel supplémentaire n'est identifié. + ### `0-pre.6` — correction/extraction seulement si prouvée Tranche conditionnelle. Elle n'existe que si les POC précédents révèlent une duplication réelle, une frontière mal placée ou un défaut nécessitant une correction structurante avant stabilisation. Sinon elle est omise. +Décision après `0-pre.5.fix.1` : aucun besoin d'extraction/correction structurante n'est observé ; `0-pre.6` est omise et la version entre directement en beta. + ### `2-beta.1` — validation large -Scope feature-complete. Exécuter les gates workspace applicables, les tests ciblés et les validations Web/Desktop prévues. Aucun nouveau scope. +Scope feature-complete. La tranche ne crée aucun nouveau comportement : elle bascule la version workspace et le package Web au jalon `0.3.0-2-beta.1`, enregistre la validation de `0-pre.5.fix.1` et exécute la gate large de frontière de phase. Celle-ci comprend audits, formatage/check/Clippy, tests workspace complets, build + smoke Desktop Snake en release, build WASM Snake en release, `wasm-bindgen`, build Vite production et smoke du `dist` via `npm run preview`. Aucun nouveau scope. ### `2-beta.2` — consolidation documentaire et transmission diff --git a/docs/validation/001-VALIDATION_GATES.md b/docs/validation/001-VALIDATION_GATES.md index 1b3def3..9aaabcb 100644 --- a/docs/validation/001-VALIDATION_GATES.md +++ b/docs/validation/001-VALIDATION_GATES.md @@ -1,5 +1,5 @@ - + # Gates de validation @@ -74,3 +74,31 @@ npm run build Le smoke direct utilise ensuite `npm run dev` et `http://127.0.0.1:1434/main.html`. Pour le POC Snake feature-complete, vérifier aussi : assets `common` + `game` chargés avant le statut `Prêt`, provenance `Web/Wasm/Browser` visible et mise à jour par l'input, pause sans rattrapage lors d'un masquage d'onglet, reprise propre, resize sans tick artificiel, SimpleBar, clavier et contrôles pointer/tactiles. Lorsque `0-pre.5` touche la frontière plateforme du bridge WASM, exécuter également `cargo test -p engine-v1-platform-api`, `cargo test -p game-snake-poc-wasm`, puis un smoke `cargo run -p game-snake-poc-desktop` pour confirmer la non-régression SDL3. Les frontends Tauri restent pilotés par leurs hooks Tauri et ne reprennent pas cette gate manuelle. + +## Gate beta du POC Snake Web + +À l’entrée en `2-beta.1`, le scope `0.3.0` est feature-complete. La gate de frontière de phase ajoute aux audits/check/Clippy la suite Cargo workspace complète : + +```bash +cargo test --workspace --all-targets --all-features +``` + +Le témoin Desktop Snake est construit et fumé en release : + +```bash +cargo build -p game-snake-poc-desktop --release +../builds/sasedev-games/target/release/game-snake-poc-desktop +``` + +Le host Web beta utilise également un module WASM release avant le build Vite : + +```bash +cargo build -p game-snake-poc-wasm --release --target wasm32-unknown-unknown +wasm-bindgen ../builds/sasedev-games/target/wasm32-unknown-unknown/release/game_snake_poc_wasm.wasm \ + --target web \ + --out-dir ../builds/sasedev-games/game-snake-poc-web/wasm \ + --out-name game_snake_poc_wasm +(cd Web/game-snake-poc && npm install && npm run build && npm run preview) +``` + +Le smoke production ouvre `http://127.0.0.1:4174/main.html` et vérifie les mêmes contrats fonctionnels que le smoke `vite dev` : Canvas, inputs, SimpleBar, assets, provenance, lifecycle et resize. Le smoke `vite dev` déjà validé reste utile après un correctif touchant le plugin de dev, mais n’est pas requis à chaque beta si aucun chemin dev n’a changé. diff --git a/history/0.3.0/0-pre.5.fix.1.md b/history/0.3.0/0-pre.5.fix.1.md new file mode 100644 index 0000000..746b4dc --- /dev/null +++ b/history/0.3.0/0-pre.5.fix.1.md @@ -0,0 +1,59 @@ + + + +# Historique 0.3.0-0-pre.5.fix.1 + +## Statut + +Intégration plateforme du POC Snake Web validée par l'utilisateur le 2026-09-20. Aucun défaut structurel supplémentaire n'est identifié ; `0-pre.6` conditionnelle est omise et la version peut entrer en `2-beta.1`. + +## Validation utilisateur + +Les gates suivantes ont passé sur `0.3.0-0-pre.5.fix.1` : + +```text +General Rust rule audit: clean +Rust export completeness audit: 0 candidate(s) +games.sasedev workspace audit: clean +Markdown table audit: clean (5 table(s), 191 file(s)) +Distribution layout audit: clean (31 required path(s), 1 forbidden path(s) absent) +cargo fmt --all -- --check: clean +cargo check --workspace: clean +cargo clippy --workspace --all-targets --all-features -- -D warnings: clean +cargo test -p engine-v1-platform-api --all-targets --all-features: 3 passed, 0 failed +cargo test -p game-snake-poc-wasm --all-targets --all-features: 4 passed, 0 failed +cargo build -p game-snake-poc-wasm --target wasm32-unknown-unknown: clean +wasm-bindgen --target web: clean +cargo tree -p game-snake-poc-wasm --edges normal: frontière attendue +npm install: 64 packages audités, 0 vulnérabilité +npm run build: clean, 30 modules transformés, 2 assets copiés +npm run dev: Vite démarré sur 127.0.0.1:1434 +``` + +Le warning npm non bloquant relatif au script d'installation de `@parcel/watcher@2.6.0` reste présent. + +## Smoke Web accepté + +Le navigateur confirme : + +```text +Provenance: web / browser / wasm / desktop / keyboard-mouse +Assets: snake / engine-v1 +controls: clavier et contrôles souris fonctionnels +``` + +Le chargement des assets est donc réparé en dev et le bridge expose la provenance attendue. Les tests lifecycle/resize plus larges restent repris dans la gate beta afin de consolider le comportement feature-complete. + +## Non-régression Desktop SDL3 + +Le smoke `cargo run -p game-snake-poc-desktop` passe : + +```text +desktop SDL3 runner started game="snake" +SDL3 runtime started title=Snake POC width=405 height=720 +SDL3 runtime stopped frames=411 +``` + +## Suite + +La tranche conditionnelle `0-pre.6` est omise. `2-beta.1` ouvre une validation large sans nouveau scope fonctionnel.