Files
khadhroony-solana-project/deltas/0.2.6/pre.005-fix.001.md

3.8 KiB

Delta 0.2.6-pre.005-fix.001 — fermeture du gate Clippy/tests de session OWNER

Base requise

0.2.6-pre.005 appliquée
workspace.package.version = 0.2.6-pre.5

La première validation opérateur de pre.005 confirme :

cargo fmt --all                                      OK
python3 scripts/audit_rust_workspace_rules.py       clean
cargo check --workspace                             OK
cargo clippy --workspace --all-targets              bloqué
cargo test -p ksp-app-wallet-desk                   bloqué

Deux défauts locaux empêchent d'aller jusqu'au test fonctionnel de création :

clippy::large_enum_variant sur WalletSession::Owner
E0425 request_start absent dans tests/desktop_security.rs

Type de livraison

ksp-general-0.2.6-pre.005-fix.001.zip

Le correctif modifie du Rust ; le signal technique devient :

workspace.package.version = 0.2.6-pre.5.fix.1
commit = v0.2.6-pre.005-fix.001

ksp-app-wallet-desk/package.json et tauri.conf.json suivent 0.2.6-pre.5.fix.1.

Correction de la session OWNER

WalletOwner est un handle volontairement riche qui conserve l'état autorisé et le secret exclusivement côté Rust. Le stocker inline dans WalletSession::Owner faisait grossir l'enum à plus de 1 KiB alors que Locked reste très petit.

La variante devient donc conceptuellement :

Owner {
    wallet_id,
    path,
    wallet: Box<WalletOwner>,
}

La création installe le handle avec Box::new(owner). Le lifecycle reste identique : le Box<WalletOwner> est possédé par AppState, puis détruit lors de Lock/Deselect/Refresh/changement de wallet. Aucun secret n'est cloné, sérialisé ou déplacé vers le frontend.

Cette indirection corrige clippy::large_enum_variant au lieu de masquer le lint.

Correction du canari password request-only

Le test create_passwords_are_request_only_and_protected_projection_is_purged utilisait request_start sans l'initialiser.

Le canari localise désormais explicitement :

pub(crate) struct WalletCreateRequestDto

puis vérifie dans cette partie du source la présence de :

owner_password
view_password

Le contrôle séparé continue de vérifier que WalletAuthorizedDto ne contient aucun password et que le frontend purge les projections/inputs sensibles.

Fichiers ajoutés

deltas/0.2.6/pre.005-fix.001.md

Fichiers modifiés

Cargo.toml
ROADMAP.md
crates/ksp-app-wallet-desk/package.json
crates/ksp-app-wallet-desk/src/app_state.rs
crates/ksp-app-wallet-desk/src/wallet_session.rs
crates/ksp-app-wallet-desk/tauri.conf.json
crates/ksp-app-wallet-desk/tests/desktop_security.rs
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
docs/plans/013-V0_2_6_WALLET_DESK_PLAN.md

Fichiers supprimés

aucun

Hors scope

Le fix ne modifie pas :

format .kspwallet
KDF / AEAD
create_wallet_file_v1
inventaire / path safety
DTO frontend autorisés
workflow Create
profils Config/Logging
unlock VIEW/OWNER (toujours pre.006)

Aucune dépendance Cargo ou npm n'est ajoutée ou modifiée.

Validation opérateur requise

cargo fmt --all
python3 scripts/audit_rust_workspace_rules.py
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-app-wallet-desk
cargo test --workspace
KSP_WALLETS_DIRECTORY=var/wallet-desk-pre005 cargo tauri dev -c crates/ksp-app-wallet-desk/tauri.conf.json

Une fois Tauri lancé, le test fonctionnel prioritaire reste la création d'un vrai wallet dans Create / Import, suivie de Lock/Deselect/Refresh et du no-clobber sur le même filename.

Aucune commande npm directe n'est nécessaire. cargo tauri build -c crates/ksp-app-wallet-desk/tauri.conf.json reste réservé à la toute dernière validation de 0.2.6.