5.7 KiB
Delta 0.2.4-pre.002-fix.001 — suppression du code interne prématurément actif
Base requise
Livraison précédente :
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 :
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_emptydes configs Blocks/Economics ; - helpers
to_json_valuedes configs/ranges Blocks/Economics ; - décodeurs internes
decode_wiredes résultats Blocks/Economics ; - helpers privés de décodage des transactions/rewards de bloc ;
- structs privées
WireBlock*,WirePerformanceSampleetWireInflation*/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 :
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 :
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
Cargo.toml
crates/ksp-onchain-transport-lib/src/rpc_blocks.rs
crates/ksp-onchain-transport-lib/src/rpc_economics.rs
Fichiers ajoutés
deltas/0.2.4/pre.002-fix.001.md
Fichiers supprimés
Aucun.
Fichiers volontairement inchangés
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.002restent hors#[cfg(test)]; - contrôle que tous les helpers et structs privés signalés
dead_codepar 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!etunsafedans les lignes modifiées ; git diff --checksur 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 :
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 :
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é :
getBlockCommitment
getBlockHeight
getBlockTime
getFirstAvailableBlock
minimumLedgerSlot