160 lines
5.7 KiB
Markdown
160 lines
5.7 KiB
Markdown
<!-- file: deltas/0.2.4/pre.002-fix.001.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# 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
|
|
```
|