# Delta `0.2.2-pre.002-fix.002` — restauration du décodeur de contexte utilisé par `getBalance` ## Base requise ```text livraison : 0.2.2-pre.002-fix.001 workspace.package.version = "0.2.2-pre.2.fix.1" ``` Le correctif est ouvert après validation locale communiquée le 2026-08-18. `pre.002-fix.001` a correctement réduit les warnings préparatoires, mais a classé à tort `SolanaRpcContext::decode_wire` comme helper exclusivement test alors que le canari de production `getBalance`, acquis en `0.2.1`, l'utilise déjà dans `rpc_canary.rs`. La conséquence est une régression de compilation `E0599` sur `cargo check`, `cargo clippy` et `cargo test`. ## Objectif Restaurer uniquement le chemin de décodage de contexte déjà nécessaire au runtime du canari `getBalance`, sans annuler le nettoyage ciblé de `pre.002-fix.001`, sans commencer les wrappers Accounts de `pre.003` et sans élargir l'API publique. ## Version Cargo Le correctif modifie du Rust de production. Conformément à `VER-ID-007` et `VER-ID-010` : ```text 0.2.2-pre.2.fix.1 -> 0.2.2-pre.2.fix.2 ``` Aucune dépendance ni feature Cargo n'est ajoutée ou retirée. ## Correction Les trois éléments nécessaires au chemin production `rpc_canary::get_balance` redeviennent compilés hors `#[cfg(test)]` : ```text SolanaRpcContext::decode_wire rpc_common::decode_wire_json WireRpcContext ``` `SolanaRpcContext::decode_wire` appelle désormais directement le helper privé de son module au lieu de dépendre du réexport crate-private `crate::decode_wire_json`, qui reste volontairement réservé aux tests dans `lib.rs` tant qu'aucun autre module de production ne le consomme. Tous les autres serializers/décodeurs préparatoires rendus test-only par `pre.002-fix.001` restent inchangés. Ce fix ne réintroduit donc pas les warnings `dead_code` que `fix.001` cherchait à supprimer. ## Fichiers ajoutés ```text deltas/0.2.2/pre.002-fix.002.md ``` ## Fichiers modifiés ```text Cargo.toml crates/ksp-onchain-transport-lib/src/rpc_common.rs ``` ## Fichiers supprimés Aucun. ## Fichiers volontairement inchangés ```text deltas/0.2.2/pre.002.md deltas/0.2.2/pre.002-fix.001.md docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md ROADMAP.md CHANGELOG.md crates/ksp-onchain-transport-lib/src/lib.rs crates/ksp-onchain-transport-lib/src/rpc_canary.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/** crates/ksp-onchain-transport-lib/tests/** crates/ksp-config-lib/** config/** ``` Les deltas déjà publiés restent des traces historiques et ne sont pas réécrits. ## Validation ayant déclenché le correctif Les commandes suivantes ont été exécutées par l'utilisateur sur `0.2.2-pre.002-fix.001` : ```text cargo fmt --all : exécuté cargo check --workspace : ÉCHEC E0599 cargo clippy --workspace --all-targets : ÉCHEC E0599 cargo test -p ksp-onchain-transport-lib : ÉCHEC E0599 ``` Erreur commune : ```text no function or associated item named `decode_wire` found for struct `SolanaRpcContext` rpc_canary.rs:194:48 ``` ## Contrôles statiques effectués pendant la préparation du fix - `SolanaRpcContext::decode_wire` n'est plus conditionné par `#[cfg(test)]` ; - `decode_wire_json` et `WireRpcContext`, ses dépendances directes, sont également production-live ; - l'appel interne n'utilise plus le réexport test-only `crate::decode_wire_json` ; - aucun autre `#[cfg(test)]` introduit par `pre.002-fix.001` n'est retiré ; - aucun `#[allow(dead_code)]` n'est ajouté ; - aucune API publique, méthode RPC, dépendance, feature ou configuration n'est modifiée ; - `workspace.package.version` vaut `0.2.2-pre.2.fix.2` ; - les deltas `pre.002.md` et `pre.002-fix.001.md` restent 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 présent fix ne sont donc pas déclarées réussies. Après application, exécuter : ```bash cargo fmt --all cargo check --workspace cargo clippy --workspace --all-targets cargo test -p ksp-onchain-transport-lib ``` Le résultat attendu est le retour à une compilation réussie du canari `getBalance`, sans réapparition des warnings ciblés par `pre.002-fix.001`. ## Décisions prises - traiter `SolanaRpcContext::decode_wire` comme code de production parce qu'un consommateur runtime existe déjà ; - conserver test-only uniquement les helpers qui n'ont réellement aucun consommateur production à cette étape ; - ne pas modifier `rpc_canary.rs`, dont l'utilisation du décodeur est correcte ; - ne pas élargir `lib.rs` avec un nouveau réexport crate-private production inutile ; - ne pas commencer `pre.003` avant validation de ce second fix. ## Questions ouvertes Aucune question bloquante. ## Suite Après validation et commit de `0.2.2-pre.002-fix.002`, poursuivre avec `0.2.2-pre.003` pour les cinq wrappers Accounts.