178 lines
4.7 KiB
Markdown
178 lines
4.7 KiB
Markdown
<!-- 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`.
|