0.3.5-alpha.6

This commit is contained in:
2026-09-22 06:34:31 +02:00
parent bbffb7fa60
commit 0ef5e1a233
12 changed files with 897 additions and 41 deletions

View File

@@ -1,11 +1,11 @@
<!-- file: docs/plans/005-V0_3_5_WEBTRANSPORT_QUIC_POC_PLAN.md -->
<!-- version: 7 -->
<!-- version: 8 -->
# Plan 0.3.5 — POC WebTransport/QUIC et fallback WebSocket
## Statut
Plan actif créé pendant `0.3.5-alpha.1` à partir de l'archive taggée `v0.3.4`, puis réconcilié pour l'implémentation native de `0.3.5-alpha.2`, son correctif de validation `0.3.5-alpha.2.fix.1`, le chemin fiable validé de `0.3.5-alpha.3`, la robustesse validée par `0.3.5-alpha.4.fix.1` et le smoke natif candidat de `0.3.5-alpha.5`.
Plan actif créé pendant `0.3.5-alpha.1` à partir de l'archive taggée `v0.3.4`, puis réconcilié pour l'implémentation native de `0.3.5-alpha.2`, son correctif de validation `0.3.5-alpha.2.fix.1`, le chemin fiable validé de `0.3.5-alpha.3`, la robustesse validée par `0.3.5-alpha.4.fix.1`, le smoke natif validé de `0.3.5-alpha.5` et le chemin client WASM candidat de `0.3.5-alpha.6`.
Le cadrage détaillé et la comparaison des stacks actuelles sont conservés dans `docs/studies/026-V0_3_5_WEBTRANSPORT_QUIC_STACK_AUDIT.md`. Le présent document porte les décisions opérationnelles, le scope, les gates et le forecast vivant de la version.
@@ -461,7 +461,7 @@ La gate utilisateur de `alpha.4` a confirmé fmt, audits, `cargo check`, tous le
### `0.3.5-alpha.5` — smoke natif hors harness
Tranche candidate matérialisée avec :
Tranche validée avec :
- nouvelle app technique `game-realtime-webtransport-smoke` ;
- bind UDP loopback sur port éphémère ;
@@ -473,20 +473,29 @@ Tranche candidate matérialisée avec :
- timeout global du launcher et verdict terminal déterministe `game-realtime-webtransport-smoke: PASS` ;
- aucune nouvelle dépendance externe et aucun couplage engine/gameplay.
Cette tranche reste distincte pour ne pas mélanger robustesse de bibliothèque et preuve runtime publique. La gate doit exécuter le smoke hors harness puis contrôler les graphes direct et inverse : l'inverse de `game-realtime-webtransport-lib` peut désormais contenir le launcher technique, mais aucune crate engine ou gameplay.
Cette tranche reste distincte pour ne pas mélanger robustesse de bibliothèque et preuve runtime publique. La gate utilisateur du 2026-09-21 a confirmé fmt, audits, check workspace, Clippy strict, les sept tests du contrat commun, les vingt tests WebTransport, le smoke hors harness avec verdict `PASS` et les graphes direct/inverse attendus. La preuve est conservée dans `history/0.3.5/alpha.5.md`.
### `0.3.5-alpha.6` — chemin WASM compilable
- activer `web_sys_unstable_apis` uniquement pour `wasm32-unknown-unknown` ;
- implémenter/adapter le client WASM ;
- prouver le build/check WASM ciblé ;
- ne pas modifier Snake ou Reflex ;
- documenter les différences native/WASM réellement rencontrées.
Tranche candidate matérialisée avec :
Si la famille `web-transport` échoue ici, évaluer `wtransport` serveur + API navigateur directe avant de conclure.
- `web-transport-wasm 0.6.0` comme dépendance exclusivement `wasm32` ;
- `web_sys_unstable_apis` ciblé par Cargo uniquement sur `wasm32-unknown-unknown`, y compris rustdoc ;
- dépendances Quinn/Tokio/rcgen du backend déplacées dans la branche native afin que le build WASM ne tire pas la stack serveur ;
- même surface client publique qu'en natif pour hash SHA-256, config endpoint, `connect`, session et stream primaire ;
- pin navigateur transmis via `serverCertificateHashes` ;
- même framing fiable `u32` big-endian + payload et même limite avant allocation/écriture ;
- `RealtimeConnection`, sender et receiver adaptés à des types navigateur `!Send`, ce que le contrat commun autorise déjà ;
- FIN, reset/STOP, cancellation de send terminale et réception incrémentale conservés sur le chemin navigateur ;
- aucun changement Snake/Reflex et aucun host frontend.
Différence explicitement ouverte pour `alpha.7` : les deadlines `WebTransportConfig` sont validées côté WASM mais aucun timer navigateur n'est encore appliqué. Le wrapper amont conserve les opérations Web API abandonnées de manière cancel-safe ; la preuve runtime doit fixer la politique de timer avant de déclarer la parité comportementale.
La gate de cette tranche doit prouver le host natif inchangé puis `cargo check`, Clippy `--lib` et build réel de `game-realtime-webtransport-lib` sur `wasm32-unknown-unknown`. Si la famille `web-transport` échoue à cette gate, évaluer `wtransport` serveur + API navigateur directe avant de conclure.
### `0.3.5-alpha.7` — interop navigateur et TLS local
- fixer puis prouver la politique de deadlines navigateur réellement nécessaire ;
- host technique minimal si nécessaire ;
- navigateur récent -> serveur Rust WebTransport ;
- hash certificat W3C ;