# Delta `0.2.1-pre.002-fix.001` — nettoyage Clippy et documentation des tests ## Base requise ```text release : 0.2.1 prerelease corrigée : pre.002 identifiant de commit attendu : v0.2.1-pre.002-fix.001 workspace.package.version : 0.2.1-pre.2.fix.1 base : v0.2.1-pre.002 ``` Le correctif est ouvert à partir de la validation locale transmise après application de `pre.002`. ## Objectif Corriger exclusivement les warnings révélés par `cargo clippy --workspace --all-targets` et `cargo test`, sans modifier le périmètre fonctionnel ni les contrats publics introduits par `pre.002` : - supprimer trois usages de `assert!(false, ...)` signalés par `clippy::assertions_on_constants` dans les tests unitaires ; - appliquer les deux simplifications `clippy::collapsible_if` dans la validation des settings ; - documenter les deux crates de tests d'intégration afin de satisfaire `missing_docs` ; - conserver inchangés le registre 52 current + 14 historiques, les settings publics, les envelopes JSON-RPC, les codes d'erreur, les descriptors et le firewall de dépendances. ## Version Cargo Le correctif touche du Rust de production et de test. Conformément à `VER-ID-007` et `VER-ID-010` : ```text 0.2.1-pre.2 -> 0.2.1-pre.2.fix.1 ``` Toutes les crates membres continuent d'hériter `version.workspace = true`. ## Corrections Rust ### Validation des settings Les deux validations imbriquées suivantes sont exprimées sous forme de let-chain Rust 2024 : ```text max_idle_connections_per_host = Some(0) pause_after_rate_limit = Some(Duration::ZERO) ``` La sémantique reste strictement identique : les valeurs nulles configurées restent rejetées avec `ERROR_CODE_INVALID_SETTINGS`. ### Tests JSON-RPC Les tests qui validaient la variante attendue avec un `match` et `assert!(false, ...)` utilisent désormais : 1. une assertion `matches!` sur la variante attendue ; 2. un `if let` pour vérifier le payload de cette variante. Aucun `panic!`/`unreachable!` explicite n'est introduit. ### Test de matrice de couverture Le cas `HttpRpcCoverageRelease::Historical` rencontré dans `current_http_rpc_methods()` est désormais comptabilisé dans un compteur local puis vérifié avec : ```text historical == 0 ``` La preuve reste donc explicite sans assertion constante fausse. ### Tests d'intégration Les targets Cargo : ```text tests/public_api.rs tests/dependency_boundary.rs ``` possèdent maintenant une documentation de crate `//!`, ce qui satisfait le lint workspace `missing_docs` sans masquer le warning global. ## Graphe de dépendances Les quatre commandes `cargo tree` ont été exécutées localement sur `pre.002` avant ce fix. Constats : - aucune dépendance directe interdite Transport -> Config/Store/Program/tracing n'apparaît ; - `reqwest 0.13.4` reste la dépendance HTTP retenue par `pre.002` ; - `cargo tree -d` ne rapporte comme duplication que `syn 2.0.119` / `syn 3.0.3`, issue des chaînes proc-macro/ICU/Serde et ne justifiant pas une modification du graphe KSP dans ce correctif ; - aucune dépendance n'est ajoutée ou retirée par `fix.001`. ## Fichiers ajoutés ```text deltas/0.2.1/pre.002-fix.001.md ``` ## Fichiers modifiés ```text Cargo.toml ROADMAP.md crates/ksp-onchain-transport-lib/src/settings.rs crates/ksp-onchain-transport-lib/unit_tests/json_rpc.rs crates/ksp-onchain-transport-lib/unit_tests/rpc_method.rs crates/ksp-onchain-transport-lib/tests/dependency_boundary.rs crates/ksp-onchain-transport-lib/tests/public_api.rs ``` ## Fichiers supprimés Aucun. ## Validation de `pre.002` ayant déclenché le correctif Les commandes suivantes ont été exécutées par le user sur `v0.2.1-pre.002` avant création du fix : ```text cargo fmt --all : exécuté cargo check --workspace : OK cargo clippy --workspace --all-targets : terminé avec warnings cargo test -p ksp-onchain-transport-lib : OK, 40 tests passés cargo test --workspace : OK ; 1 test diagnostic ignoré comme prévu cargo tree -p ksp-onchain-transport-lib : exécuté cargo tree -p ksp-onchain-transport-lib -d : exécuté cargo tree -p ksp-onchain-transport-lib -e features : exécuté cargo tree -p ksp-onchain-transport-lib -e normal : exécuté ``` Warnings observés et ciblés par ce fix : ```text 3 x clippy::assertions_on_constants 2 x clippy::collapsible_if 2 x missing documentation for integration-test crate ``` ## Validations du correctif Le sandbox de préparation ne possède pas `cargo`, `rustc` ni `rustfmt`. Les validations Rust du correctif ne peuvent donc pas y être exécutées et ne sont pas déclarées réussies. Après application du delta, exécuter dans cet ordre : ```bash cargo fmt --all cargo check --workspace cargo clippy --workspace --all-targets cargo test -p ksp-onchain-transport-lib cargo test --workspace ``` Les quatre `cargo tree` ne sont pas obligatoires à répéter pour ce fix puisqu'aucune dépendance n'a changé. Ils peuvent être relancés si une vérification de non-régression du graphe est souhaitée. ## Contrôles statiques effectués pendant la préparation - aucune occurrence restante de `assert!(false` dans la crate Transport ; - les deux blocs signalés `collapsible_if` ont été remplacés ; - les deux tests d'intégration possèdent une rustdoc de crate ; - les headers/version des fichiers modifiés ont été incrémentés ; - `pre.002.md` n'est pas modifié ; - le périmètre public de `pre.002` reste inchangé. ## Décisions prises - ne pas masquer les lints par `#[allow(...)]` ; corriger leur cause ; - ne pas remplacer `assert!(false)` par `panic!()` ou `unreachable!()` ; - ne pas modifier le graphe de dépendances pour le seul doublon `syn 2/3` ; - conserver ce travail sous un vrai `pre.002-fix.001`, conformément à l'historique Git KSP. ## Questions ouvertes Aucune pour ce correctif. Après validation et commit, `0.2.1` peut reprendre avec la prerelease suivante prévue par le plan `008`.