# Delta `0.2.7-pre.013` — smoke WebSocket live et audit final des dépendances ## Base Base directe validée par l'opérateur : ```text 0.2.7-pre.012-fix.001 Cargo 0.2.7-pre.12.fix.1 ``` Les gates `fmt`, audit Python, `check`, `clippy`, les 309 tests unitaires Transport, 36 tests d'API publique, 24 tests de release completeness, 109 tests unitaires Config et le workspace complet sont verts. ## Signal technique ```text livraison = 0.2.7-pre.013 workspace.package.version = 0.2.7-pre.13 commit = v0.2.7-pre.013 tag = aucun ``` ## Smoke WebSocket Devnet opt-in Un nouveau smoke Transport pur `websocket_devnet_smoke.rs` couvre le chemin live stable minimal : ```text settings programmatiques -> wss://api.devnet.solana.com -> WsSession::connect -> slotSubscribe -> une slotNotification sous timeout 20 s -> slotUnsubscribe via WsSubscription -> WsSession::close ``` Le test est `#[ignore]` par défaut. Il ne lit ni Config ni environnement et n'utilise aucune famille unstable. Les fixtures WebSocket locales restent les gates déterministes du lifecycle, des DTOs et des familles `block`, `slotsUpdates` et `vote`. Un échec lié au réseau, au rate-limit ou à l'indisponibilité Devnet ne constitue pas automatiquement une régression KSP. ## Audit de dépendances Le canari workspace de `ksp-core-lib` verrouille désormais les noms directs de dépendances de Transport : ```text runtime : futures-util, ksp-core-lib, ksp-logging-lib, reqwest, serde, serde_json, tokio, tokio-tungstenite dev : tokio ``` Il complète le firewall existant contre Config, Store, Program et `tracing` direct. L'inspection du graphe résolu doit être faite côté opérateur : ```bash cargo tree -p ksp-onchain-transport-lib cargo tree -p ksp-onchain-transport-lib --duplicates cargo tree --duplicates ``` Les doublons transitifs sont à analyser, pas à supprimer mécaniquement lorsqu'ils résultent de contraintes upstream différentes. ## Documentation `README.md` et `USAGE.md` distinguent désormais les smokes HTTP Transport, WebSocket Transport et le smoke historique Config -> Transport. Le plan et la matrice enregistrent le checkpoint `pre.013`. `ROADMAP.md` et `CHANGELOG.md` restent inchangés pendant cette prerelease. ## Comptages attendus ```text Transport unit tests = 309 Transport public API tests = 36 Transport release completeness = 24 Transport WebSocket live smoke = 1 ignored par défaut Config unit tests = 109 Core workspace dependency tests = 3 ``` ## Validation opérateur ```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 cargo tree -p ksp-onchain-transport-lib cargo tree -p ksp-onchain-transport-lib --duplicates cargo tree --duplicates cargo test -p ksp-onchain-transport-lib --test websocket_devnet_smoke -- --ignored --nocapture ``` Le smoke live peut être qualifié séparément si Devnet est indisponible ; les autres gates restent déterministes. Le sandbox de préparation ne possède pas Cargo/rustc ; les gates Cargo et le smoke live restent à exécuter côté opérateur.