# Delta `0.2.6-pre.010-fix.001` — self-rotation VIEW ## Objet Compléter `pre.010` pour respecter le contrat de capacité de `ksp-wallet-lib` : un détenteur VIEW déjà autorisé doit pouvoir changer son propre password VIEW, tandis qu'OWNER conserve son pouvoir administratif de rotation VIEW sans ancien password VIEW. ## Changements - `workspace.package.version` passe à `0.2.6-pre.10.fix.1` ; - ajout de l'état Rust-only `WalletSession::ViewOperation` pour déplacer un `WalletView` hors mutex pendant Argon2/persistence ; - `rotate_view_password` accepte désormais une session VIEW ou OWNER : - VIEW -> `WalletView::rotate_view_password` -> session VIEW conservée ; - OWNER -> `WalletOwner::rotate_view_password` -> session OWNER conservée ; - `wallet.state_conflict` côté VIEW détruit le handle stale, réinspecte le fichier et force une nouvelle autorisation VIEW ; - Lock/balance considèrent `ViewOperation` comme une opération privilégiée en cours ; - UI : contrôles Rotate VIEW actifs en VIEW comme en OWNER, Rotate OWNER reste strictement OWNER-only ; - la récupération frontend de conflit de rotation exige la réautorisation de la capacité initiatrice ; - canaries contract/security étendus aux deux chemins de rotation VIEW ; - aucun secret Config n'est modifié implicitement. ## Hors changement - aucun changement du format `.kspwallet` ; - aucun changement dans `ksp-wallet-lib` ; - aucune nouvelle dépendance ; - `ROADMAP.md`, `CHANGELOG.md` et `docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md` restent inchangés. ## Validation opérateur ```bash 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 ``` Runtime utile : ouvrir VIEW, Rotate VIEW, Lock, vérifier ancien VIEW refusé / nouveau VIEW accepté ; puis ouvrir OWNER et vérifier que Rotate VIEW et Rotate OWNER restent fonctionnels.