0.3.5
This commit is contained in:
14
CHANGELOG.md
14
CHANGELOG.md
@@ -1,8 +1,20 @@
|
|||||||
<!-- file: CHANGELOG.md -->
|
<!-- file: CHANGELOG.md -->
|
||||||
<!-- version: 21 -->
|
<!-- version: 22 -->
|
||||||
|
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 0.3.5 — 2026-09-22
|
||||||
|
|
||||||
|
- publication stable du second backend realtime `game-realtime-webtransport-lib`, retenu comme implémentation 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/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, documentée comme observation locale et non comme classement général ni prédiction Internet/mobile ;
|
||||||
|
- `0.3.5-rc.1` validée avec audits propres, `cargo check`, Clippy strict, **77 tests workspace**, quatre smokes natifs `PASS`, mesures release, builds WASM/frontend, smoke navigateur réel `PASS`, cross-compilation Android ARM64/API 21 et graphes de dépendances conformes ;
|
||||||
|
- documentation durable et architectures consolidées ; Android runtime WebTransport et plateformes Apple restent explicitement non validés, et 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`.
|
||||||
|
|
||||||
|
Les détails des phases `alpha`, `beta`, `rc` et de leurs correctifs restent dans `deltas/0.3.5/` et `history/0.3.5/`.
|
||||||
|
|
||||||
## 0.3.5-rc.1 — 2026-09-22
|
## 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 ;
|
- 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 ;
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ members = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.3.5-rc.1"
|
version = "0.3.5"
|
||||||
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: 82 -->
|
<!-- version: 83 -->
|
||||||
|
|
||||||
# games.sasedev
|
# games.sasedev
|
||||||
|
|
||||||
@@ -25,11 +25,11 @@ Workspace expérimental puis productif pour des jeux multiplateformes principale
|
|||||||
|
|
||||||
## Baseline
|
## Baseline
|
||||||
|
|
||||||
Version stable de référence : `0.3.4`.
|
Version stable de référence : `0.3.5`.
|
||||||
|
|
||||||
Version active : `0.3.5-rc.1`. `0.3.2` reste différée.
|
Version active : `0.3.5`. Prochaine version planifiée : `0.3.6-alpha.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-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.
|
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. La stable `0.3.5` ajoute le second backend WebTransport/QUIC retenu : 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. WebSocket reste la baseline/fallback de référence ; WebTransport est conservé comme second backend realtime. 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.
|
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,5 +1,5 @@
|
|||||||
<!-- file: ROADMAP.md -->
|
<!-- file: ROADMAP.md -->
|
||||||
<!-- version: 27 -->
|
<!-- version: 28 -->
|
||||||
|
|
||||||
# Roadmap
|
# Roadmap
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ Le détail historique des prereleases `0.1.0-*` reste dans `deltas/0.1.0/` et `h
|
|||||||
- (d) `0.3.2` — Tauri Desktop + Snake est différé tant qu’une solution de monétisation desktop/WebView, notamment vidéo récompensée, n’est pas démontrée techniquement et contractuellement ; ne pas créer cette distribution seulement pour réutiliser le host Web.
|
- (d) `0.3.2` — Tauri Desktop + Snake est différé tant qu’une solution de monétisation desktop/WebView, notamment vidéo récompensée, n’est pas démontrée techniquement et contractuellement ; ne pas créer cette distribution seulement pour réutiliser le host Web.
|
||||||
- (x) `0.3.3` — Android SDL3 natif multi-ABI livré avec Cargo/Gradle natifs, APK universal pour tests, AAB comme cible de distribution, `minSdk 21` fumé et compatibilité 16 KB 64 bits validée, sans script Python de build.
|
- (x) `0.3.3` — Android SDL3 natif multi-ABI livré avec Cargo/Gradle natifs, APK universal pour tests, AAB comme cible de distribution, `minSdk 21` fumé et compatibilité 16 KB 64 bits validée, sans script Python de build.
|
||||||
- (x) `0.3.4` — API de transport realtime + WebSocket/tokio-tungstenite baseline livrée, sans serveur Uroburas Mode 3.
|
- (x) `0.3.4` — API de transport realtime + WebSocket/tokio-tungstenite baseline livrée, sans serveur Uroburas Mode 3.
|
||||||
- ( ) `0.3.5` — POC WebTransport/QUIC sur le même protocole, avec comparaison mesurée et fallback WebSocket.
|
- (x) `0.3.5` — POC WebTransport/QUIC sur le même protocole, avec comparaison mesurée et fallback WebSocket.
|
||||||
- ( ) `0.3.6` — consolidation des POC plateforme/réseau et préparation de la baseline `0.4.x`.
|
- ( ) `0.3.6` — consolidation des POC plateforme/réseau et préparation de la baseline `0.4.x`.
|
||||||
|
|
||||||
La numérotation `0.3.1+` reste révisable à partir des résultats réels ; les lignes ci-dessus décrivent le planning actuel, pas une obligation de créer des versions artificielles.
|
La numérotation `0.3.1+` reste révisable à partir des résultats réels ; les lignes ci-dessus décrivent le planning actuel, pas une obligation de créer des versions artificielles.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "game-realtime-webtransport-browser-smoke-web",
|
"name": "game-realtime-webtransport-browser-smoke-web",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.3.5-rc.1",
|
"version": "0.3.5",
|
||||||
"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",
|
||||||
|
|||||||
81
deltas/0.3.5/rel.001.md
Normal file
81
deltas/0.3.5/rel.001.md
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
<!-- file: deltas/0.3.5/rel.001.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Delta 0.3.5 — release stable
|
||||||
|
|
||||||
|
## Base
|
||||||
|
|
||||||
|
Base validée : `0.3.5-rc.1`.
|
||||||
|
|
||||||
|
## Objet
|
||||||
|
|
||||||
|
Promouvoir mécaniquement la candidate validée vers `0.3.5` sans introduire de nouveau comportement.
|
||||||
|
|
||||||
|
## Changements
|
||||||
|
|
||||||
|
La release stable :
|
||||||
|
|
||||||
|
- passe `workspace.package.version` de `0.3.5-rc.1` à `0.3.5` ;
|
||||||
|
- synchronise le host `Web/game-realtime-webtransport-browser-smoke` sur `0.3.5` ;
|
||||||
|
- positionne `README.md` sur `0.3.5` comme stable de référence et `0.3.6-alpha.1` comme prochaine version planifiée ;
|
||||||
|
- marque `0.3.5` terminée dans `ROADMAP.md` ;
|
||||||
|
- ajoute l'entrée stable `0.3.5` dans `CHANGELOG.md` ;
|
||||||
|
- enregistre la validation effective de la RC dans `history/0.3.5/rc.1.md` ;
|
||||||
|
- clôt `docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md` et ses deux entrées d'index ;
|
||||||
|
- ajuste mécaniquement `prompts/007-V0_3_6_START_PROMPT.md` pour qu'il soit utilisé après publication effective du tag stable `v0.3.5`.
|
||||||
|
|
||||||
|
## Frontière de release
|
||||||
|
|
||||||
|
Aucun fichier Rust, test Rust, manifeste de crate realtime, dépendance tierce, Android/Gradle, gameplay, moteur, comportement WebSocket/WebTransport, fallback, datagram, framing, limite ou timeout n'est modifié après la RC.
|
||||||
|
|
||||||
|
La stable conserve notamment :
|
||||||
|
|
||||||
|
```text
|
||||||
|
WebSocket -> baseline/fallback de référence
|
||||||
|
WebTransport -> second backend realtime retained
|
||||||
|
Datagrams -> capacité WebTransport backend-spécifique, hors RealtimeConnection
|
||||||
|
```
|
||||||
|
|
||||||
|
Les preuves de plateforme restent 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 restent non validés.
|
||||||
|
|
||||||
|
## Validation proportionnelle
|
||||||
|
|
||||||
|
La RC fonctionnellement identique a déjà validé audits, `cargo check`, Clippy strict, **77 tests workspace**, quatre smokes natifs, mesures release, gates WASM/frontend, smoke navigateur réel, cross-compilation Android ARM64/API 21 et graphes de dépendances.
|
||||||
|
|
||||||
|
La promotion stable demande uniquement les contrôles proportionnels aux changements de version et de documentation/build-metadata :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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
|
||||||
|
|
||||||
|
(cd Web/game-realtime-webtransport-browser-smoke && npm install && npm run build)
|
||||||
|
```
|
||||||
|
|
||||||
|
Clippy strict, full tests, smokes natifs/browser et cross-compilation Android ne sont pas répétés par cérémonie puisque cette promotion ne modifie aucun code ni comportement. Tout échec de la gate ci-dessus doit néanmoins être corrigé avant publication.
|
||||||
|
|
||||||
|
## Contrôles documentaires de release
|
||||||
|
|
||||||
|
Vérifier explicitement que :
|
||||||
|
|
||||||
|
- `CHANGELOG.md` contient une entrée stable `0.3.5` au-dessus de l'entrée `0.3.5-rc.1` ;
|
||||||
|
- `ROADMAP.md` marque `0.3.5` `(x)` et laisse `0.3.6` planifiée ;
|
||||||
|
- le host navigateur annonce `0.3.5` ;
|
||||||
|
- le plan `0.3.5` et ses index sont clôturés ;
|
||||||
|
- `prompts/007-V0_3_6_START_PROMPT.md` demande `v0.3.5` comme base et précise qu'il ne doit être utilisé qu'après publication effective de ce tag ;
|
||||||
|
- aucune documentation ne transforme les datagrams en capacité `RealtimeConnection` ;
|
||||||
|
- aucune preuve de cross-compilation Android n'est décrite comme smoke runtime Android WebTransport.
|
||||||
|
|
||||||
|
## Publication
|
||||||
|
|
||||||
|
Après validation de ce delta :
|
||||||
|
|
||||||
|
- commit de release ;
|
||||||
|
- tag stable unique `v0.3.5` ;
|
||||||
|
- archive ZIP téléchargée depuis ce tag utilisée comme baseline autoritaire de la session suivante ;
|
||||||
|
- démarrage de `0.3.6` uniquement depuis `v0.3.5` avec `prompts/007-V0_3_6_START_PROMPT.md` ;
|
||||||
|
- première tranche suivante : `0.3.6-alpha.1`, audit/consolidation des POC `0.3.x` et création du plan actif `0.3.6`.
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/000-README.md -->
|
<!-- file: docs/000-README.md -->
|
||||||
<!-- version: 37 -->
|
<!-- version: 38 -->
|
||||||
|
|
||||||
# Documentation games.sasedev
|
# Documentation games.sasedev
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
- [`plans/002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md`](plans/002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md) — plan clôturé de `0.3.1`, second host Snake Tauri Android.
|
- [`plans/002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md`](plans/002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md) — plan clôturé de `0.3.1`, second host Snake Tauri Android.
|
||||||
- [`plans/003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md`](plans/003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md) — plan clôturé de `0.3.3`, pipeline Android SDL3 natif Gradle/Cargo multi-ABI.
|
- [`plans/003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md`](plans/003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md) — plan clôturé de `0.3.3`, pipeline Android SDL3 natif Gradle/Cargo multi-ABI.
|
||||||
- [`plans/004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md`](plans/004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md) — plan clôturé de `0.3.4`, API de transport realtime et baseline WebSocket Tokio/tokio-tungstenite.
|
- [`plans/004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md`](plans/004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md) — plan clôturé de `0.3.4`, API de transport realtime et baseline WebSocket Tokio/tokio-tungstenite.
|
||||||
- [`plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md`](plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md) — plan actif de `0.3.5`, POC WebTransport/QUIC, navigateur, fallback WebSocket et mesures comparatives.
|
- [`plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md`](plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md) — plan clôturé de `0.3.5`, second backend WebTransport/QUIC retenu, navigateur, fallback WebSocket et mesures comparatives.
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/plans/000-README.md -->
|
<!-- file: docs/plans/000-README.md -->
|
||||||
<!-- version: 7 -->
|
<!-- version: 8 -->
|
||||||
|
|
||||||
# Plans de versions games.sasedev
|
# Plans de versions games.sasedev
|
||||||
|
|
||||||
@@ -15,4 +15,4 @@ Le `ROADMAP.md` reste la trajectoire macroscopique du projet ; les deltas décri
|
|||||||
- [`002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md`](002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md) — plan clôturé de `0.3.1`, second host Snake Tauri Android.
|
- [`002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md`](002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md) — plan clôturé de `0.3.1`, second host Snake Tauri Android.
|
||||||
- [`003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md`](003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md) — plan clôturé de `0.3.3`, pipeline Android SDL3 natif Gradle/Cargo multi-ABI.
|
- [`003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md`](003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md) — plan clôturé de `0.3.3`, pipeline Android SDL3 natif Gradle/Cargo multi-ABI.
|
||||||
- [`004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md`](004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md) — plan clôturé de `0.3.4`, API de transport realtime et baseline WebSocket Tokio/tokio-tungstenite.
|
- [`004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md`](004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md) — plan clôturé de `0.3.4`, API de transport realtime et baseline WebSocket Tokio/tokio-tungstenite.
|
||||||
- [`005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md`](005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md) — plan actif de `0.3.5`, POC WebTransport/QUIC, navigateur, fallback WebSocket et comparaison mesurée.
|
- [`005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md`](005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md) — plan clôturé de `0.3.5`, second backend WebTransport/QUIC retenu, navigateur, fallback WebSocket et comparaison mesurée.
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
<!-- 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: 21 -->
|
<!-- version: 22 -->
|
||||||
|
|
||||||
# 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`, 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.
|
Plan clôturé avec la promotion stable `0.3.5` du 2026-09-22. Il a été créé pendant `0.3.5-alpha.1` à partir de l'archive taggée `v0.3.4` et reste désormais une référence historique.
|
||||||
|
|
||||||
|
Les tranches `alpha.1`, `alpha.2.fix.1`, `alpha.3`, `alpha.4.fix.1`, `alpha.5`, `alpha.6`, `alpha.7.fix.2`, `alpha.8.fix.1`, `alpha.9.fix.1`, `alpha.10.fix.1`, `beta.1.fix.1`, `beta.2` et `rc.1` ont été validées. Les prereleases intermédiaires ayant nécessité un fix restent documentées dans `deltas/0.3.5/`. La RC finale a repassé les audits, la compilation workspace, Clippy strict, **77 tests workspace**, les quatre smokes natifs, les mesures release, les builds WASM/frontend, le smoke navigateur réel, la cross-compilation Android ARM64/API 21 et les graphes de dépendances sans défaut. La stable est une promotion mécanique de cette RC gelée. WebTransport est **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.
|
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.
|
||||||
|
|
||||||
@@ -637,7 +639,7 @@ La RC suivante vérifie cette documentation consolidée et porte l'entrée chang
|
|||||||
|
|
||||||
### `0.3.5-rc.1` — candidate gelée
|
### `0.3.5-rc.1` — candidate gelée
|
||||||
|
|
||||||
Tranche active :
|
Tranche validée :
|
||||||
|
|
||||||
- aucun comportement volontaire nouveau ;
|
- aucun comportement volontaire nouveau ;
|
||||||
- enregistrer `history/0.3.5/beta.2.md` après sa validation ;
|
- enregistrer `history/0.3.5/beta.2.md` après sa validation ;
|
||||||
@@ -653,15 +655,7 @@ Tranche active :
|
|||||||
|
|
||||||
### `0.3.5` — stable
|
### `0.3.5` — stable
|
||||||
|
|
||||||
Promotion mécanique autant que possible :
|
Promotion mécanique réalisée : version `0.3.5`, historique RC, changelog stable, roadmap clôturée, plan et index clôturés, delta `rel.001` et prompt `0.3.6` ajusté pour partir de la stable publiée/taggée après validation du delta final. Aucun comportement n'est modifié après `rc.1`.
|
||||||
|
|
||||||
- version stable ;
|
|
||||||
- historique RC ;
|
|
||||||
- changelog stable ;
|
|
||||||
- clôture du plan ;
|
|
||||||
- roadmap si nécessaire ;
|
|
||||||
- delta final ;
|
|
||||||
- ajustement mécanique du prompt `0.3.6`.
|
|
||||||
|
|
||||||
## Gates Cargo planifiées
|
## Gates Cargo planifiées
|
||||||
|
|
||||||
|
|||||||
95
history/0.3.5/rc.1.md
Normal file
95
history/0.3.5/rc.1.md
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
<!-- file: history/0.3.5/rc.1.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Historique 0.3.5-rc.1
|
||||||
|
|
||||||
|
## Statut
|
||||||
|
|
||||||
|
`0.3.5-rc.1` a été validée par l'utilisateur le 2026-09-22. La candidate gelée passe les audits, la compilation workspace, Clippy strict, le workspace de tests complet, les smokes realtime natifs, la caractérisation release, les gates WASM/frontend, la cross-compilation Android ARM64/API 21, le smoke navigateur réel et les contrôles de dépendances sans défaut de publication.
|
||||||
|
|
||||||
|
Aucun `rc.1.fix.N` n'est requis. La candidate peut être promue mécaniquement vers la stable `0.3.5`.
|
||||||
|
|
||||||
|
## Gates statiques et workspace
|
||||||
|
|
||||||
|
La sortie utilisateur confirme :
|
||||||
|
|
||||||
|
```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), 318 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 workspace compilé porte bien `0.3.5-rc.1`, y compris les crates realtime, les smokes et l'outil de mesure.
|
||||||
|
|
||||||
|
## Tests workspace
|
||||||
|
|
||||||
|
La commande :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo test --workspace --all-targets --all-features
|
||||||
|
```
|
||||||
|
|
||||||
|
valide **77 tests, 0 échec** sur les moteurs, plateformes, assets/logging, jeux, WebSocket, WebTransport, datagrams, fallback et adapters concernés.
|
||||||
|
|
||||||
|
## Smokes realtime natifs
|
||||||
|
|
||||||
|
Les quatre launchers terminent par :
|
||||||
|
|
||||||
|
```text
|
||||||
|
game-realtime-websocket-smoke: PASS
|
||||||
|
game-realtime-webtransport-smoke: PASS
|
||||||
|
game-realtime-webtransport-datagram-smoke: PASS
|
||||||
|
game-realtime-transport-fallback-smoke: PASS
|
||||||
|
```
|
||||||
|
|
||||||
|
Le fallback confirme WebTransport préféré, WebSocket uniquement sur erreur classifiée `Timeout`/`Io`, et visibilité conservée des erreurs non éligibles au fallback.
|
||||||
|
|
||||||
|
## Mesures de la RC
|
||||||
|
|
||||||
|
La caractérisation release bornée termine par `game-realtime-transport-measure: PASS` et observe sur cette exécution loopback :
|
||||||
|
|
||||||
|
```text
|
||||||
|
establishment median: websocket=65 us, webtransport=720 us
|
||||||
|
rtt median: websocket=17 us, webtransport=11 us
|
||||||
|
throughput 128 x 64 KiB: websocket=3036.346 MiB/s, webtransport=634.827 MiB/s
|
||||||
|
in-flight 64 x 1 KiB: websocket=1.533 MiB/s, webtransport=348.883 MiB/s
|
||||||
|
datagram bounded burst: attempted=64, received=64, payload=256 bytes, client_max=1381, server_max=1381
|
||||||
|
```
|
||||||
|
|
||||||
|
Ces valeurs restent une observation locale dépendante du pattern ; elles ne constituent ni un classement général des protocoles ni une prédiction Internet/mobile. La conclusion reste :
|
||||||
|
|
||||||
|
```text
|
||||||
|
CONCLUSION webtransport=retain scope=second-backend reason=reliable-browser-fallback-datagram-capabilities
|
||||||
|
```
|
||||||
|
|
||||||
|
## WASM, frontend et navigateur réel
|
||||||
|
|
||||||
|
Les gates `wasm32-unknown-unknown` de `game-realtime-webtransport-lib` passent en check, Clippy strict et build. `game-realtime-webtransport-browser-smoke` compile également pour WASM.
|
||||||
|
|
||||||
|
Le host Vite/TypeScript synchronisé sur `0.3.5-rc.1` passe `npm install` sans vulnérabilité puis son build production. Le smoke navigateur réel contre le serveur Rust natif termine par :
|
||||||
|
|
||||||
|
```text
|
||||||
|
game-realtime-webtransport-browser-smoke: PASS
|
||||||
|
```
|
||||||
|
|
||||||
|
## Android ARM64/API 21
|
||||||
|
|
||||||
|
Avec le NDK `28.2.13676358` déjà retenu et le Clang ciblé `aarch64-linux-android21-clang` exposé à Cargo/`cc-rs`, la commande :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo check -p game-realtime-webtransport-lib --target aarch64-linux-android
|
||||||
|
```
|
||||||
|
|
||||||
|
termine proprement. Cette preuve valide la **cross-compilation** du backend WebTransport pour Android ARM64/API 21 ; elle ne constitue pas un smoke runtime Android WebTransport.
|
||||||
|
|
||||||
|
## Frontières de dépendances
|
||||||
|
|
||||||
|
Les graphes directs/inverses confirment que les backends realtime restent consommés uniquement par les launchers/outils techniques prévus. Aucun moteur ni gameplay ne dépend directement de `game-realtime-websocket-lib` ou `game-realtime-webtransport-lib`.
|
||||||
|
|
||||||
|
## Conclusion RC
|
||||||
|
|
||||||
|
La candidate est gelée, cohérente et validée sans correctif RC. La stable `0.3.5` peut se limiter aux changements mécaniques de version, changelog, roadmap, clôture du plan/index, historique RC, delta final et ajustement du prompt `0.3.6`.
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: prompts/007-V0_3_6_START_PROMPT.md -->
|
<!-- file: prompts/007-V0_3_6_START_PROMPT.md -->
|
||||||
<!-- version: 1 -->
|
<!-- version: 2 -->
|
||||||
|
|
||||||
# Prompt de démarrage `0.3.6` — consolidation des POC plateforme/réseau et baseline 0.4.x
|
# Prompt de démarrage `0.3.6` — consolidation des POC plateforme/réseau et baseline 0.4.x
|
||||||
|
|
||||||
@@ -11,7 +11,7 @@ Partir uniquement de la version stable/taggée :
|
|||||||
v0.3.5
|
v0.3.5
|
||||||
```
|
```
|
||||||
|
|
||||||
Ce prompt est préparé pendant la consolidation `0.3.5-beta.2`. Il doit être vérifié en RC puis ajusté mécaniquement à la stable. Ne pas l'utiliser comme preuve que `v0.3.5` existe avant la publication effective du tag.
|
Ce prompt accompagne la stable `0.3.5`. Il doit être utilisé uniquement après validation du delta stable, commit de release et publication effective du tag `v0.3.5`. L'archive ZIP téléchargée depuis ce tag devient alors la baseline autoritaire de la session `0.3.6`.
|
||||||
|
|
||||||
Une archive annoncée comme téléchargement ZIP du tag Gitea est autoritaire conformément à `CMD-GIT-003` et `CMD-GIT-004`; l'absence de `.git` n'est pas un défaut.
|
Une archive annoncée comme téléchargement ZIP du tag Gitea est autoritaire conformément à `CMD-GIT-003` et `CMD-GIT-004`; l'absence de `.git` n'est pas un défaut.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user