0.3.5-alpha.7.fix.1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
# file: Cargo.toml
|
# file: Cargo.toml
|
||||||
# version: 103
|
# version: 104
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "3"
|
resolver = "3"
|
||||||
@@ -27,7 +27,7 @@ members = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.3.5-alpha.7"
|
version = "0.3.5-alpha.7.fix.1"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://git.sasedev.com/Sasedev/games"
|
repository = "https://git.sasedev.com/Sasedev/games"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: README.md -->
|
<!-- file: README.md -->
|
||||||
<!-- version: 71 -->
|
<!-- version: 72 -->
|
||||||
|
|
||||||
# games.sasedev
|
# 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 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.
|
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.
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "game-realtime-webtransport-browser-smoke-web",
|
"name": "game-realtime-webtransport-browser-smoke-web",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.3.5-alpha.7",
|
"version": "0.3.5-alpha.7.fix.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"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: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: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",
|
"dev": "npm run wasm:dev && vite",
|
||||||
"build": "npm run wasm:build && tsc && vite build"
|
"build": "npm run wasm:build && tsc && vite build"
|
||||||
},
|
},
|
||||||
|
|||||||
128
deltas/0.3.5/alpha.7.fix.1.md
Normal file
128
deltas/0.3.5/alpha.7.fix.1.md
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
<!-- file: deltas/0.3.5/alpha.7.fix.1.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# 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`.
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
<!-- file: docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md -->
|
<!-- file: docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md -->
|
||||||
<!-- version: 9 -->
|
<!-- version: 10 -->
|
||||||
|
|
||||||
# Plan 0.3.5 — POC WebTransport/QUIC et fallback WebSocket
|
# Plan 0.3.5 — POC WebTransport/QUIC et fallback WebSocket
|
||||||
|
|
||||||
## Statut
|
## 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.
|
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.
|
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
|
### `0.3.5-alpha.8` — fallback WebSocket au niveau composition
|
||||||
|
|
||||||
- tentative WebTransport ;
|
- tentative WebTransport ;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# file: scripts/audit_distribution_layout.py
|
# file: scripts/audit_distribution_layout.py
|
||||||
# version: 19
|
# version: 20
|
||||||
|
|
||||||
"""Audit the static distribution layout expected by supported POCs."""
|
"""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")
|
rust_main = rust_main_path.read_text(encoding="utf-8")
|
||||||
required_fragments = (
|
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, '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, '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"),
|
(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"),
|
(main, 'window.isSecureContext', "DIST-LAYOUT-081: browser WebTransport smoke must verify secure-context availability"),
|
||||||
|
|||||||
Reference in New Issue
Block a user