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.