v0.2.6-pre.018

This commit is contained in:
2026-08-22 10:56:26 +02:00
parent 362123f357
commit ba8f42f9b1
36 changed files with 1238 additions and 150 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/000-README.md -->
<!-- version: 51 -->
<!-- version: 52 -->
# Plans KSP
@@ -21,7 +21,7 @@ Un plan décrit le périmètre, les décisions déjà acquises, les questions ou
- [`010-V0_2_3_HTTP_TRANSACTIONS_PLAN.md`](010-V0_2_3_HTTP_TRANSACTIONS_PLAN.md) — plan historique clôturé de la release stable `0.2.3 — HTTP Transactions`, ouvert par `pre.001`, exécuté jusqu'à `pre.009` puis publié par `rel.001`; il couvre les 11 méthodes, la classification `8 Read / 2 WriteSubmission / 1 Simulation`, `KSP-TRANSPORT-007`, le no-resend et la préparation de `0.2.4`.
- [`011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md`](011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md) — plan historique clôturé de la release stable `0.2.4`, ouvert par `pre.001`, exécuté jusquà `pre.009`, complété par le fix documentaire Wallet `pre.009-fix.001` puis publié par `rel.001`; il couvre les 10 Blocks + 5 Economics et la compliance finale `52/52 + 14/14` sous `KSP-TRANSPORT-007`.
- [`012-V0_2_5_WALLET_FOUNDATION_PLAN.md`](012-V0_2_5_WALLET_FOUNDATION_PLAN.md) — plan historique clôturé de la release stable `0.2.5 — Wallet foundation`, ouvert par `pre.001`, livré jusquà `pre.010`, renforcé par `pre.010-fix.001``fix.003` pour Dalek 3 et la normalisation Rust/audit structurel, puis publié par `rel.001`; il couvre `.kspwallet` V1, VIEW/OWNER, crypto, persistence, administration, transfer et compliance.
- [`013-V0_2_6_WALLET_DESK_PLAN.md`](013-V0_2_6_WALLET_DESK_PLAN.md) — plan actif de `0.2.6 — Wallet Desk`, ouvert par `pre.001`; `pre.002` matérialise le shell Tauri et `pre.003` la composition `std.wallet`/composite ainsi que la préparation des répertoires. Le plan fixe aussi secrets `KSP_SECRET_WALLET_PASS_*`, inventory DataTables/path safety, lifecycle VIEW/OWNER, screen/command/DTO maps, balance HTTP, administration retenue et forecast étendu jusquà `pre.018` : `pre.014` polish Bootstrap/splashscreen, `pre.015` wire binaire `.kspwallet` V2 et `pre.016` APIs génériques/versionnées + runtime V2 et `pre.017` migration explicite V1 -> V2 désormais matérialisés ; prochain gate `pre.018` documentation candidate et build Tauri final.
- [`013-V0_2_6_WALLET_DESK_PLAN.md`](013-V0_2_6_WALLET_DESK_PLAN.md) — plan actif de `0.2.6 — Wallet Desk`, ouvert par `pre.001`; shell Tauri, composition Config/Wallet/Transport, inventory, lifecycle VIEW/OWNER, administration, import/export et compliance sont acquis. `pre.015``pre.017` ajoutent le wire binaire `.kspwallet` V2, les APIs génériques/versionnées, le runtime V2 et la migration explicite V1 -> V2. `pre.018` matérialise désormais la candidate documentaire et le runtime Tauri packagé commun user-writable ; validation opérateur/build final puis `rel.001` restent à fermer.
Le `pre.001` de chaque release fonctionnelle peut introduire son propre plan détaillé lorsque la release s'ouvre.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md -->
<!-- version: 76 -->
<!-- version: 77 -->
# Séquence des releases fonctionnelles KSP
@@ -449,7 +449,7 @@ pre.018 documentation finale, validations, prompt 0.2.7 et cargo tauri build en
rel.001 publication stable 0.2.6
```
`pre.017` est désormais matérialisé : la migration V1 -> V2 est explicite, OWNER-authentifiée et séparée de toute ouverture normale, avec copie no-clobber et remplacement in-place stale-protected. Le prochain gate est `pre.018`.
`pre.017` est désormais matérialisé et validé : la migration V1 -> V2 est explicite, OWNER-authentifiée et séparée de toute ouverture normale, avec copie no-clobber et remplacement in-place stale-protected. `pre.018` matérialise la candidate finale : README/USAGE Wallet Desk, documentation/compliance, runtime packagé commun à Config Desk/Wallet Desk avec Config resources + racine user-writable, et prompt `0.2.7`. Le build Wallet Desk et `rel.001` restent les gates finaux.
La tranche `pre.014` est réservée aux défauts visuels/templating observés en usage réel, notamment les scrollbars occasionnelles du splashscreen ; son contenu précis sera borné à partir du retour opérateur avant implémentation. `ROADMAP.md` reste synthétique et `CHANGELOG.md` n'est synchronisé qu'à la phase documentaire finale.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/013-V0_2_6_WALLET_DESK_PLAN.md -->
<!-- version: 34 -->
<!-- version: 35 -->
# Plan `0.2.6` — Wallet Desk
@@ -770,32 +770,32 @@ outil de logging contrôlé
## 12. Command map
| Command | Entrée frontend | Sortie sûre | Délégation |
|----------------------------------------------|--------------------|-------------------------------------|---------------------------------|
| `get_runtime_status` | — | `WalletRuntimeStatusDto` | Config/app state |
| `list_wallets` | — | `Vec<WalletInventoryEntryDto>` | app filesystem + Wallet inspect |
| `refresh_wallets` | — | inventory DTO | app filesystem + Wallet inspect |
| `select_wallet` | wallet id | `LockedWalletDto` | app resolver + Wallet inspect |
| `deselect_wallet` | — | session DTO | app state |
| `create_wallet` | create request | `WalletAuthorizedDto` OWNER | Wallet create file |
| `unlock_wallet_view` | password | authorized VIEW | Wallet open VIEW |
| `unlock_wallet_owner` | password | authorized OWNER | Wallet open OWNER |
| `unlock_wallet_view_with_configured_secret` | — | authorized VIEW / operation result | Config env + Wallet open VIEW |
| `unlock_wallet_owner_with_configured_secret` | — | authorized OWNER / operation result | Config env + Wallet open OWNER |
| `lock_wallet` | — | `LockedWalletDto` | drop handle + inspect |
| `refresh_wallet_balance` | — | `WalletBalanceDto` | Transport getBalance |
| `inspect_import_source` | format only | transfer inspection DTO / cancel | Rust native picker + Wallet inspect |
| `import_wallet` | import request | authorized OWNER | staged bytes + Wallet import |
| `update_wallet_alias` | alias mutation | authorized DTO | WalletOwner |
| `add_wallet_note` | note create | authorized DTO | WalletOwner |
| `update_wallet_note` | note update | authorized DTO | WalletOwner |
| `delete_wallet_note` | note id | authorized DTO | WalletOwner |
| `rotate_owner_password` | rotation request | operation result | WalletOwner |
| `rotate_view_password` | rotation request | operation result | WalletOwner |
| `disable_view` | confirmation | authorized DTO | WalletOwner |
| `recreate_view` | new VIEW password | authorized DTO | WalletOwner |
| `export_wallet_owner` | format + save path | operation result | Wallet export file |
| `emit_frontend_log` | redacted payload | `()` | Logging facade |
| Command | Entrée frontend | Sortie sûre | Délégation |
|----------------------------------------------|--------------------|-------------------------------------|-------------------------------------|
| `get_runtime_status` | — | `WalletRuntimeStatusDto` | Config/app state |
| `list_wallets` | — | `Vec<WalletInventoryEntryDto>` | app filesystem + Wallet inspect |
| `refresh_wallets` | — | inventory DTO | app filesystem + Wallet inspect |
| `select_wallet` | wallet id | `LockedWalletDto` | app resolver + Wallet inspect |
| `deselect_wallet` | — | session DTO | app state |
| `create_wallet` | create request | `WalletAuthorizedDto` OWNER | Wallet create file |
| `unlock_wallet_view` | password | authorized VIEW | Wallet open VIEW |
| `unlock_wallet_owner` | password | authorized OWNER | Wallet open OWNER |
| `unlock_wallet_view_with_configured_secret` | — | authorized VIEW / operation result | Config env + Wallet open VIEW |
| `unlock_wallet_owner_with_configured_secret` | — | authorized OWNER / operation result | Config env + Wallet open OWNER |
| `lock_wallet` | — | `LockedWalletDto` | drop handle + inspect |
| `refresh_wallet_balance` | — | `WalletBalanceDto` | Transport getBalance |
| `inspect_import_source` | format only | transfer inspection DTO / cancel | Rust native picker + Wallet inspect |
| `import_wallet` | import request | authorized OWNER | staged bytes + Wallet import |
| `update_wallet_alias` | alias mutation | authorized DTO | WalletOwner |
| `add_wallet_note` | note create | authorized DTO | WalletOwner |
| `update_wallet_note` | note update | authorized DTO | WalletOwner |
| `delete_wallet_note` | note id | authorized DTO | WalletOwner |
| `rotate_owner_password` | rotation request | operation result | WalletOwner |
| `rotate_view_password` | rotation request | operation result | WalletOwner |
| `disable_view` | confirmation | authorized DTO | WalletOwner |
| `recreate_view` | new VIEW password | authorized DTO | WalletOwner |
| `export_wallet_owner` | format + save path | operation result | Wallet export file |
| `emit_frontend_log` | redacted payload | `()` | Logging facade |
Aucune commande de signature arbitraire n'est ajoutée dans cette release.
@@ -1741,7 +1741,7 @@ Une future API `_v3` pourra être ajoutée sans transformer automatiquement le d
### `pre.017` — migration V1 -> V2 + persistence/canaris
**Statut : matérialisé par `0.2.6-pre.017`.**
**Statut : matérialisé par `0.2.6-pre.017` et checkpoint opérateur entièrement vert.**
La migration est une opération explicite OWNER-authentifiée et reste séparée de toute ouverture normale :
@@ -1765,23 +1765,41 @@ Invariants retenus :
Les canaris `pre.017` couvrent migration mémoire, conservation identité/metadata/note IDs, choix du credential VIEW cible, no-clobber, remplacement in-place, tampering, stale-state et exposition API publique. Wallet Desk reste version-neutral et non-migrant : aucune ouverture/inventory du Desk ne déclenche la migration.
### `pre.018` — documentation finale, candidate build et prompt suivant
### `pre.018` — documentation finale, runtime packagé et candidate build
Dernière tranche prévue avant `rel.001` :
**Statut : candidate matérialisée ; validations opérateur et build final encore à exécuter.**
Cette tranche ferme la stratégie CWD/resources release qui restait ouverte depuis le polish desktop :
```text
README/USAGE Wallet Desk
docs/validation 0.2.6 finalisée
ROADMAP / functional sequence / CHANGELOG synchronisés
stratégie CWD/resources release packagée fermée
dépendances et versions finales réauditées
validation Rust workspace finale
parcours fonctionnel cargo tauri dev final
prompt de démarrage 0.2.7 WebSocket finalisé
cargo tauri build en toute dernière opération
bundle.resources : 4 documents Config + 4 schemas du registre courant
Config packagée : seed uniquement si absente
Schemas : synchronisés depuis le package courant à chaque lancement
.env : jamais embarqué ni seedé
racine runtime writable : ProjectDirs commun KSP
release Tauri : resource_dir -> prepare_packaged_runtime -> set_current_dir -> AppState::initialize
debug Tauri : comportement workspace-root existant conservé
```
Si une correction technique apparaît, utiliser `pre.018-fix.NNN` ou insérer une tranche supplémentaire.
Les deux Desks utilisent le même runtime KSP writable et ne dépendent donc plus du checkout source en distribution. Aucun accès filesystem supplémentaire n'est accordé au guest frontend. `ksp-config-lib` reste propriétaire de la préparation des Config/schemas et de la localisation user-writable.
Livrables candidate :
```text
README/USAGE Wallet Desk créés
README/USAGE Config Desk synchronisés sur le runtime packagé
docs/validation 0.2.6 finalisée jusqu'au gate opérateur
règles KSP packaging/CWD durables
ROADMAP / functional sequence / indexes mis à jour globalement
CHANGELOG audité mais volontairement inchangé jusqu'à rel.001
versions Cargo/package/Tauri alignées sur pre.018
prompt de démarrage 0.2.7 WebSocket finalisé
canaris resources/packaging ajoutés
```
Le checkpoint `pre.017` de référence est vert : fmt/audit/check/clippy/workspace tests passent, `ksp-wallet-lib` compte 84 tests passés + 1 benchmark ignoré, et le parcours Tauri confirme un import créant réellement un V2 puis un `getBalance` Devnet réussi.
Après application de `pre.018`, toutes les validations Rust, le parcours `cargo tauri dev`, les éventuels smokes live et audits de dépendances sont exécutés avant le build. `(cd crates/ksp-app-wallet-desk && cargo tauri build)` demeure **l'absolue dernière opération de validation**. Si une correction technique apparaît, utiliser `pre.018-fix.NNN` avant de rejouer le gate depuis le début.
### `rel.001` — publication stable
@@ -1955,6 +1973,6 @@ splash : feed #debug-info pleine largeur dans les deux Desks
pre.013 gate : le canari ne fige plus une shell_phase destinée à évoluer à chaque tranche
```
Le recalage du CWD n'existe actuellement qu'en `debug_assertions` dans les deux `main.rs`. La candidate finale `pre.018` doit donc vérifier explicitement la stratégie de résolution production/bundle pour `config`, `.env`, `logs` et `wallets` avant le build final ; le comportement release ne doit pas être supposé identique au parcours `cargo tauri dev`.
Le recalage du CWD n'existait alors qu'en `debug_assertions` dans les deux `main.rs`. Ce point historique est fermé par `pre.018` : le runtime release résout les resources Tauri puis une racine KSP user-writable via Config avant le bootstrap ; il ne suppose plus le comportement du parcours `cargo tauri dev`.
Ce fix touche le frontend/build contract et porte donc le signal technique `workspace.package.version = 0.2.6-pre.14.fix.1`. `ROADMAP.md`, `CHANGELOG.md` et `docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md` restent inchangés.