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

155 lines
5.3 KiB
Markdown

<!-- file: deltas/0.2.2/pre.003-fix.001.md -->
<!-- version: 1 -->
# Delta `0.2.2-pre.003-fix.001` — activation production des helpers wire Accounts partagés
## Base requise
```text
livraison : 0.2.2-pre.003
workspace.package.version = "0.2.2-pre.3"
```
Le correctif est ouvert après validation locale communiquée le 2026-08-18. `pre.003` active en production les cinq wrappers Accounts, mais leurs
chemins de décodage utilisent `crate::decode_wire_json` et `crate::parse_wire_pubkey` alors que les deux réexports crate-private sont restés
conditionnés par `#[cfg(test)]` dans `lib.rs` depuis le nettoyage préparatoire de `pre.002-fix.001`.
La conséquence est une régression de compilation `E0425` sur `cargo check`, `cargo clippy` et `cargo test`.
## Objectif
Rendre production-live uniquement les deux réexports crate-private désormais réellement consommés par les wrappers Accounts, sans modifier leur
visibilité externe, sans changer les contrats publics `pre.003`, sans réécrire le delta historique `pre.003.md` et sans commencer la famille
Tokens de `pre.004`.
## Version Cargo
Le correctif modifie du Rust de production. Conformément à `VER-ID-007` et `VER-ID-010` :
```text
0.2.2-pre.3 -> 0.2.2-pre.3.fix.1
```
Aucune dépendance ni feature Cargo n'est ajoutée ou retirée.
## Correction
Dans `crates/ksp-onchain-transport-lib/src/lib.rs`, les deux réexports internes suivants ne sont plus conditionnés par `#[cfg(test)]` :
```text
pub(crate) use self::rpc_common::decode_wire_json;
pub(crate) use self::rpc_common::parse_wire_pubkey;
```
Leurs commentaires sont ajustés pour décrire leur rôle réel dans les adapters RPC typés, et non plus uniquement dans les tests préparatoires.
La visibilité reste strictement `pub(crate)` :
- aucune nouvelle API publique externe n'est créée ;
- `rpc_common` reste propriétaire des implémentations ;
- les wrappers Accounts peuvent continuer à utiliser la façade interne `crate::...` ;
- aucun callsite Accounts n'est modifié ;
- aucun `#[allow(...)]` n'est ajouté.
## Fichiers ajoutés
```text
deltas/0.2.2/pre.003-fix.001.md
```
## Fichiers modifiés
```text
Cargo.toml
crates/ksp-onchain-transport-lib/src/lib.rs
```
## Fichiers supprimés
Aucun.
## Fichiers volontairement inchangés
```text
deltas/0.2.2/pre.003.md
deltas/0.2.2/pre.002-fix.002.md
docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md
ROADMAP.md
CHANGELOG.md
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/**
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.003` :
```text
cargo fmt --all : exécuté
cargo check --workspace : ÉCHEC E0425
cargo clippy --workspace --all-targets : ÉCHEC E0425
cargo test -p ksp-onchain-transport-lib : ÉCHEC E0425
```
Les erreurs concernent douze usages production dans `rpc_accounts.rs`. Les deux symboles absents sont :
```text
crate::decode_wire_json
crate::parse_wire_pubkey
```
Le compilateur confirme que leurs réexports existent dans `lib.rs`, mais sont configurés hors build normal par `#[cfg(test)]`.
## Contrôles statiques effectués pendant la préparation du fix
- `decode_wire_json` reste défini production-live dans `rpc_common.rs` ;
- `parse_wire_pubkey` reste défini production-live dans `rpc_common.rs` ;
- seuls leurs deux réexports crate-private perdent `#[cfg(test)]` ;
- leur visibilité reste `pub(crate)` ;
- les douze callsites `rpc_accounts.rs` restent inchangés ;
- aucun `#[allow(dead_code)]` ou autre suppression de lint n'est ajouté ;
- aucun wrapper Token/Cluster supplémentaire n'est activé ;
- aucune dépendance, feature ou configuration n'est modifiée ;
- `workspace.package.version` vaut `0.2.2-pre.3.fix.1` ;
- le delta `pre.003.md` reste inchangé.
## Validations du correctif non exécutées dans le sandbox
Le sandbox de préparation ne fournit pas la toolchain Cargo utilisée par le checkout opérateur. 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 une compilation normale des cinq wrappers Accounts, sans les `E0425` signalées et sans nouveau warning.
## Décisions prises
- promouvoir les deux réexports internes parce qu'ils ont maintenant des consommateurs production réels ;
- conserver `pub(crate)` plutôt que d'élargir l'API publique ;
- ne pas modifier les douze callsites Accounts alors que leur chemin via la façade interne crate est cohérent ;
- ne pas réintroduire de gating test sur des helpers consommés au runtime ;
- ne pas commencer `pre.004` avant validation de ce fix.
## Questions ouvertes
Aucune question bloquante.
## Suite
Après validation et commit de `0.2.2-pre.003-fix.001`, clôturer `pre.003` puis poursuivre avec `0.2.2-pre.004` pour les cinq wrappers Tokens.