From dfb41a79b6b814d10a018b78498d6f5abe4519a2 Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Tue, 22 Sep 2026 06:42:46 +0200 Subject: [PATCH] 0.3.5-alpha.7.fix.1 --- Cargo.toml | 4 +- README.md | 6 +- .../package.json | 6 +- deltas/0.3.5/alpha.7.fix.1.md | 128 ++++++++++++++++++ .../005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md | 6 +- scripts/audit_distribution_layout.py | 4 +- 6 files changed, 142 insertions(+), 12 deletions(-) create mode 100644 deltas/0.3.5/alpha.7.fix.1.md diff --git a/Cargo.toml b/Cargo.toml index 576e8df..eb815c6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ # file: Cargo.toml -# version: 103 +# version: 104 [workspace] resolver = "3" @@ -27,7 +27,7 @@ members = [ ] [workspace.package] -version = "0.3.5-alpha.7" +version = "0.3.5-alpha.7.fix.1" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/games" diff --git a/README.md b/README.md index dc23136..dbd7a78 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ - + # games.sasedev @@ -27,9 +27,9 @@ Workspace expérimental puis productif pour des jeux multiplateformes principale Version stable de référence : `0.3.4`. -Version active : `0.3.5-alpha.7`. `0.3.2` reste différée. +Version active : `0.3.5-alpha.7.fix.1`. `0.3.2` reste différée. -La stable `0.3.4` livre la première baseline realtime : contrat binaire transport-neutral, backend WebSocket Tokio/tokio-tungstenite, limites et deadlines, tests loopback/robustesse, smoke runtime localhost public et frontières de dépendances empêchant moteurs et gameplay de dépendre d'un backend concret. `0.3.5-alpha.7` conserve le backend WebTransport natif et son smoke `PASS`, valide le client `wasm32-unknown-unknown`, applique aussi les deadlines côté navigateur et ajoute un smoke browser technique Vite/TypeScript + adapter Rust/WASM vers un serveur Rust local avec pin SHA-256 exact. Le fallback et les datagrams restent réservés aux tranches suivantes. +La stable `0.3.4` livre la première baseline realtime : contrat binaire transport-neutral, backend WebSocket Tokio/tokio-tungstenite, limites et deadlines, tests loopback/robustesse, smoke runtime localhost public et frontières de dépendances empêchant moteurs et gameplay de dépendre d'un backend concret. `0.3.5-alpha.7.fix.1` conserve le backend WebTransport natif et son smoke `PASS`, valide le client `wasm32-unknown-unknown`, applique aussi les deadlines côté navigateur et ajoute un smoke browser technique Vite/TypeScript + adapter Rust/WASM vers un serveur Rust local avec pin SHA-256 exact. Le fix corrige uniquement le chemin externe utilisé par `wasm-bindgen` depuis le host `Web/`. Le fallback et les datagrams restent réservés aux tranches suivantes. 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-realtime-webtransport-browser-smoke/package.json b/Web/game-realtime-webtransport-browser-smoke/package.json index 90bba07..464a044 100644 --- a/Web/game-realtime-webtransport-browser-smoke/package.json +++ b/Web/game-realtime-webtransport-browser-smoke/package.json @@ -1,11 +1,11 @@ { "name": "game-realtime-webtransport-browser-smoke-web", "private": true, - "version": "0.3.5-alpha.7", + "version": "0.3.5-alpha.7.fix.1", "type": "module", "scripts": { - "wasm:dev": "cargo build -p game-realtime-webtransport-browser-smoke --lib --target wasm32-unknown-unknown && wasm-bindgen ../../builds/sasedev-games/target/wasm32-unknown-unknown/debug/game_realtime_webtransport_browser_smoke.wasm --target web --out-dir ../../builds/sasedev-games/game-realtime-webtransport-browser-smoke/wasm --out-name game_realtime_webtransport_browser_smoke", - "wasm:build": "cargo build -p game-realtime-webtransport-browser-smoke --lib --release --target wasm32-unknown-unknown && wasm-bindgen ../../builds/sasedev-games/target/wasm32-unknown-unknown/release/game_realtime_webtransport_browser_smoke.wasm --target web --out-dir ../../builds/sasedev-games/game-realtime-webtransport-browser-smoke/wasm --out-name game_realtime_webtransport_browser_smoke", + "wasm:dev": "cargo build -p game-realtime-webtransport-browser-smoke --lib --target wasm32-unknown-unknown && wasm-bindgen ../../../builds/sasedev-games/target/wasm32-unknown-unknown/debug/game_realtime_webtransport_browser_smoke.wasm --target web --out-dir ../../../builds/sasedev-games/game-realtime-webtransport-browser-smoke/wasm --out-name game_realtime_webtransport_browser_smoke", + "wasm:build": "cargo build -p game-realtime-webtransport-browser-smoke --lib --release --target wasm32-unknown-unknown && wasm-bindgen ../../../builds/sasedev-games/target/wasm32-unknown-unknown/release/game_realtime_webtransport_browser_smoke.wasm --target web --out-dir ../../../builds/sasedev-games/game-realtime-webtransport-browser-smoke/wasm --out-name game_realtime_webtransport_browser_smoke", "dev": "npm run wasm:dev && vite", "build": "npm run wasm:build && tsc && vite build" }, diff --git a/deltas/0.3.5/alpha.7.fix.1.md b/deltas/0.3.5/alpha.7.fix.1.md new file mode 100644 index 0000000..73ff582 --- /dev/null +++ b/deltas/0.3.5/alpha.7.fix.1.md @@ -0,0 +1,128 @@ + + + +# Delta 0.3.5-alpha.7.fix.1 + +## Base requise + +`0.3.5-alpha.7`, candidate dont la gate utilisateur du 2026-09-22 a validé fmt, les trois audits, `cargo check --workspace`, Clippy strict, les sept tests du contrat realtime commun, les vingt tests WebTransport, le smoke natif `PASS`, puis check/Clippy/build réels du backend en `wasm32-unknown-unknown` ainsi que check/Clippy et build WASM de `game-realtime-webtransport-browser-smoke`. + +La gate échoue uniquement pendant le sous-script `wasm:build` de `npm run build`, après une compilation Rust release réussie : + +```text +error: failed reading '../../builds/sasedev-games/target/wasm32-unknown-unknown/release/game_realtime_webtransport_browser_smoke.wasm' + +Caused by: + No such file or directory (os error 2) +``` + +`alpha.7` n'est donc pas historisée comme validée avant ce correctif. + +## Cause + +Le workspace configure son target-dir Cargo dans `.cargo/config.toml` : + +```text +../builds/sasedev-games/target +``` + +Ce chemin est extérieur au repository, donc depuis : + +```text +Web/game-realtime-webtransport-browser-smoke +``` + +l'artefact se trouve sous : + +```text +../../../builds/sasedev-games/target/... +``` + +et non sous `../../builds/...`. + +Le `vite.config.ts` était déjà correct : il dérive `repositoryRoot`, puis `../builds/sasedev-games/...`. Le défaut est limité aux chemins littéraux des scripts npm et à l'ancre correspondante de l'audit de distribution. + +## Correction + +La version technique passe à : + +```text +0.3.5-alpha.7.fix.1 +``` + +Dans `Web/game-realtime-webtransport-browser-smoke/package.json`, `wasm:dev` et `wasm:build` utilisent désormais : + +```text +../../../builds/sasedev-games/target/... +../../../builds/sasedev-games/game-realtime-webtransport-browser-smoke/wasm +``` + +`DIST-LAYOUT-078` est aligné sur ce chemin externe réel. + +Aucun code Rust, protocole WebTransport, framing, deadline, certificat, pin SHA-256, API publique ou dépendance n'est modifié. + +## Fichiers modifiés + +```text +Cargo.toml +README.md +Web/game-realtime-webtransport-browser-smoke/package.json +docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md +scripts/audit_distribution_layout.py +``` + +Nouveau fichier : + +```text +deltas/0.3.5/alpha.7.fix.1.md +``` + +Aucun fichier `history/0.3.5/alpha.7.md` n'est créé avant une gate entièrement verte du correctif. + +## Plan + +Le forecast fonctionnel ne change pas. Après validation du fix et du smoke navigateur réel, `0.3.5-alpha.8` reste la tranche du fallback WebSocket au niveau composition. + +## Validation attendue + +La correction touche build/config et version ; relancer d'abord la gate statique et les builds concernés : + +```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 build -p game-realtime-webtransport-browser-smoke --lib --target wasm32-unknown-unknown + +(cd Web/game-realtime-webtransport-browser-smoke && npm install && npm run build) +``` + +Puis exécuter le smoke runtime réel avec deux terminaux. + +Terminal A : + +```bash +cargo run -p game-realtime-webtransport-browser-smoke +``` + +Terminal B : + +```bash +(cd Web/game-realtime-webtransport-browser-smoke && npm run dev) +``` + +Ouvrir l'URL `OPEN=...` imprimée par le Terminal A. Le résultat attendu dans la page puis dans le Terminal A reste : + +```text +game-realtime-webtransport-browser-smoke: PASS +``` + +## Après validation + +Créer `history/0.3.5/alpha.7.fix.1.md` à partir des résultats réellement fournis, puis ouvrir directement `0.3.5-alpha.8`. diff --git a/docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md b/docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md index ca9fa54..dfeba84 100644 --- a/docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md +++ b/docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md @@ -1,11 +1,11 @@ - + # Plan 0.3.5 — POC WebTransport/QUIC et fallback WebSocket ## Statut -Plan actif créé pendant `0.3.5-alpha.1` à partir de l'archive taggée `v0.3.4`, puis réconcilié pour l'implémentation native de `0.3.5-alpha.2`, son correctif de validation `0.3.5-alpha.2.fix.1`, le chemin fiable validé de `0.3.5-alpha.3`, la robustesse validée par `0.3.5-alpha.4.fix.1`, le smoke natif validé de `0.3.5-alpha.5`, le chemin client WASM validé de `0.3.5-alpha.6` et le smoke navigateur candidat de `0.3.5-alpha.7`. +Plan actif créé pendant `0.3.5-alpha.1` à partir de l'archive taggée `v0.3.4`, puis réconcilié pour l'implémentation native de `0.3.5-alpha.2`, son correctif de validation `0.3.5-alpha.2.fix.1`, le chemin fiable validé de `0.3.5-alpha.3`, la robustesse validée par `0.3.5-alpha.4.fix.1`, le smoke natif validé de `0.3.5-alpha.5`, le chemin client WASM validé de `0.3.5-alpha.6`, le smoke navigateur candidat de `0.3.5-alpha.7` et son correctif de build `0.3.5-alpha.7.fix.1`. Le cadrage détaillé et la comparaison des stacks actuelles sont conservés dans `docs/studies/026-V0_3_5_WEBTRANSPORT_QUIC_STACK_AUDIT.md`. Le présent document porte les décisions opérationnelles, le scope, les gates et le forecast vivant de la version. @@ -513,6 +513,8 @@ La page Vite peut rester servie en HTTP sur loopback : `127.0.0.1` est un origin Cette tranche reste volontairement séparée de `alpha.8` : le smoke WebTransport navigateur ne doit contenir aucun fallback silencieux. La sélection/fallback WebSocket est prouvée ensuite au niveau composition. +Correctif `0.3.5-alpha.7.fix.1` : la première gate utilisateur a validé fmt, audits, check/Clippy natifs, tests, smoke natif, check/Clippy/build WASM et la compilation de l'adapter navigateur, puis a échoué uniquement dans `npm run build` lorsque `wasm-bindgen` cherchait l'artefact Cargo sous `../../builds/...`. Depuis `Web/game-realtime-webtransport-browser-smoke`, le target-dir workspace `../builds/sasedev-games/target` se trouve en réalité sous `../../../builds/...`. Le fix corrige les scripts `wasm:dev`/`wasm:build` et l'audit de distribution associé, sans changement Rust/runtime. + ### `0.3.5-alpha.8` — fallback WebSocket au niveau composition - tentative WebTransport ; diff --git a/scripts/audit_distribution_layout.py b/scripts/audit_distribution_layout.py index 1a94b28..8658d98 100644 --- a/scripts/audit_distribution_layout.py +++ b/scripts/audit_distribution_layout.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # file: scripts/audit_distribution_layout.py -# version: 19 +# version: 20 """Audit the static distribution layout expected by supported POCs.""" @@ -339,7 +339,7 @@ def audit_webtransport_browser_smoke(root: pathlib.Path) -> list[str]: rust_main = rust_main_path.read_text(encoding="utf-8") required_fragments = ( (package, 'cargo build -p game-realtime-webtransport-browser-smoke --lib --target wasm32-unknown-unknown', "DIST-LAYOUT-077: browser WebTransport smoke must build its Rust WASM adapter"), - (package, 'wasm-bindgen ../../builds/sasedev-games/', "DIST-LAYOUT-078: browser WebTransport smoke bindings must be generated outside the repository"), + (package, 'wasm-bindgen ../../../builds/sasedev-games/', "DIST-LAYOUT-078: browser WebTransport smoke bindings must be generated outside the repository"), (vite, 'host: "127.0.0.1"', "DIST-LAYOUT-079: browser WebTransport smoke Vite host must stay on loopback"), (vite, 'port: 1435,', "DIST-LAYOUT-080: browser WebTransport smoke Vite port must stay deterministic"), (main, 'window.isSecureContext', "DIST-LAYOUT-081: browser WebTransport smoke must verify secure-context availability"),