0.3.5-rc.1
This commit is contained in:
15
CHANGELOG.md
15
CHANGELOG.md
@@ -1,8 +1,21 @@
|
||||
<!-- file: CHANGELOG.md -->
|
||||
<!-- version: 20 -->
|
||||
<!-- version: 21 -->
|
||||
|
||||
# Changelog
|
||||
|
||||
## 0.3.5-rc.1 — 2026-09-22
|
||||
|
||||
- gel de la seconde implémentation realtime autour de `game-realtime-webtransport-lib`, conservée comme backend WebTransport/QUIC supplémentaire tandis que `game-realtime-websocket-lib` reste la baseline et le fallback de référence ;
|
||||
- établissement natif QUIC/HTTP3 avec TLS et pin SHA-256 exact, stream bidirectionnel fiable compatible `RealtimeConnection`, deadlines/cancellation bornées et client navigateur/WASM WebTransport réel validé contre le serveur Rust natif ;
|
||||
- composition WebTransport-first validée sans manager générique : fallback WebSocket limité aux erreurs classifiées `Timeout`/`Io`, avec les erreurs ambiguës ou de configuration laissées visibles ;
|
||||
- datagrams WebTransport conservés comme capacité backend-spécifique, non fiable et non ordonnée, avec taille maximale négociée et sans extension du contrat fiable commun ;
|
||||
- caractérisation loopback bornée de l'établissement, du RTT, de plusieurs patterns de throughput et des datagrams ; ces mesures décrivent les wrappers locaux et ne constituent ni un classement général des transports ni une prédiction Internet/mobile ;
|
||||
- validation large `beta.1` avec 77 tests workspace, smokes natifs WebSocket/WebTransport/datagram/fallback, builds WASM/frontend et smoke navigateur réel ; cross-compilation du backend WebTransport validée pour Android ARM64/API 21 avec NDK `28.2.13676358`, sans prétendre à un smoke runtime Android WebTransport ;
|
||||
- consolidation `beta.2` des README/USAGE et architectures, décision **retained** figée pour WebTransport, et préparation du prompt `0.3.6` pour réconcilier les POC `0.3.x` avant Uroburas `0.4.x` ;
|
||||
- aucun codec wire métier final, protocole session joueur/room, reconnect/resync, synchronisation gameplay, prediction/reconciliation, matchmaking ou simulation authoritative n'est introduit par `0.3.5`.
|
||||
|
||||
La RC n'ouvre aucun nouveau scope. Seuls les correctifs nécessaires à la publication selon `VER-RC-*` peuvent produire `0.3.5-rc.1.fix.N`.
|
||||
|
||||
## 0.3.4 — 2026-09-21
|
||||
|
||||
- publication stable de la première baseline realtime, avec `game-realtime-transport-lib` comme contrat binaire transport-neutral et `game-realtime-websocket-lib` comme backend Tokio/tokio-tungstenite ;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# file: Cargo.toml
|
||||
# version: 112
|
||||
# version: 113
|
||||
|
||||
[workspace]
|
||||
resolver = "3"
|
||||
@@ -30,7 +30,7 @@ members = [
|
||||
]
|
||||
|
||||
[workspace.package]
|
||||
version = "0.3.5-beta.2"
|
||||
version = "0.3.5-rc.1"
|
||||
edition = "2024"
|
||||
license = "MIT"
|
||||
repository = "https://git.sasedev.com/Sasedev/games"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: README.md -->
|
||||
<!-- version: 81 -->
|
||||
<!-- version: 82 -->
|
||||
|
||||
# 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-beta.2`. `0.3.2` reste différée.
|
||||
Version active : `0.3.5-rc.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-beta.2` consolide le résultat du POC WebTransport/QUIC après validation large de `0.3.5-beta.1.fix.1` : chemins natif et navigateur, composition WebTransport-first avec fallback WebSocket strictement classifié, datagrams backend-spécifiques, caractérisation loopback bornée et cross-compilation Android ARM64/API 21. La décision désormais figée pour la RC est de **retenir WebTransport comme second backend realtime** à côté de WebSocket, qui reste la baseline/fallback de référence. Cette décision ne prétend pas qu’un résultat loopback prédit les performances Internet/mobile et ne transforme pas les datagrams en capacité du contrat fiable commun.
|
||||
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-rc.1` gèle le résultat consolidé du POC WebTransport/QUIC après validation de `0.3.5-beta.2` : chemins natif et navigateur, composition WebTransport-first avec fallback WebSocket strictement classifié, datagrams backend-spécifiques, caractérisation loopback bornée et cross-compilation Android ARM64/API 21. La candidate `0.3.5-rc.1` conserve la décision de **retenir WebTransport comme second backend realtime** à côté de WebSocket, qui reste la baseline/fallback de référence. Cette décision ne prétend pas qu’un résultat loopback prédit les performances Internet/mobile et ne transforme pas les datagrams en capacité du contrat fiable commun.
|
||||
|
||||
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,7 +1,7 @@
|
||||
{
|
||||
"name": "game-realtime-webtransport-browser-smoke-web",
|
||||
"private": true,
|
||||
"version": "0.3.5-beta.2",
|
||||
"version": "0.3.5-rc.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",
|
||||
|
||||
121
deltas/0.3.5/rc.1.md
Normal file
121
deltas/0.3.5/rc.1.md
Normal file
@@ -0,0 +1,121 @@
|
||||
<!-- file: deltas/0.3.5/rc.1.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.3.5-rc.1
|
||||
|
||||
## Base requise
|
||||
|
||||
`0.3.5-beta.2` validée.
|
||||
|
||||
## Objet
|
||||
|
||||
Geler la candidate de publication `0.3.5` sans rouvrir le scope fonctionnel. La RC porte pour la première fois l'entrée candidate dans `CHANGELOG.md`, enregistre la consolidation beta validée et repasse la gate complète de publication.
|
||||
|
||||
La version technique devient :
|
||||
|
||||
```text
|
||||
0.3.5-rc.1
|
||||
```
|
||||
|
||||
La décision candidate reste :
|
||||
|
||||
```text
|
||||
WebSocket -> baseline/fallback de référence
|
||||
WebTransport -> second backend realtime retained
|
||||
Datagrams -> capacité WebTransport backend-spécifique
|
||||
```
|
||||
|
||||
## Modifications
|
||||
|
||||
- enregistrer `history/0.3.5/beta.2.md` avec la gate documentaire réellement validée ;
|
||||
- synchroniser `workspace.package.version` et le host navigateur sur `0.3.5-rc.1` ;
|
||||
- ajouter l'entrée `0.3.5-rc.1` dans `CHANGELOG.md` conformément à `DOC-CHG-003/004` ;
|
||||
- mettre à jour `README.md` et le plan actif pour refléter la candidate gelée ;
|
||||
- conserver `ROADMAP.md` inchangé : la version n'est pas encore stable et aucun statut macroscopique nouveau n'est acquis ;
|
||||
- conserver `prompts/007-V0_3_6_START_PROMPT.md` inchangé s'il reste correct ; sa formulation doit continuer à distinguer la future stable `v0.3.5` de l'état RC actuel.
|
||||
|
||||
Aucun code Rust, backend, dépendance, protocole, fallback, datagram, engine ou gameplay n'est modifié par ce delta.
|
||||
|
||||
## Validation attendue
|
||||
|
||||
```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
|
||||
|
||||
cargo run -p game-realtime-websocket-smoke
|
||||
cargo run -p game-realtime-webtransport-smoke
|
||||
cargo run -p game-realtime-webtransport-datagram-smoke
|
||||
cargo run -p game-realtime-transport-fallback-smoke
|
||||
cargo run --release -p game-realtime-transport-measure
|
||||
|
||||
cargo check -p game-realtime-webtransport-lib --target wasm32-unknown-unknown
|
||||
cargo clippy -p game-realtime-webtransport-lib --target wasm32-unknown-unknown --lib -- -D warnings
|
||||
cargo build -p game-realtime-webtransport-lib --target wasm32-unknown-unknown
|
||||
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)
|
||||
|
||||
cargo tree -p game-realtime-websocket-lib --edges normal
|
||||
cargo tree -p game-realtime-webtransport-lib --edges normal
|
||||
cargo tree -i game-realtime-websocket-lib --workspace --edges normal
|
||||
cargo tree -i game-realtime-webtransport-lib --workspace --edges normal
|
||||
```
|
||||
|
||||
La preuve Android ARM64/API 21 doit aussi être repassée avec le NDK déjà retenu, sans chemin machine absolu :
|
||||
|
||||
```bash
|
||||
ANDROID_SDK="${ANDROID_HOME:-$ANDROID_SDK_ROOT}"
|
||||
export ANDROID_NDK_HOME="$ANDROID_SDK/ndk/28.2.13676358"
|
||||
export TOOLCHAIN="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64"
|
||||
|
||||
export CC_aarch64_linux_android="$TOOLCHAIN/bin/aarch64-linux-android21-clang"
|
||||
export CXX_aarch64_linux_android="$TOOLCHAIN/bin/aarch64-linux-android21-clang++"
|
||||
export AR_aarch64_linux_android="$TOOLCHAIN/bin/llvm-ar"
|
||||
export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="$TOOLCHAIN/bin/aarch64-linux-android21-clang"
|
||||
|
||||
cargo check -p game-realtime-webtransport-lib --target aarch64-linux-android
|
||||
```
|
||||
|
||||
Le smoke navigateur réel est également une gate RC. Terminal 1 :
|
||||
|
||||
```bash
|
||||
cargo run -p game-realtime-webtransport-browser-smoke
|
||||
```
|
||||
|
||||
Terminal 2 :
|
||||
|
||||
```bash
|
||||
(cd Web/game-realtime-webtransport-browser-smoke && npm run dev)
|
||||
```
|
||||
|
||||
Ouvrir ensuite l'URL `OPEN=...` et obtenir :
|
||||
|
||||
```text
|
||||
game-realtime-webtransport-browser-smoke: PASS
|
||||
```
|
||||
|
||||
## Contrôles documentaires RC
|
||||
|
||||
Vérifier explicitement que :
|
||||
|
||||
- `CHANGELOG.md` contient l'entrée candidate `0.3.5-rc.1` mais aucune entrée stable `0.3.5` ;
|
||||
- `ROADMAP.md` n'est pas artificiellement clôturé avant la stable ;
|
||||
- le host navigateur annonce `0.3.5-rc.1` ;
|
||||
- `prompts/007-V0_3_6_START_PROMPT.md` demande de partir de `v0.3.5` tout en rappelant que cette stable/tag n'existe pas encore pendant la RC ;
|
||||
- aucun engine/gameplay ne dépend directement d'un backend realtime concret ;
|
||||
- aucune documentation ne transforme les datagrams en capacité `RealtimeConnection` ;
|
||||
- aucune preuve de cross-compilation Android n'est décrite comme smoke runtime Android WebTransport.
|
||||
|
||||
## Après validation
|
||||
|
||||
Si toutes les gates sont vertes, créer `history/0.3.5/rc.1.md` dans le delta stable `0.3.5`, promouvoir mécaniquement les versions vers `0.3.5`, convertir l'entrée changelog candidate en entrée stable correspondante, clôturer le plan/ROADMAP si nécessaire et ajuster mécaniquement le prompt `0.3.6` pour une base désormais réellement publiée/taggée.
|
||||
|
||||
Tout défaut nécessaire à la publication produit `0.3.5-rc.1.fix.N` conformément à `VER-RC-*`; tout nouveau scope fonctionnel abandonne la RC et revient à une phase adaptée.
|
||||
@@ -1,11 +1,11 @@
|
||||
<!-- file: docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md -->
|
||||
<!-- version: 20 -->
|
||||
<!-- version: 21 -->
|
||||
|
||||
# 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`, le smoke navigateur validé par `0.3.5-alpha.7.fix.2`, la composition/fallback WebSocket validée par `0.3.5-alpha.8.fix.1`, le POC datagram backend-spécifique validé par `0.3.5-alpha.9.fix.1`, puis la caractérisation comparative bornée validée par `0.3.5-alpha.10.fix.1`. `0.3.5-beta.1` a validé le workspace complet, les smokes natifs, les mesures, le build WASM/frontend et le smoke navigateur réel. `0.3.5-beta.1.fix.1` a ensuite fermé la dérive de version du host navigateur, revalidé son build/smoke réel et confirmé la cross-compilation du backend WebTransport pour Android ARM64/API 21 avec le NDK `28.2.13676358`. `0.3.5-beta.2` est désormais la tranche active de consolidation pré-RC et fige la décision **retained** : WebTransport est conservé comme second backend realtime, WebSocket restant la baseline/fallback de référence.
|
||||
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 validé par `0.3.5-alpha.7.fix.2`, la composition/fallback WebSocket validée par `0.3.5-alpha.8.fix.1`, le POC datagram backend-spécifique validé par `0.3.5-alpha.9.fix.1`, puis la caractérisation comparative bornée validée par `0.3.5-alpha.10.fix.1`. `0.3.5-beta.1` a validé le workspace complet, les smokes natifs, les mesures, le build WASM/frontend et le smoke navigateur réel. `0.3.5-beta.1.fix.1` a ensuite fermé la dérive de version du host navigateur, revalidé son build/smoke réel et confirmé la cross-compilation du backend WebTransport pour Android ARM64/API 21 avec le NDK `28.2.13676358`. `0.3.5-beta.2` a validé la consolidation documentaire pré-RC sans changement fonctionnel. `0.3.5-rc.1` est désormais la candidate gelée : WebTransport reste **retained** comme second backend realtime et WebSocket reste la baseline/fallback de référence.
|
||||
|
||||
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.
|
||||
|
||||
@@ -618,7 +618,9 @@ La preuve détaillée est conservée dans `history/0.3.5/beta.1.fix.1.md`.
|
||||
|
||||
### `0.3.5-beta.2` — consolidation pré-RC
|
||||
|
||||
Tranche candidate explicitement réservée par `SESSION-009` / `VER-PHASE-010` :
|
||||
Tranche validée : audits Rust/workspace, Markdown et distribution propres, `cargo check --workspace`, Clippy strict et build frontend/WASM propres, sans modification fonctionnelle.
|
||||
|
||||
La tranche a été explicitement réservée par `SESSION-009` / `VER-PHASE-010` pour :
|
||||
|
||||
- enregistrer `history/0.3.5/beta.1.fix.1.md` avec les validations réellement obtenues ;
|
||||
- réconcilier les README/USAGE realtime et les documents d'architecture devenus historiques ;
|
||||
@@ -635,12 +637,18 @@ La RC suivante vérifie cette documentation consolidée et porte l'entrée chang
|
||||
|
||||
### `0.3.5-rc.1` — candidate gelée
|
||||
|
||||
Tranche active :
|
||||
|
||||
- aucun comportement volontaire nouveau ;
|
||||
- enregistrer `history/0.3.5/beta.2.md` après sa validation ;
|
||||
- créer l'entrée candidate `0.3.5-rc.1` dans `CHANGELOG.md` conformément à `DOC-CHG-003/004` ;
|
||||
- synchroniser la version workspace et le host navigateur sur `0.3.5-rc.1` ;
|
||||
- full workspace conformément à `CMD-RC-002` ;
|
||||
- gates realtime de publication ;
|
||||
- smokes retenus ;
|
||||
- graphe de dépendances ;
|
||||
- vérification du prompt `0.3.6` ;
|
||||
- gates realtime de publication et smokes retenus ;
|
||||
- build WASM/frontend, smoke navigateur réel et cross-compilation Android ARM64/API 21 ;
|
||||
- graphe de dépendances direct/inverse des backends ;
|
||||
- vérification que `prompts/007-V0_3_6_START_PROMPT.md` ne présente pas `v0.3.5` comme déjà publié ;
|
||||
- aucune modification de `ROADMAP.md` tant que la stable n'est pas publiée et qu'aucun statut macro ne change ;
|
||||
- corrections uniquement selon `VER-RC-*`.
|
||||
|
||||
### `0.3.5` — stable
|
||||
|
||||
52
history/0.3.5/beta.2.md
Normal file
52
history/0.3.5/beta.2.md
Normal file
@@ -0,0 +1,52 @@
|
||||
<!-- file: history/0.3.5/beta.2.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Historique 0.3.5-beta.2
|
||||
|
||||
## Statut
|
||||
|
||||
`0.3.5-beta.2` a été validée par l'utilisateur le 2026-09-22. Cette tranche est une consolidation pré-RC exclusivement documentaire/build-metadata : aucun fichier Rust, backend, dépendance, protocole, fallback, datagram, engine ou gameplay n'a été modifié.
|
||||
|
||||
## Gate validée
|
||||
|
||||
La validation exécutée a confirmé :
|
||||
|
||||
```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), 316 file(s))
|
||||
Distribution layout audit: clean (66 required path(s), 8 forbidden path(s) absent)
|
||||
cargo check --workspace: clean
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings: clean
|
||||
```
|
||||
|
||||
Le host navigateur synchronisé sur `0.3.5-beta.2` a également été reconstruit proprement :
|
||||
|
||||
```text
|
||||
npm install: 0 vulnerabilities
|
||||
wasm:build: clean
|
||||
TypeScript: clean
|
||||
Vite: 5 modules transformed
|
||||
production build: clean
|
||||
```
|
||||
|
||||
Le full workspace, les smokes natifs, le smoke navigateur réel, les mesures et la cross-compilation Android ARM64/API 21 n'ont pas été répétés dans cette tranche documentaire ; ils restent couverts par `history/0.3.5/beta.1.fix.1.md` et aucun comportement n'a changé depuis.
|
||||
|
||||
## Consolidation acceptée
|
||||
|
||||
La documentation durable est désormais cohérente avec la décision finale candidate :
|
||||
|
||||
```text
|
||||
WebSocket -> baseline/fallback de référence
|
||||
WebTransport -> second backend realtime retenu
|
||||
Datagrams -> capacité WebTransport backend-spécifique, hors RealtimeConnection
|
||||
```
|
||||
|
||||
Les preuves de plateforme restent explicitement bornées : Linux natif et navigateur/WASM ont une preuve runtime, Android ARM64/API 21 a une preuve de cross-compilation du backend, Android runtime WebTransport et Apple ne sont pas présentés comme validés.
|
||||
|
||||
`prompts/007-V0_3_6_START_PROMPT.md` est prêt pour la future stable `v0.3.5` sans présenter ce tag comme déjà publié.
|
||||
|
||||
## Conclusion
|
||||
|
||||
La consolidation pré-RC est acceptée sans défaut nécessitant un correctif beta. `0.3.5-rc.1` peut geler la candidate, créer l'entrée changelog RC et exécuter la gate complète de publication.
|
||||
Reference in New Issue
Block a user