8.0 KiB
Delta 0.2.2-pre.002-fix.001 — nettoyage des helpers RPC préparatoires et Clippy
Base requise
livraison : 0.2.2-pre.002
workspace.package.version = "0.2.2-pre.2"
Le correctif est ouvert après la validation locale communiquée le 2026-08-18. Les tests de pre.002 passent, mais cargo check et Clippy
révèlent que plusieurs helpers privés de sérialisation/décodage ont été compilés trop tôt alors qu'aucun wrapper 0.2.2 ne les consomme encore.
Objectif
Corriger exclusivement les warnings de qualité de pre.002, sans commencer les wrappers Accounts de pre.003, sans modifier les DTOs publics
et sans masquer les lints avec #[allow(dead_code)].
Les catégories observées sont :
dead_code helpers/wire structs préparatoires Accounts/Tokens/Cluster/Common
clippy::assertions_on_constants assert!(false, ...) dans un test Account
clippy::wrong_self_convention 2 serializers de configs Copy prenant &self
Version Cargo
Le correctif modifie du Rust de production/test. Conformément à VER-ID-007 et VER-ID-010 :
0.2.2-pre.2 -> 0.2.2-pre.2.fix.1
Aucune dépendance ni feature Cargo n'est ajoutée ou retirée.
Correction du staging privé
pre.002 doit établir les DTOs/configs publics et les fixtures communes, mais les wrappers qui consommeront réellement les helpers privés sont
répartis sur pre.003 à pre.006.
Les serializers/décodeurs privés et leurs structs wire encore utilisés uniquement par les tests sont donc compilés sous :
#[cfg(test)]
jusqu'à la prerelease qui les active réellement dans un wrapper de production.
Cette correction :
- conserve tous les types, constructeurs, getters, enums et réexports publics introduits par
pre.002; - conserve les fixtures Account/Token/Cluster/Vote ;
- ne rend aucun helper privé artificiellement public ;
- n'ajoute aucun
#[allow(dead_code)]; - évite de porter du code privé mort dans la bibliothèque normale entre deux tranches ;
- impose aux prereleases suivantes de retirer
#[cfg(test)]uniquement sur les helpers qu'elles commencent effectivement à consommer.
Les deux helpers is_empty() qui n'ont aucun consommateur ni test utile à ce stade sont supprimés et seront réintroduits seulement si un wrapper
les nécessite réellement.
Correction Clippy
Configs Copy
Les serializers internes de :
SolanaCommitmentConfig
SolanaContextConfig
prennent désormais self par valeur, ce qui correspond à leur nature Copy et supprime clippy::wrong_self_convention sans modifier la forme JSON.
SolanaContextConfig::to_json_value() reste production-live parce que le canari getBalance de 0.2.1 le consomme déjà.
Assertion constante
Le test account_wire_fixture_preserves_legacy_encoded_and_json_parsed_data remplace le match avec assert!(false, ...) par :
- une assertion
matches!surJsonParsed; - un
if letpour vérifier le contenu.
Aucun panic!() ou unreachable!() explicite n'est introduit.
Complément de tests préparatoires
Des tests unitaires sont ajoutés pour exercer les helpers privés désormais explicitement test-only qui n'étaient pas couverts par pre.002 :
- sérialisation
SolanaLargestAccountsConfig; - décodage
SolanaKeyedAccountetSolanaAccountBalance; - décodage
SolanaTokenAccountBalance; - décodage
SolanaEpochInfo,SolanaEpochSchedule,SolanaSnapshotSlotInfoetSolanaLeaderSchedule; - sérialisation
SolanaVoteAccountsConfig; - décodage
SolanaVoteAccountStatus; - construction test-only de
SolanaRpcResponse<T>.
Les fixtures et invariants clientId, inflationRewardsCommissionBps, uiAmount: null, space: null et Account data restent couverts.
Fichiers ajoutés
deltas/0.2.2/pre.002-fix.001.md
Fichiers modifiés
Cargo.toml
crates/ksp-onchain-transport-lib/src/lib.rs
crates/ksp-onchain-transport-lib/src/rpc_common.rs
crates/ksp-onchain-transport-lib/src/rpc_accounts.rs
crates/ksp-onchain-transport-lib/src/rpc_tokens.rs
crates/ksp-onchain-transport-lib/src/rpc_cluster.rs
crates/ksp-onchain-transport-lib/unit_tests/rpc_common.rs
crates/ksp-onchain-transport-lib/unit_tests/rpc_accounts.rs
crates/ksp-onchain-transport-lib/unit_tests/rpc_tokens.rs
crates/ksp-onchain-transport-lib/unit_tests/rpc_cluster.rs
Fichiers supprimés
Aucun.
Fichiers volontairement inchangés
deltas/0.2.2/pre.002.md
docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md
ROADMAP.md
CHANGELOG.md
crates/ksp-onchain-transport-lib/tests/public_api.rs
crates/ksp-onchain-transport-lib/tests/release_completeness.rs
crates/ksp-onchain-transport-lib/src/rpc_method.rs
crates/ksp-config-lib/**
config/**
Le delta pre.002.md reste une trace historique et n'est pas réécrit.
Validation de pre.002 ayant déclenché le correctif
Les commandes suivantes ont été exécutées par l'utilisateur sur 0.2.2-pre.002 avant création de ce fix :
cargo fmt --all : exécuté
cargo check --workspace : OK, avec 42 warnings dead_code Transport
cargo clippy --workspace --all-targets : OK, avec les warnings dead_code + assertions_on_constants + wrong_self_convention
cargo test -p ksp-onchain-transport-lib : OK
Résultats de tests communiqués :
81 tests unitaires : passés
9 tests public_api : passés
2 tests release_completeness : passés
0 échec
Ces résultats prouvent la fonctionnalité de la base pre.002, mais ne constituent pas une validation du présent fix.
Contrôles statiques effectués pendant la préparation du fix
- aucune occurrence
#[allow(dead_code)]ajoutée ; - aucune occurrence
assert!(falserestante dans les fichiers modifiés ; - les deux serializers de configs
Copyprennentselfpar valeur ; - les helpers privés préparatoires non consommés par la bibliothèque normale sont explicitement
#[cfg(test)]; - les réexports crate-private de support wire sont eux aussi test-only tant qu'aucun wrapper ne les consomme ;
- les helpers test-only identifiés disposent d'un consommateur dans les tests unitaires ;
- aucune méthode RPC
0.2.2n'est ajoutée à la surface typed-complete ; - aucune dépendance/feature/configuration Transport n'est modifiée ;
- headers/version des fichiers modifiés incrémentés ;
pre.002.mdet le plan009restent inchangés.
Validations du correctif non exécutées dans le sandbox
Le sandbox de préparation ne fournit pas cargo, rustc ni rustfmt. Les validations Rust du fix ne sont donc pas déclarées réussies.
Après application, exécuter au minimum :
cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-onchain-transport-lib
Conformément aux règles Rust KSP, cargo test --workspace reste requis au checkpoint de clôture approprié. Aucun cargo tree supplémentaire n'est
requis pour ce fix puisqu'aucune dépendance ni feature n'a changé.
Résultat attendu immédiatement pour les commandes ci-dessus : aucune régression des canaris 0.2.1, aucun warning ayant motivé ce fix et quatre
tests unitaires Transport supplémentaires par rapport à pre.002.
Décisions prises
- corriger la cause des warnings plutôt que les masquer avec un lint allowance ;
- conserver les DTOs et fixtures publics de
pre.002; - considérer les serializers/décodeurs privés non encore consommés comme support de test jusqu'à leur activation réelle ;
- ne pas rendre
serde_json::Valuepublic uniquement pour éviterdead_code; - ne pas commencer les cinq wrappers Accounts dans ce fix ;
- conserver
pre.003comme prochaine tranche fonctionnelle après validation du correctif.
Questions ouvertes
Aucune question bloquante.
Suite
Après validation et commit de 0.2.2-pre.002-fix.001, poursuivre avec 0.2.2-pre.003 pour les cinq wrappers Accounts. Les helpers Account
nécessaires seront alors sortis de #[cfg(test)] au fur et à mesure de leur consommation réelle.