0.3.4-alpha.2
This commit is contained in:
133
deltas/0.3.4/alpha.2.md
Normal file
133
deltas/0.3.4/alpha.2.md
Normal file
@@ -0,0 +1,133 @@
|
||||
<!-- file: deltas/0.3.4/alpha.2.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# 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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
Message(TransportMessage)
|
||||
Closed
|
||||
```
|
||||
|
||||
Une fermeture distante propre n'est donc pas confondue avec une erreur I/O.
|
||||
|
||||
Les contrats sont :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Aucune gate Android, Web/Tauri ou réseau n'est requise : cette tranche n'affecte ni leurs contrats ni un backend socket.
|
||||
Reference in New Issue
Block a user