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-returndans trois closures depool.rs; - corriger le test
disabled_role_is_excluded_before_priority_selectionafin 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/rustlset les frontières depre.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
defaultdisabled, de priorité 1 ; - un rôle
maintenanceenabled, é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.4avec la featurerustlsattendue ;- aucun retour de dépendance Transport vers Config/Store/Program ;
cargo tree -dne signale quesyn 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é.