80 lines
3.1 KiB
Markdown
80 lines
3.1 KiB
Markdown
<!-- file: deltas/0.2.7/pre.004-fix.001.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta `0.2.7-pre.004-fix.001` — conformité Clippy du runtime WebSocket
|
|
|
|
## 1. Objet
|
|
|
|
Ce correctif ferme les écarts de compilation stricte détectés par la validation opérateur de `0.2.7-pre.004` sans modifier la surface fonctionnelle WebSocket, les dépendances ni l'architecture de session.
|
|
|
|
Comme le correctif modifie du code Rust, le signal technique Cargo est synchronisé avec l'identité de livraison conformément aux règles KSP :
|
|
|
|
```text
|
|
livraison = 0.2.7-pre.004-fix.001
|
|
workspace.package.version = 0.2.7-pre.4.fix.1
|
|
commit = v0.2.7-pre.004-fix.001
|
|
```
|
|
|
|
Aucun tag prerelease.
|
|
|
|
## 2. Écarts détectés sur `pre.004`
|
|
|
|
La validation opérateur a confirmé :
|
|
|
|
- `cargo fmt --all` : OK ;
|
|
- `scripts/audit_rust_workspace_rules.py` : clean ;
|
|
- `cargo check --workspace` : compilation réussie mais un warning `unreachable_code` dans `ws_session.rs` ;
|
|
- `cargo clippy --workspace --all-targets` : échec sur trois violations `clippy::implicit_return` plus le warning `unreachable_code` ;
|
|
- `cargo test --workspace` : tests fonctionnels verts, dont les cinq nouveaux canaris WebSocket de `pre.004`.
|
|
|
|
Le problème est donc limité à la conformité aux règles Rust strictes du workspace et non au comportement couvert par les tests.
|
|
|
|
## 3. Corrections `ws_session.rs`
|
|
|
|
Le runtime WebSocket est conservé fonctionnellement à l'identique.
|
|
|
|
Les corrections sont :
|
|
|
|
- `handle_session_command` n'utilise plus `return match ...` lorsque toutes les branches divergent déjà par des `return` explicites ; cela supprime l'expression inatteignable signalée par Rust ;
|
|
- la collecte des requêtes JSON-RPC expirées n'utilise plus une closure `filter_map` à retours implicites ; une boucle explicite construit désormais la liste des identifiants expirés ;
|
|
- la closure passée à `AtomicU64::fetch_update` retourne explicitement `current.checked_add(1)` afin de respecter `clippy::implicit_return` ;
|
|
- le header de version de `ws_session.rs` passe de `1` à `2`.
|
|
|
|
Aucun changement n'est apporté :
|
|
|
|
- à `WsSession` ou à sa surface publique ;
|
|
- aux états de lifecycle ;
|
|
- aux limites de message/frame/write buffer ;
|
|
- au pending map et aux timeouts ;
|
|
- aux dépendances `tokio-tungstenite` / `futures-util` ;
|
|
- au firewall de dépendances ;
|
|
- au tracing : toutes les émissions restent exclusivement via `ksp-logging-lib` et `TRACING_TARGET = "ksp-onchain-transport-lib"`.
|
|
|
|
## 4. Version Cargo
|
|
|
|
Le `Cargo.toml` racine passe à :
|
|
|
|
```toml
|
|
[workspace.package]
|
|
version = "0.2.7-pre.4.fix.1"
|
|
```
|
|
|
|
Aucune autre entrée Cargo n'est modifiée.
|
|
|
|
## 5. Validation attendue
|
|
|
|
```bash
|
|
cargo fmt --all
|
|
python3 scripts/audit_rust_workspace_rules.py
|
|
cargo check --workspace
|
|
cargo clippy --workspace --all-targets
|
|
cargo test -p ksp-onchain-transport-lib
|
|
cargo test --workspace
|
|
```
|
|
|
|
Le smoke Devnet reste opt-in et n'est pas requis pour ce correctif.
|
|
|
|
## 6. Suite
|
|
|
|
Si ce checkpoint est vert, `0.2.7-pre.004` est considéré clos via `pre.004-fix.001` et la série peut poursuivre avec `0.2.7-pre.005` : limites adversariales, control frames, cancellation, close et shutdown borné.
|