172 lines
6.0 KiB
Markdown
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`.
|