Files
games/deltas/0.3.4/alpha.5.md
2026-09-21 18:22:19 +02:00

4.2 KiB

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 :

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 :

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 :

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 à :

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 :

Cargo.toml
README.md
docs/plans/004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md
scripts/audit_distribution_layout.py

Ajoutés :

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

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 :

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.