0.3.4-alpha.5
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md -->
|
||||
<!-- version: 5 -->
|
||||
<!-- version: 6 -->
|
||||
|
||||
# Plan 0.3.4 — transport realtime et baseline WebSocket
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
Plan actif créé pendant `0.3.4-alpha.1` à partir de l'archive taggée `v0.3.3`.
|
||||
|
||||
Les tranches `alpha.1`, `alpha.2` et `alpha.3.fix.1` ont été validées le 2026-09-21. `alpha.3` avait été rejetée avant compilation à cause d'un héritage Cargo invalide de `default-features`; son fix a ensuite validé le backend WebSocket, le round-trip localhost et le graphe sans TLS. La tranche active `alpha.4` ferme maintenant les limites, timeouts, cas négatifs et lifecycle avant consolidation/beta.
|
||||
Les tranches `alpha.1`, `alpha.2`, `alpha.3.fix.1` et `alpha.4` ont été validées le 2026-09-21. `alpha.3` avait été rejetée avant compilation à cause d'un héritage Cargo invalide de `default-features`; son fix a ensuite validé le backend WebSocket, le round-trip localhost et le graphe sans TLS. `alpha.4` a fermé les limites, timeouts, cas négatifs et lifecycle. La revue post-gate a toutefois identifié une preuve encore absente : un smoke runtime exécuté hors harness de test. La tranche active `alpha.5` ajoute donc ce smoke avant toute entrée en beta.
|
||||
|
||||
## Mission
|
||||
|
||||
@@ -366,7 +366,7 @@ Tests d'intégration localhost déterministes avec `127.0.0.1:0` :
|
||||
|
||||
Les tests ne dépendent ni d'Internet, ni d'un serveur externe, ni d'un port fixe.
|
||||
|
||||
Un petit demo/CLI n'est pas prévu par défaut : il sera créé uniquement si les tests publics ne prouvent pas suffisamment le chemin client/server.
|
||||
Un petit launcher de smoke n'était pas prévu par défaut tant que les tests publics semblaient suffire. La revue après validation de `alpha.4` a distingué correctement test automatisé et smoke runtime : `alpha.5` ajoute donc `game-realtime-websocket-smoke` sous `crates/apps/`. Ce binaire reste un harness de validation, pas un produit ni un protocole applicatif.
|
||||
|
||||
## Gates par jalon
|
||||
|
||||
@@ -426,6 +426,21 @@ cargo tree -p game-realtime-websocket-lib --edges normal
|
||||
|
||||
Le test backend doit maintenant couvrir le loopback positif, les invariants de configuration, les mappings de capacité/backpressure et les cinq scénarios négatifs déterministes de `robustness.rs`.
|
||||
|
||||
### `alpha.5`
|
||||
|
||||
Ajouter le smoke runtime public avant promotion de maturité.
|
||||
|
||||
Gates ciblées :
|
||||
|
||||
```bash
|
||||
cargo test -p game-realtime-transport-lib --all-targets --all-features
|
||||
cargo test -p game-realtime-websocket-lib --all-targets --all-features
|
||||
cargo run -p game-realtime-websocket-smoke
|
||||
cargo tree -p game-realtime-websocket-smoke --edges normal
|
||||
```
|
||||
|
||||
Le smoke doit binder `127.0.0.1:0`, connecter un client via l'API publique, échanger un payload binaire dans chaque sens, effectuer un close propre, afficher `game-realtime-websocket-smoke: PASS` et sortir avec le code zéro. Il ne dépend ni d'Internet, ni d'un port fixe, ni d'un harness `#[test]`.
|
||||
|
||||
### Beta
|
||||
|
||||
La beta est le jalon large retenu pour :
|
||||
@@ -482,7 +497,19 @@ Aucune dépendance réseau n'est ajoutée.
|
||||
- lifecycle sans runtime/task backend privé ;
|
||||
- documentation API/backend et audit du graphe.
|
||||
|
||||
Si les gates de cette tranche sont propres, le demo/CLI conditionnel n'apporte plus de preuve supplémentaire : la suite doit privilégier une courte consolidation alpha uniquement si la revue documentaire/API révèle une dette réelle, sinon passer directement à la beta large.
|
||||
La gate `alpha.4` est propre, mais elle ne constitue pas à elle seule un smoke runtime : tous ses scénarios restent exécutés sous le harness de test Cargo.
|
||||
|
||||
### `0.3.4-alpha.5` — smoke runtime end-to-end
|
||||
|
||||
- créer `game-realtime-websocket-smoke` comme launcher minimal sous `crates/apps/` ;
|
||||
- utiliser uniquement les API publiques `game-realtime-websocket-lib` et `game-realtime-transport-lib` ;
|
||||
- binder un listener loopback sur port éphémère et connecter un client réel ;
|
||||
- vérifier client → serveur puis serveur → client ;
|
||||
- initier et observer un close propre ;
|
||||
- borner le smoke global et retourner un code de sortie non nul au moindre défaut ;
|
||||
- ne créer ni protocole session/gameplay, ni serveur externe, ni port fixe.
|
||||
|
||||
`DOC-CRATE-*` est réévalué pour ce launcher : le workflow se résume à une commande Cargo unique et le plan central décrit entièrement sa responsabilité, donc aucun `README.md`/`USAGE.md` local n'est ajouté.
|
||||
|
||||
### `0.3.4-beta.1` — validation large
|
||||
|
||||
@@ -548,4 +575,5 @@ Un split vers une autre version est requis si l'une des conditions suivantes app
|
||||
- les targets tracing transport/WebSocket sont distinctes des futurs domaines session/sync/simulation ;
|
||||
- aucune crate gameplay ou engine ne dépend de `tokio-tungstenite` ;
|
||||
- les audits et tests ciblés sont propres ;
|
||||
- le smoke `cargo run -p game-realtime-websocket-smoke` passe réellement côté utilisateur hors harness de test ;
|
||||
- la documentation décrit ce qui est réellement implémenté et ce qui reste reporté.
|
||||
|
||||
Reference in New Issue
Block a user