43 lines
2.0 KiB
Markdown
43 lines
2.0 KiB
Markdown
<!-- file: deltas/0.2.6/pre.010-fix.001.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# 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.
|