Files
games/deltas/0.3.4/alpha.2.md
2026-09-21 17:21:25 +02:00

4.4 KiB

Delta 0.3.4-alpha.2

Base

Base : 0.3.4-alpha.1 validée par l'utilisateur le 2026-09-21.

Cette tranche matérialise uniquement la frontière transport-neutral prévue par le plan 0.3.4. Elle n'ajoute encore ni Tokio, ni Tungstenite, ni socket, ni protocole de session/gameplay.

Historique fermé

Ajout de :

history/0.3.4/alpha.1.md

L'entrée enregistre les gates effectivement fournies par l'utilisateur pour alpha.1, notamment le rebuild complet après cargo clean, les audits propres, cargo check --workspace et Clippy workspace strict.

Nouvelle crate game-realtime-transport-lib

Ajout de :

crates/common/game-realtime-transport-lib/Cargo.toml
crates/common/game-realtime-transport-lib/src/lib.rs
crates/common/game-realtime-transport-lib/src/connection.rs
crates/common/game-realtime-transport-lib/src/error.rs
crates/common/game-realtime-transport-lib/src/message.rs
crates/common/game-realtime-transport-lib/unit_tests/contract.rs

La crate appartient à crates/common/ car le contrat realtime est indépendant d'une génération de moteur et d'un backend réseau concret.

Elle ne possède aucune dépendance tierce.

Contrat public

Le payload transport est TransportMessage, un buffer binaire possédé sans sémantique gameplay ni codec.

TransportReceive distingue explicitement :

Message(TransportMessage)
Closed

Une fermeture distante propre n'est donc pas confondue avec une erreur I/O.

Les contrats sont :

RealtimeConnection
RealtimeSender
RealtimeReceiver

RealtimeConnection::split() produit les deux moitiés indépendantes. Les opérations send, close et receive restent async sans imposer un runtime particulier.

L'implémentation du contrat utilise des futures associées GAT. Cette forme évite une allocation Box<dyn Future>, conserve le dispatch statique et n'impose pas de borne Send au niveau transport-neutral. Un backend natif reste libre de fournir des futures Send; un backend navigateur/WASM futur n'est pas exclu artificiellement.

Erreurs

TransportError conserve une catégorie stable TransportErrorKind et un détail diagnostic backend-neutral.

Les catégories de baseline sont :

InvalidConfiguration
Connect
Bind
Accept
Timeout
MessageTooLarge
Backpressure
Closed
Io
Protocol
Aborted

Les futurs types d'erreur Tungstenite ne sont pas exposés par cette crate.

Tests

Les tests unitaires couvrent :

  • conservation du payload binaire possédé, y compris le payload vide ;
  • distinction message/fermeture propre ;
  • split sender/receiver ;
  • futures associées de send/receive/close avec une implémentation test sans runtime ;
  • catégorie, détail et libellés des erreurs.

Aucun test réseau n'existe dans cette tranche puisqu'aucun backend réseau n'existe encore.

Documentation locale

Aucun README.md ni USAGE.md local n'est ajouté pendant alpha.2. La crate est volontairement petite, son contrat est documenté par rustdoc et le plan central couvre encore ses frontières ; créer un guide local maintenant dupliquerait ces sources sans valeur durable supplémentaire. Ce choix sera réévalué pendant la consolidation finale conformément à DOC-CRATE-001.

Fichiers existants modifiés

Cargo.toml
README.md
docs/plans/004-V0_3_4_REALTIME_TRANSPORT_WEBSOCKET_PLAN.md

Cargo.toml ajoute le membre workspace et passe la version technique à 0.3.4-alpha.2.

Le README racine annonce la candidate active. Le plan enregistre la validation de alpha.1 et ferme le choix des futures associées GAT pour le contrat commun.

ROADMAP.md et CHANGELOG.md ne changent pas : le scope macroscopique de 0.3.4 est inchangé et une alpha n'ajoute normalement pas d'entrée de changelog.

Validation attendue

Appliquer d'abord le formatage canonique, puis exécuter :

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

Aucune gate Android, Web/Tauri ou réseau n'est requise : cette tranche n'affecte ni leurs contrats ni un backend socket.