0.3.5-alpha.10
This commit is contained in:
177
deltas/0.3.5/alpha.10.md
Normal file
177
deltas/0.3.5/alpha.10.md
Normal file
@@ -0,0 +1,177 @@
|
||||
<!-- file: deltas/0.3.5/alpha.10.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.3.5-alpha.10
|
||||
|
||||
## Base requise
|
||||
|
||||
`0.3.5-alpha.9.fix.1`, validée par l'utilisateur le 2026-09-22.
|
||||
|
||||
La gate finale confirme fmt, audits, `cargo check --workspace`, Clippy strict, `22/22` tests WebTransport, smoke datagram natif `PASS` et check/Clippy/build WASM. La preuve est enregistrée dans `history/0.3.5/alpha.9.fix.1.md`.
|
||||
|
||||
## Objectif
|
||||
|
||||
Caractériser de manière bornée les backends realtime déjà retenus sans introduire de nouveau contrat produit :
|
||||
|
||||
- établissement WebSocket vs WebTransport fiable ;
|
||||
- RTT applicatif ;
|
||||
- throughput fiable ;
|
||||
- fenêtre bornée de messages sans ACK intermédiaire ;
|
||||
- datagram WebTransport mesuré séparément ;
|
||||
- méthode et limites documentées ;
|
||||
- conclusion technique provisoire `retain` sans classement automatique.
|
||||
|
||||
## Version
|
||||
|
||||
La version workspace passe à :
|
||||
|
||||
```text
|
||||
0.3.5-alpha.10
|
||||
```
|
||||
|
||||
## Nouveau launcher
|
||||
|
||||
Nouvelle application technique :
|
||||
|
||||
```text
|
||||
crates/apps/game-realtime-transport-measure
|
||||
```
|
||||
|
||||
Elle dépend uniquement :
|
||||
|
||||
```text
|
||||
game-realtime-transport-lib
|
||||
game-realtime-websocket-lib
|
||||
game-realtime-webtransport-lib
|
||||
tokio
|
||||
```
|
||||
|
||||
Elle ne dépend d'aucun engine ni gameplay et ne modifie aucune crate backend.
|
||||
|
||||
## Mesures fiables
|
||||
|
||||
La comparaison utilise uniquement `RealtimeConnection` pour les deux backends.
|
||||
|
||||
### Établissement
|
||||
|
||||
```text
|
||||
8 échantillons
|
||||
WebSocket : handshake jusqu'à connexion prête
|
||||
WebTransport : session + stream primaire jusqu'à connexion fiable prête
|
||||
```
|
||||
|
||||
### RTT
|
||||
|
||||
```text
|
||||
16 warmups
|
||||
128 échantillons
|
||||
32 octets par ping/pong
|
||||
```
|
||||
|
||||
### Throughput
|
||||
|
||||
```text
|
||||
128 messages
|
||||
64 KiB par message
|
||||
8 MiB utiles
|
||||
ACK final après drainage serveur
|
||||
```
|
||||
|
||||
### Fenêtre applicative en vol
|
||||
|
||||
```text
|
||||
64 messages
|
||||
1 KiB par message
|
||||
aucun ACK applicatif intermédiaire
|
||||
ACK unique après drainage
|
||||
```
|
||||
|
||||
Cette dernière mesure ne prétend pas mesurer directement le nombre de paquets réseau en vol ; elle caractérise une fenêtre applicative bornée de messages non acquittés individuellement.
|
||||
|
||||
## Datagram séparé
|
||||
|
||||
WebTransport est également caractérisé hors `RealtimeConnection` :
|
||||
|
||||
```text
|
||||
64 datagrams
|
||||
payload = min(256, client_max, server_max)
|
||||
réception jusqu'à 64 ou 250 ms sans nouveau datagram
|
||||
```
|
||||
|
||||
Le launcher rapporte `attempted`, `received`, `receive_ratio`, les bornes négociées et le temps écoulé. Il n'interprète pas une réception complète comme une garantie de fiabilité.
|
||||
|
||||
## Sortie
|
||||
|
||||
Chaque résultat est imprimé sous une forme stable :
|
||||
|
||||
```text
|
||||
MEASURE transport=<...> metric=<...> ...
|
||||
```
|
||||
|
||||
La fin normale est :
|
||||
|
||||
```text
|
||||
CONCLUSION webtransport=retain scope=second-backend reason=reliable-browser-fallback-datagram-capabilities
|
||||
game-realtime-transport-measure: PASS
|
||||
```
|
||||
|
||||
Le `retain` signifie uniquement conserver WebTransport comme second backend à côté de WebSocket. Aucun seuil de victoire et aucune affirmation « plus rapide » n'est codé dans l'outil.
|
||||
|
||||
## Documentation
|
||||
|
||||
La méthode et ses limites sont figées dans :
|
||||
|
||||
```text
|
||||
docs/studies/027-V0_3_5_REALTIME_TRANSPORT_MEASUREMENT.md
|
||||
```
|
||||
|
||||
Les valeurs de la machine de validation seront enregistrées dans `history/0.3.5/alpha.10.md` après la gate utilisateur plutôt que figées comme vérité générale dans la documentation durable.
|
||||
|
||||
## Fichiers principaux
|
||||
|
||||
Nouveaux :
|
||||
|
||||
```text
|
||||
crates/apps/game-realtime-transport-measure/Cargo.toml
|
||||
crates/apps/game-realtime-transport-measure/src/main.rs
|
||||
deltas/0.3.5/alpha.10.md
|
||||
docs/studies/027-V0_3_5_REALTIME_TRANSPORT_MEASUREMENT.md
|
||||
history/0.3.5/alpha.9.fix.1.md
|
||||
```
|
||||
|
||||
Modifiés :
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
README.md
|
||||
docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md
|
||||
scripts/audit_distribution_layout.py
|
||||
```
|
||||
|
||||
## 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 -p game-realtime-transport-lib --all-targets --all-features
|
||||
cargo test -p game-realtime-websocket-lib --all-targets --all-features
|
||||
cargo test -p game-realtime-webtransport-lib --all-targets --all-features
|
||||
|
||||
cargo run --release -p game-realtime-transport-measure
|
||||
|
||||
cargo tree -p game-realtime-transport-measure --edges normal
|
||||
cargo tree -i game-realtime-websocket-lib --workspace --edges normal
|
||||
cargo tree -i game-realtime-webtransport-lib --workspace --edges normal
|
||||
```
|
||||
|
||||
## Après validation
|
||||
|
||||
Enregistrer les lignes `MEASURE ...` réelles dans `history/0.3.5/alpha.10.md`, puis passer à `0.3.5-beta.1` pour la validation large. Un défaut fermé de `alpha.10` doit produire `alpha.10.fix.N` avant `beta.1`.
|
||||
Reference in New Issue
Block a user