# Delta 0.3.4-alpha.5 ## Base Base directe : `0.3.4-alpha.4`, validée par l'utilisateur le 2026-09-21. La gate `alpha.4` est entièrement propre, mais la revue post-validation a identifié une omission de processus : les preuves runtime réseau restent sous le harness de test Cargo. Cette tranche ajoute le smoke réellement exécutable avant toute promotion en beta. ## Historique du jalon précédent Ajout de : ```text history/0.3.4/alpha.4.md ``` L'historique enregistre les audits propres, check/Clippy propres, sept tests transport, onze tests WebSocket/robustesse et le graphe de dépendances sans TLS fournis par l'utilisateur. ## Launcher de smoke runtime Ajout de la crate binaire : ```text crates/apps/game-realtime-websocket-smoke ``` Ce launcher n'introduit aucune logique session/gameplay et n'ajoute aucune dépendance tierce nouvelle. Il consomme uniquement : - `game-realtime-websocket-lib` ; - `game-realtime-transport-lib` ; - le logging commun ; - Tokio pour posséder le runtime du processus de smoke. Le backend reste donc conforme à la décision d'ownership : `game-realtime-websocket-lib` ne crée toujours ni runtime ni thread privé. ## Scénario fumé La commande : ```bash cargo run -p game-realtime-websocket-smoke ``` exécute hors harness `#[test]` le scénario suivant : 1. initialise le tracing applicatif commun ; 2. bind un listener WebSocket sur `127.0.0.1:0` ; 3. construit l'endpoint `ws://` à partir du port réellement alloué ; 4. accepte un serveur et connecte un client via les API publiques ; 5. envoie un payload binaire client → serveur et vérifie son contenu ; 6. envoie un payload binaire serveur → client et vérifie son contenu ; 7. initie un close propre côté client ; 8. vérifie que le serveur observe `TransportReceive::Closed` ; 9. affiche `game-realtime-websocket-smoke: PASS` et sort avec le code zéro. Une deadline globale de cinq secondes empêche le smoke de rester bloqué en cas de régression. Toute erreur de bind/connect/send/receive/close, payload inattendu ou timeout produit un code de sortie non nul. Le smoke ne dépend ni d'Internet, ni d'un service externe, ni d'un port fixe. ## Documentation locale `DOC-CRATE-*` est réévalué pour le nouveau launcher. Aucun `README.md` ou `USAGE.md` local n'est ajouté : le binaire n'a aucune configuration, aucun argument et un unique workflow opérateur (`cargo run -p game-realtime-websocket-smoke`), entièrement documenté par le plan actif et le présent delta. ## Plan et version L'audit de distribution exige désormais aussi la présence du manifeste du launcher de smoke afin que cette preuve runtime ne puisse pas disparaître silencieusement d'une archive future. Le workspace passe à : ```text 0.3.4-alpha.5 ``` Le plan `0.3.4` est corrigé pour distinguer explicitement les tests automatisés du smoke runtime et rendre ce dernier obligatoire avant l'entrée en beta. `CHANGELOG.md` et `ROADMAP.md` restent inchangés : aucun scope macro ou jalon RC/stable n'est modifié. ## Fichiers Modifiés : ```text Cargo.toml README.md docs/plans/004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md scripts/audit_distribution_layout.py ``` Ajoutés : ```text crates/apps/game-realtime-websocket-smoke/Cargo.toml crates/apps/game-realtime-websocket-smoke/src/main.rs history/0.3.4/alpha.4.md deltas/0.3.4/alpha.5.md ``` ## 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 run -p game-realtime-websocket-smoke cargo tree -p game-realtime-websocket-smoke --edges normal ``` La validation attendue du smoke est explicitement : ```text game-realtime-websocket-smoke: PASS ``` avec code de sortie zéro. La compilation, les tests et le smoke restent exécutés côté utilisateur conformément à `CMD-BUILD-005`.