0.3.5-alpha.10

This commit is contained in:
2026-09-22 08:49:40 +02:00
parent c5806e4f78
commit 3f8693c929
11 changed files with 1046 additions and 16 deletions

177
deltas/0.3.5/alpha.10.md Normal file
View 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`.