Files
games/deltas/0.3.5/alpha.5.md
2026-09-22 06:17:39 +02:00

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 :

  1. initialise le tracing commun ;
  2. génère une identité TLS loopback ECDSA P-256 courte durée en mémoire ;
  3. dérive le hash SHA-256 exact exposé par cette identité ;
  4. bind le listener WebTransport sur 127.0.0.1:0 ;
  5. construit le client https://<adresse>/smoke avec ce hash pin ;
  6. établit simultanément les sessions client et serveur ;
  7. ouvre/accepte le stream bidirectionnel primaire ;
  8. échange un payload client puis un payload serveur via le contrat RealtimeConnection ;
  9. ferme proprement le sender client et vérifie Closed côté serveur ;
  10. ferme proprement le sender serveur et vérifie Closed côté client ;
  11. 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.