3.6 KiB
Delta 0.3.5-alpha.5
Base requise
0.3.5-alpha.4.fix.1, validée par l'utilisateur le 2026-09-21 avec fmt, audits, cargo check, Clippy strict, les sept tests du contrat realtime commun et les vingt tests WebTransport.
La preuve est enregistrée dans history/0.3.5/alpha.4.fix.1.md.
Objectif
Fermer la preuve runtime native WebTransport hors harness de test sans ajouter de fonctionnalité à la bibliothèque.
Cette tranche doit démontrer avec les APIs publiques réellement distribuées que le chemin localhost complet fonctionne depuis un exécutable normal : TLS local, pinning, session WebTransport, stream fiable principal, contrat realtime commun, round-trip bidirectionnel et fermeture propre.
Version
La version workspace passe à :
0.3.5-alpha.5
Launcher technique
Nouvelle crate :
crates/apps/game-realtime-webtransport-smoke
Elle dépend uniquement de :
game-logging-lib
game-realtime-transport-lib
game-realtime-webtransport-lib
tokio
tracing
Aucune nouvelle dépendance externe n'est introduite.
Le launcher :
- initialise le tracing commun ;
- génère une identité TLS loopback ECDSA P-256 courte durée en mémoire ;
- dérive le hash SHA-256 exact exposé par cette identité ;
- bind le listener WebTransport sur
127.0.0.1:0; - construit le client
https://<adresse>/smokeavec ce hash pin ; - établit simultanément les sessions client et serveur ;
- ouvre/accepte le stream bidirectionnel primaire ;
- échange un payload client puis un payload serveur via le contrat
RealtimeConnection; - ferme proprement le sender client et vérifie
Closedcôté serveur ; - ferme proprement le sender serveur et vérifie
Closedcôté client ; - imprime exactement :
game-realtime-webtransport-smoke: PASS
Une deadline globale de 10 secondes empêche le smoke de rester bloqué indéfiniment.
Frontière de dépendances
Le backend WebTransport est désormais consommé par un launcher technique public, ce qui est intentionnel. Il doit toujours rester absent des crates engine et gameplay.
Le graphe inverse attendu peut donc contenir :
game-realtime-webtransport-lib
game-realtime-webtransport-smoke
mais aucune crate engine-v1-*, game-snake-poc ou game-reflex-poc.
Fichiers modifiés
Cargo.toml
README.md
docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md
Nouveaux fichiers :
crates/apps/game-realtime-webtransport-smoke/Cargo.toml
crates/apps/game-realtime-webtransport-smoke/src/main.rs
deltas/0.3.5/alpha.5.md
history/0.3.5/alpha.4.fix.1.md
Validation attendue
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-webtransport-lib --all-targets --all-features
cargo run -p game-realtime-webtransport-smoke
cargo tree -p game-realtime-webtransport-smoke --edges normal
cargo tree -i game-realtime-webtransport-lib --workspace --edges normal
Le smoke doit se terminer avec :
game-realtime-webtransport-smoke: PASS
Après validation
Créer history/0.3.5/alpha.5.md à partir des sorties réellement fournies, puis ouvrir 0.3.5-alpha.6 pour le chemin WASM compilable. Le smoke navigateur/TLS réel reste réservé à alpha.7.