145 lines
4.1 KiB
Markdown
145 lines
4.1 KiB
Markdown
<!-- file: deltas/0.2.5/pre.003-fix.001.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta `0.2.5-pre.003-fix.001` — conformité Clippy du wire Wallet V1
|
|
|
|
## Base requise
|
|
|
|
```text
|
|
livraison : 0.2.5-pre.003
|
|
workspace.package.version = "0.2.5-pre.3"
|
|
```
|
|
|
|
La base opérateur inclut les ajustements de présentation appliqués localement après `pre.003` dans `crates/ksp-wallet-lib/src/constants.rs` et `crates/ksp-wallet-lib/src/lib.rs`. Ce fix ne touche pas ces deux fichiers et doit donc être appliqué par-dessus cet état opérateur.
|
|
|
|
## Motif
|
|
|
|
La validation opérateur de `pre.003` donne :
|
|
|
|
```text
|
|
cargo fmt --all OK
|
|
cargo check --workspace OK
|
|
cargo clippy --workspace --all-targets OK avec 1 warning Wallet
|
|
cargo test -p ksp-wallet-lib OK
|
|
```
|
|
|
|
Clippy signale `clippy::collapsible_if` dans `crates/ksp-wallet-lib/src/wire.rs` lors de la vérification de l'unicité des `slot_id` OWNER/VIEW.
|
|
|
|
Même si ce lint n'est actuellement qu'un warning, KSP ne clôt pas volontairement une tranche Rust avec un warning connu dans le code introduit par la tranche lorsqu'une correction locale et sémantiquement neutre est disponible.
|
|
|
|
## Correction
|
|
|
|
Le test :
|
|
|
|
```rust
|
|
if let Some(view_slot_ref) = view_slot.as_ref() {
|
|
if owner_slot.slot_id() == view_slot_ref.slot_id() {
|
|
// ...
|
|
}
|
|
}
|
|
```
|
|
|
|
est remplacé par une let-chain Rust 2024 équivalente :
|
|
|
|
```rust
|
|
if let Some(view_slot_ref) = view_slot.as_ref()
|
|
&& owner_slot.slot_id() == view_slot_ref.slot_id()
|
|
{
|
|
// ...
|
|
}
|
|
```
|
|
|
|
Aucune sémantique wire, aucun invariant `.kspwallet`, aucun transcript/AAD, aucune dépendance et aucune API publique ne changent.
|
|
|
|
## Version Cargo
|
|
|
|
Le correctif modifie une source Rust de production. Conformément aux règles de signalement technique du workspace :
|
|
|
|
```text
|
|
0.2.5-pre.3 -> 0.2.5-pre.3.fix.1
|
|
```
|
|
|
|
## Fichiers modifiés
|
|
|
|
```text
|
|
Cargo.toml
|
|
crates/ksp-wallet-lib/src/wire.rs
|
|
```
|
|
|
|
## Fichiers ajoutés
|
|
|
|
```text
|
|
deltas/0.2.5/pre.003-fix.001.md
|
|
```
|
|
|
|
## Fichiers supprimés
|
|
|
|
Aucun.
|
|
|
|
## Fichiers opérateur volontairement préservés
|
|
|
|
Le fix n'embarque pas et ne réécrit pas :
|
|
|
|
```text
|
|
crates/ksp-wallet-lib/src/constants.rs
|
|
crates/ksp-wallet-lib/src/lib.rs
|
|
```
|
|
|
|
Les regroupements `pub const` / `pub(crate) const` et `pub use` / `pub(crate) use` effectués par l'opérateur restent donc intacts.
|
|
|
|
## Validation attendue après application
|
|
|
|
```bash
|
|
cargo fmt --all
|
|
cargo check --workspace
|
|
cargo clippy --workspace --all-targets
|
|
cargo test -p ksp-wallet-lib
|
|
```
|
|
|
|
Le checkpoint de dépendances de `pre.003` doit également auditer l'arbre après l'introduction de `base64` :
|
|
|
|
```bash
|
|
cargo tree -p ksp-wallet-lib
|
|
cargo tree -p ksp-wallet-lib -d
|
|
cargo tree -i base64
|
|
```
|
|
|
|
Objectifs du contrôle :
|
|
|
|
```text
|
|
Wallet ne dépend toujours que de ses frontières autorisées
|
|
base64 provient de la déclaration workspace et n'introduit pas une seconde génération injustifiée
|
|
aucune dépendance Config / Transport / Tauri / tracing direct / client RPC Solana n'apparaît sous Wallet
|
|
les duplications éventuelles de l'arbre sont comprises et justifiées
|
|
```
|
|
|
|
`cargo tree -d` peut afficher des duplications appartenant à d'autres branches du workspace lorsqu'il est lancé globalement ; le contrôle ciblé `-p ksp-wallet-lib` constitue la vue de référence de ce fix.
|
|
|
|
## Validations opérateur pré-fix enregistrées
|
|
|
|
- `cargo fmt --all` : OK ;
|
|
- `cargo check --workspace` : OK ;
|
|
- `cargo clippy --workspace --all-targets` : terminé avec un unique warning `clippy::collapsible_if` dans `wire.rs` ;
|
|
- `cargo test -p ksp-wallet-lib` : OK :
|
|
- 18 unit tests ;
|
|
- 2 dependency-boundary tests ;
|
|
- 5 public API tests ;
|
|
- 2 doctests `compile_fail`.
|
|
|
|
## Décisions
|
|
|
|
- corriger le warning au lieu de l'accepter ou de poser un `#[allow]` local ;
|
|
- ne pas modifier les ajustements manuels `constants.rs` / `lib.rs` de l'opérateur ;
|
|
- ajouter le contrôle `cargo tree` à la validation de la tranche ayant introduit `base64` ;
|
|
- ne pas élargir le périmètre fonctionnel de `pre.003`.
|
|
|
|
## Questions ouvertes
|
|
|
|
Aucune nouvelle question fonctionnelle introduite par ce correctif.
|
|
|
|
## Commit attendu
|
|
|
|
```text
|
|
v0.2.5-pre.003-fix.001
|
|
```
|