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

4.3 KiB

Delta v0.2.1-pre.003-fix.001

Base

Base attendue :

v0.2.1-pre.003

Version Cargo cible :

0.2.1-pre.3.fix.1

Objectif

Corriger exclusivement les écarts révélés par la validation locale de pre.003, sans modifier le contrat fonctionnel du client/pool HTTP ni la planification de 0.2.1 :

  • satisfaire la règle workspace clippy::implicit-return dans trois closures de pool.rs ;
  • corriger le test disabled_role_is_excluded_before_priority_selection afin qu'il construise des settings valides tout en vérifiant réellement qu'un rôle disabled n'est pas sélectionnable ;
  • conserver inchangés la stratégie priority + round-robin, le fallback, les snapshots, la feature TLS reqwest/rustls et les frontières de pre.003.

ROADMAP.md n'est pas modifié par ce fix : le détail des corrections appartient au delta et ne constitue pas un changement de roadmap.

Validation ayant déclenché le fix

Après application de pre.003, les commandes exécutées localement par le user ont donné :

cargo fmt --all                         : exécuté
cargo check --workspace                : OK
cargo clippy --workspace --all-targets : échec, 3 x clippy::implicit-return
cargo test -p ksp-onchain-transport-lib : échec, 46 passés / 1 échoué
cargo test --workspace                  : échec sur le même test Transport
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é

Les trois erreurs Clippy concernaient uniquement des closures dans pool.rs :

filter(...)
sort_by_key(...)
take_while(...)

Le test en échec construisait un endpoint enabled = true dont l'unique rôle était enabled = false. Cette fixture contredisait la validation Transport déjà définie, qui exige qu'un endpoint activé expose au moins un rôle activé.

Corrections

pool.rs

Les trois closures signalées utilisent maintenant un return explicite, conformément à la configuration Clippy KSP :

filter(|endpoint| return ...)
sort_by_key(|candidate| return ...)
take_while(|candidate| return ...)

Aucune sémantique de sélection n'est modifiée.

Test du rôle disabled

La fixture de test conserve désormais sur le premier endpoint :

  • un rôle default disabled, de priorité 1 ;
  • un rôle maintenance enabled, également valide pour l'endpoint mais ne correspondant pas au rôle demandé.

Le pool est donc valide à la construction. Lors d'une sélection sur le rôle default, le rôle disabled du premier endpoint doit être ignoré et l'endpoint fallback reste sélectionné.

Cette forme teste réellement le comportement annoncé sans contourner l'invariant de validation des settings.

Version Cargo

Le fix touche du Rust de production et de test :

0.2.1-pre.3 -> 0.2.1-pre.3.fix.1

Toutes les crates membres continuent d'hériter version.workspace = true.

Graphe de dépendances

Aucune dépendance ni feature n'est ajoutée, retirée ou modifiée par ce fix.

Les cargo tree exécutés sur pre.003 montrent notamment :

  • reqwest 0.13.4 avec la feature rustls attendue ;
  • aucun retour de dépendance Transport vers Config/Store/Program ;
  • cargo tree -d ne signale que syn 2.x / 3.x, déjà identifié comme duplication transitive de proc-macros et ne nécessitant pas de modification KSP.

Il n'est donc pas nécessaire de répéter les quatre cargo tree pour ce correctif.

Fichiers ajoutés

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

Fichiers modifiés

Cargo.toml
crates/ksp-onchain-transport-lib/src/pool.rs
crates/ksp-onchain-transport-lib/unit_tests/pool.rs

Fichiers supprimés

Aucun.

Validation du fix

Le sandbox de préparation ne dispose pas de cargo/rustc. Les validations Rust ne sont donc pas déclarées réussies ici.

Après application du delta :

cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-onchain-transport-lib
cargo test --workspace

Les commandes cargo tree n'ont pas à être répétées puisque le graphe de dépendances est inchangé.