# 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`.