# Delta `0.2.4-pre.002-fix.001` — suppression du code interne prématurément actif ## Base requise Livraison précédente : ```text 0.2.4-pre.002 workspace.package.version = "0.2.4-pre.2" ``` Ce fix corrige uniquement les warnings `dead_code` introduits par `pre.002` dans les nouveaux modules Blocks/Economics. Il ne redéfinit pas le périmètre fonctionnel de la prerelease et ne modifie ni les DTOs publics, ni les fixtures, ni les tests, ni le registre RPC. ## Problème observé Les validations locales de `pre.002` ont montré que la tranche est fonctionnellement verte : ```text cargo fmt --all -> terminé cargo check --workspace -> terminé avec 29 warnings dead_code cargo clippy --workspace --all-targets -> terminé avec les mêmes 29 warnings dead_code cargo test -p ksp-onchain-transport-lib -> 196 unit tests OK 20 public API tests OK 15 release-completeness tests OK 1 smoke Devnet ignoré comme prévu 0 échec ``` Les warnings proviennent exclusivement de helpers internes d'encodage/décodage et de structs `Wire*` préparés en `pre.002` pour les futurs wrappers, alors qu'aucun wrapper `V0_2_4` ne les consomme encore dans une compilation normale de la bibliothèque. Le choix `#[allow(dead_code)]` est rejeté : le lint est correct et signale du code de production activé trop tôt. ## Correction Les 17 contrats publics ajoutés par `pre.002` restent compilés et exportés normalement. Seuls les éléments internes qui n'ont encore aucun consommateur runtime sont placés sous `#[cfg(test)]` : - helpers `is_empty` des configs Blocks/Economics ; - helpers `to_json_value` des configs/ranges Blocks/Economics ; - décodeurs internes `decode_wire` des résultats Blocks/Economics ; - helpers privés de décodage des transactions/rewards de bloc ; - structs privées `WireBlock*`, `WirePerformanceSample` et `WireInflation*`/`WireSupply`. Ils restent donc compilés par les unit tests de `pre.002`, qui continuent à valider les formes wire et les fixtures déterministes, mais ils ne participent plus au build normal de la crate tant qu'un wrapper runtime ne les utilise pas. Cette approche garde le découpage des prereleases strict : ```text pre.002 -> contrats publics + fixtures + validation test-only des helpers wire pre.003+ -> activation progressive des helpers internes au moment où leur wrapper runtime existe ``` À partir de `pre.003`, `SolanaBlockCommitment::decode_wire` sera sorti de `#[cfg(test)]` avec l'implémentation de `getBlockCommitment`. Les autres encodeurs/décodeurs seront activés uniquement dans la prerelease qui introduit leur consommateur. Aucun `#[allow(dead_code)]` n'est ajouté. ## Version Cargo Ce correctif modifie des sources Rust participant au build. Conformément à `VER-ID-007` et `VER-ID-010` : ```text 0.2.4-pre.2 -> 0.2.4-pre.2.fix.1 ``` Aucune dépendance ni feature Cargo n'est modifiée. ## Fichiers modifiés ```text Cargo.toml crates/ksp-onchain-transport-lib/src/rpc_blocks.rs crates/ksp-onchain-transport-lib/src/rpc_economics.rs ``` ## Fichiers ajoutés ```text deltas/0.2.4/pre.002-fix.001.md ``` ## Fichiers supprimés Aucun. ## Fichiers volontairement inchangés ```text crates/ksp-onchain-transport-lib/src/lib.rs crates/ksp-onchain-transport-lib/src/rpc_transactions.rs crates/ksp-onchain-transport-lib/unit_tests/rpc_blocks.rs crates/ksp-onchain-transport-lib/unit_tests/rpc_economics.rs crates/ksp-onchain-transport-lib/tests/public_api.rs crates/ksp-onchain-transport-lib/tests/release_completeness.rs crates/ksp-onchain-transport-lib/fixtures/http/** docs/plans/011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md ROADMAP.md CHANGELOG.md deltas/0.2.4/pre.002.md ``` Aucun delta historique n'est réécrit. ## Validations exécutées dans le sandbox - contrôle différentiel contre la livraison `pre.002` ; - vérification que seuls les trois fichiers de production listés ci-dessus sont modifiés ; - contrôle que les 17 types publics de `pre.002` restent hors `#[cfg(test)]` ; - contrôle que tous les helpers et structs privés signalés `dead_code` par les validations locales sont maintenant test-only ; - contrôle de l'absence de `#[allow(dead_code)]` ; - contrôle de l'absence de `unwrap`, `expect`, `panic!` et `unsafe` dans les lignes modifiées ; - `git diff --check` sur le fix ; - contrôle des versions de fichiers modifiés. ## Validations Cargo non exécutées dans le sandbox Le sandbox ne fournit pas `cargo`, `rustc` ni `rustfmt`. Les validations du fix doivent donc être rejouées sur le checkout de développement : ```bash cargo fmt --all cargo check --workspace cargo clippy --workspace --all-targets cargo test -p ksp-onchain-transport-lib ``` Le critère de clôture du fix est plus strict que pour la tentative initiale : `cargo check` et `cargo clippy` doivent terminer sans les 29 warnings `dead_code` introduits par `pre.002`. Le commit attendu après validation est : ```text v0.2.4-pre.002-fix.001 ``` ## Décisions prises - conserver les DTOs publics actifs en production ; - rendre test-only uniquement l'infrastructure wire interne sans consommateur runtime ; - ne pas masquer les warnings avec `allow(dead_code)` ; - activer progressivement les helpers lors de l'arrivée de chaque wrapper ; - ne pas modifier le plan `011`, le périmètre fonctionnel restant identique. ## Questions ouvertes Aucune. ## Suite Après validation du fix, `0.2.4-pre.003` reste inchangé : ```text getBlockCommitment getBlockHeight getBlockTime getFirstAvailableBlock minimumLedgerSlot ```