Files
khadhroony-solana-project/deltas/0.2.1/pre.002-fix.001.md

172 lines
6.0 KiB
Markdown

<!-- file: deltas/0.2.1/pre.002-fix.001.md -->
<!-- version: 1 -->
# Delta `0.2.1-pre.002-fix.001` — nettoyage Clippy et documentation des tests
## Base requise
```text
release : 0.2.1
prerelease corrigée : pre.002
identifiant de commit attendu : v0.2.1-pre.002-fix.001
workspace.package.version : 0.2.1-pre.2.fix.1
base : v0.2.1-pre.002
```
Le correctif est ouvert à partir de la validation locale transmise après application de `pre.002`.
## Objectif
Corriger exclusivement les warnings révélés par `cargo clippy --workspace --all-targets` et `cargo test`, sans modifier le périmètre fonctionnel ni les contrats publics introduits par `pre.002` :
- supprimer trois usages de `assert!(false, ...)` signalés par `clippy::assertions_on_constants` dans les tests unitaires ;
- appliquer les deux simplifications `clippy::collapsible_if` dans la validation des settings ;
- documenter les deux crates de tests d'intégration afin de satisfaire `missing_docs` ;
- conserver inchangés le registre 52 current + 14 historiques, les settings publics, les envelopes JSON-RPC, les codes d'erreur, les descriptors et le firewall de dépendances.
## Version Cargo
Le correctif touche du Rust de production et de test. Conformément à `VER-ID-007` et `VER-ID-010` :
```text
0.2.1-pre.2 -> 0.2.1-pre.2.fix.1
```
Toutes les crates membres continuent d'hériter `version.workspace = true`.
## Corrections Rust
### Validation des settings
Les deux validations imbriquées suivantes sont exprimées sous forme de let-chain Rust 2024 :
```text
max_idle_connections_per_host = Some(0)
pause_after_rate_limit = Some(Duration::ZERO)
```
La sémantique reste strictement identique : les valeurs nulles configurées restent rejetées avec `ERROR_CODE_INVALID_SETTINGS`.
### Tests JSON-RPC
Les tests qui validaient la variante attendue avec un `match` et `assert!(false, ...)` utilisent désormais :
1. une assertion `matches!` sur la variante attendue ;
2. un `if let` pour vérifier le payload de cette variante.
Aucun `panic!`/`unreachable!` explicite n'est introduit.
### Test de matrice de couverture
Le cas `HttpRpcCoverageRelease::Historical` rencontré dans `current_http_rpc_methods()` est désormais comptabilisé dans un compteur local puis vérifié avec :
```text
historical == 0
```
La preuve reste donc explicite sans assertion constante fausse.
### Tests d'intégration
Les targets Cargo :
```text
tests/public_api.rs
tests/dependency_boundary.rs
```
possèdent maintenant une documentation de crate `//!`, ce qui satisfait le lint workspace `missing_docs` sans masquer le warning global.
## Graphe de dépendances
Les quatre commandes `cargo tree` ont été exécutées localement sur `pre.002` avant ce fix.
Constats :
- aucune dépendance directe interdite Transport -> Config/Store/Program/tracing n'apparaît ;
- `reqwest 0.13.4` reste la dépendance HTTP retenue par `pre.002` ;
- `cargo tree -d` ne rapporte comme duplication que `syn 2.0.119` / `syn 3.0.3`, issue des chaînes proc-macro/ICU/Serde et ne justifiant pas une modification du graphe KSP dans ce correctif ;
- aucune dépendance n'est ajoutée ou retirée par `fix.001`.
## Fichiers ajoutés
```text
deltas/0.2.1/pre.002-fix.001.md
```
## Fichiers modifiés
```text
Cargo.toml
ROADMAP.md
crates/ksp-onchain-transport-lib/src/settings.rs
crates/ksp-onchain-transport-lib/unit_tests/json_rpc.rs
crates/ksp-onchain-transport-lib/unit_tests/rpc_method.rs
crates/ksp-onchain-transport-lib/tests/dependency_boundary.rs
crates/ksp-onchain-transport-lib/tests/public_api.rs
```
## Fichiers supprimés
Aucun.
## Validation de `pre.002` ayant déclenché le correctif
Les commandes suivantes ont été exécutées par le user sur `v0.2.1-pre.002` avant création du fix :
```text
cargo fmt --all : exécuté
cargo check --workspace : OK
cargo clippy --workspace --all-targets : terminé avec warnings
cargo test -p ksp-onchain-transport-lib : OK, 40 tests passés
cargo test --workspace : OK ; 1 test diagnostic ignoré comme prévu
cargo tree -p ksp-onchain-transport-lib : exécuté
cargo tree -p ksp-onchain-transport-lib -d : exécuté
cargo tree -p ksp-onchain-transport-lib -e features : exécuté
cargo tree -p ksp-onchain-transport-lib -e normal : exécuté
```
Warnings observés et ciblés par ce fix :
```text
3 x clippy::assertions_on_constants
2 x clippy::collapsible_if
2 x missing documentation for integration-test crate
```
## Validations du correctif
Le sandbox de préparation ne possède pas `cargo`, `rustc` ni `rustfmt`. Les validations Rust du correctif ne peuvent donc pas y être exécutées et ne sont pas déclarées réussies.
Après application du delta, exécuter dans cet ordre :
```bash
cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-onchain-transport-lib
cargo test --workspace
```
Les quatre `cargo tree` ne sont pas obligatoires à répéter pour ce fix puisqu'aucune dépendance n'a changé. Ils peuvent être relancés si une vérification de non-régression du graphe est souhaitée.
## Contrôles statiques effectués pendant la préparation
- aucune occurrence restante de `assert!(false` dans la crate Transport ;
- les deux blocs signalés `collapsible_if` ont été remplacés ;
- les deux tests d'intégration possèdent une rustdoc de crate ;
- les headers/version des fichiers modifiés ont été incrémentés ;
- `pre.002.md` n'est pas modifié ;
- le périmètre public de `pre.002` reste inchangé.
## Décisions prises
- ne pas masquer les lints par `#[allow(...)]` ; corriger leur cause ;
- ne pas remplacer `assert!(false)` par `panic!()` ou `unreachable!()` ;
- ne pas modifier le graphe de dépendances pour le seul doublon `syn 2/3` ;
- conserver ce travail sous un vrai `pre.002-fix.001`, conformément à l'historique Git KSP.
## Questions ouvertes
Aucune pour ce correctif. Après validation et commit, `0.2.1` peut reprendre avec la prerelease suivante prévue par le plan `008`.