Files
khadhroony-solana-project/deltas/0.2.1/pre.002-fix.001.md

6.0 KiB

Delta 0.2.1-pre.002-fix.001 — nettoyage Clippy et documentation des tests

Base requise

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 :

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 :

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 :

historical == 0

La preuve reste donc explicite sans assertion constante fausse.

Tests d'intégration

Les targets Cargo :

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

deltas/0.2.1/pre.002-fix.001.md

Fichiers modifiés

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 :

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 :

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 :

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.