v0.2.6-pre.001
This commit is contained in:
222
deltas/0.2.6/pre.001.md
Normal file
222
deltas/0.2.6/pre.001.md
Normal file
@@ -0,0 +1,222 @@
|
||||
<!-- file: deltas/0.2.6/pre.001.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.2.6-pre.001` — audit Wallet Desk, composition, UX, sécurité et sizing
|
||||
|
||||
## Base requise
|
||||
|
||||
Release stable attendue :
|
||||
|
||||
```text
|
||||
v0.2.5
|
||||
```
|
||||
|
||||
L'archive stable fournie confirme `workspace.package.version = 0.2.5` avant ouverture, six crates membres et l'absence de `ksp-app-wallet-desk`/`std.wallet`.
|
||||
|
||||
## Type de livraison
|
||||
|
||||
```text
|
||||
ksp-general-0.2.6-pre.001.zip
|
||||
```
|
||||
|
||||
L'archive d'échange est un delta applicable depuis la racine de `v0.2.5`. Elle contient uniquement les fichiers ajoutés/modifiés par cette tranche.
|
||||
|
||||
## Objet
|
||||
|
||||
Ouvrir `0.2.6 — Wallet Desk` sans commencer l'implémentation UI lourde. Le gate :
|
||||
|
||||
- réaudite Config Desk comme template Tauri sans le copier aveuglément ;
|
||||
- réaudite les APIs finales Config, Wallet, Transport et Logging ;
|
||||
- confirme qu'un vrai `std.wallet` exige une extension de `ksp-config-lib` ;
|
||||
- fixe `cfg.std.wallet`, `schema.std.wallet` et `cfg.composite.ksp-app-wallet-desk` ;
|
||||
- fixe `wallets_directory` global avec fallback `${KSP_WALLETS_DIRECTORY:-wallets}` et profil Config minimal `default` pour la composition ;
|
||||
- confirme que `getBalance` stable fournit lamports + contexte RPC sans nouveau wrapper ;
|
||||
- définit runtime state, screen map, command map et DTO map ;
|
||||
- définit inventory/path safety, symlink policy et comportement root absent ;
|
||||
- définit le threat model desktop/password/export/state conflict ;
|
||||
- retient import, metadata OWNER, rotations, disable/recreate VIEW et export fichier dans `0.2.6` ;
|
||||
- exclut un écran de signature arbitraire et tout prix offchain ;
|
||||
- réaudite les dépendances Tauri/frontend actuelles ;
|
||||
- impose une CSP explicite à Wallet Desk au lieu de recopier `csp = null` de Config Desk ;
|
||||
- regranularise le forecast initial jusqu'à `pre.013`.
|
||||
|
||||
## Décisions principales
|
||||
|
||||
### Config
|
||||
|
||||
```text
|
||||
cfg.std.wallet
|
||||
schema.std.wallet
|
||||
cfg.composite.ksp-app-wallet-desk
|
||||
component_id = logging / transport / wallet
|
||||
```
|
||||
|
||||
Shape prévu :
|
||||
|
||||
```text
|
||||
wallets_directory global
|
||||
+ default_profile = default
|
||||
+ profiles = [{ profile_id = default }]
|
||||
```
|
||||
|
||||
Le profil minimal est requis par le moteur composite réel ; aucune donnée Wallet sensible n'entre dans Config.
|
||||
|
||||
### Inventory
|
||||
|
||||
```text
|
||||
root = ResolvedWalletConfig::wallets_directory
|
||||
non récursif
|
||||
.kspwallet exact
|
||||
regular file only
|
||||
symlink excluded
|
||||
root missing = état explicite, aucune création silencieuse
|
||||
wallet_id = filename validé mono-composant
|
||||
aucun alias dérivé du filename
|
||||
```
|
||||
|
||||
### Lifecycle
|
||||
|
||||
```text
|
||||
NoSelection -> Locked -> ViewOpen/OwnerOpen
|
||||
```
|
||||
|
||||
`WalletView`/`WalletOwner` restent en Rust. Lock/deselect/state conflict drop le handle et purgent les projections protégées frontend.
|
||||
|
||||
### Balance
|
||||
|
||||
```text
|
||||
authorized Wallet handle
|
||||
-> Pubkey Rust
|
||||
-> HttpTransportPool::get_balance(role=default, config=None)
|
||||
-> lamports + slot + api_version
|
||||
-> safe DTO
|
||||
```
|
||||
|
||||
### Sécurité Tauri
|
||||
|
||||
- CSP locale restrictive obligatoire ;
|
||||
- capabilities minimales ;
|
||||
- aucun password dans storage/log/Debug ordinaire ;
|
||||
- aucun export secret IPC/clipboard ;
|
||||
- export fichier OWNER uniquement ;
|
||||
- native Dialog `open/save` ajouté seulement lorsqu'il est consommé ;
|
||||
- Bootstrap modals pour confirmations privilégiées ;
|
||||
- aucun plugin filesystem nécessaire.
|
||||
|
||||
## Audit externe au 2026-08-20
|
||||
|
||||
Constats courants :
|
||||
|
||||
```text
|
||||
@tauri-apps/api 2.11.1
|
||||
@tauri-apps/plugin-dialog 2.7.2
|
||||
@fltsci/tauri-plugin-tracing 0.3.4
|
||||
Bootstrap 5.3.8
|
||||
```
|
||||
|
||||
Les ranges existants de Config Desk restent cohérents, mais Wallet Desk démarre sans DataTables/SimpleBar/resize polyfill. Le plugin Dialog sera réaudité au moment exact de son ajout.
|
||||
|
||||
## Prévision souple révisée
|
||||
|
||||
```text
|
||||
pre.001 audit + Config/Wallet/Transport/Tauri + UX + threat model + sizing
|
||||
pre.002 crate Tauri + frontend shell + splash/main + logging bridge + CSP + ports
|
||||
pre.003 cfg.std.wallet + schema + ResolvedWalletConfig + composite Wallet Desk
|
||||
pre.004 runtime state + inventory/path safety + locked inspection + DTO foundation
|
||||
pre.005 create .kspwallet + OWNER session + explicit root-directory flow
|
||||
pre.006 unlock VIEW/OWNER + lock/deselect + authorized details + purge guarantees
|
||||
pre.007 Transport pool from composite + getBalance + diagnostics/refresh
|
||||
pre.008 native Dialog open + inspect/import CLI JSON/Base58 + destination no-clobber
|
||||
pre.009 OWNER metadata administration alias/notes + state_conflict UX
|
||||
pre.010 rotations OWNER/VIEW + disable/recreate VIEW + capability/security UX
|
||||
pre.011 OWNER file export + save picker + privileged confirmation + leak audit
|
||||
pre.012 deterministic integration tests + frontend security checks + Devnet smoke opt-in + compliance
|
||||
pre.013 README/USAGE/docs/graphs + dependency audit + production Tauri build candidate + prompt 0.2.7
|
||||
rel.001 publication stable stricte
|
||||
```
|
||||
|
||||
Le plan détaillé est `docs/plans/013-V0_2_6_WALLET_DESK_PLAN.md`.
|
||||
|
||||
## Fichiers ajoutés
|
||||
|
||||
```text
|
||||
docs/plans/013-V0_2_6_WALLET_DESK_PLAN.md
|
||||
deltas/0.2.6/pre.001.md
|
||||
```
|
||||
|
||||
## Fichiers modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
ROADMAP.md
|
||||
docs/000-README.md
|
||||
docs/plans/000-README.md
|
||||
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
|
||||
```
|
||||
|
||||
## Fichiers volontairement inchangés
|
||||
|
||||
```text
|
||||
CHANGELOG.md
|
||||
.env.example
|
||||
config/**
|
||||
crates/**
|
||||
docs/architecture/**
|
||||
docs/formats/**
|
||||
docs/validation/**
|
||||
```
|
||||
|
||||
`std.wallet`, le composite et la crate Tauri sont planifiés mais non créés dans le gate documentaire.
|
||||
|
||||
## Version technique
|
||||
|
||||
Conformément à `VERSION_WORKFLOW.md`, le non-fix prerelease ouvre :
|
||||
|
||||
```text
|
||||
workspace.package.version = 0.2.6-pre.1
|
||||
```
|
||||
|
||||
L'identifiant de commit reste :
|
||||
|
||||
```text
|
||||
v0.2.6-pre.001
|
||||
```
|
||||
|
||||
Aucun tag Git n'est créé avant la release stable finale.
|
||||
|
||||
## Validations exécutées avant modification
|
||||
|
||||
- archive stable `v0.2.5` fournie extraite et auditée ;
|
||||
- documents internes obligatoires relus ;
|
||||
- APIs Config/Wallet/Transport/Logging/Config Desk réauditées ;
|
||||
- archive bot3 inspectée uniquement comme référence historique ;
|
||||
- `python3 scripts/audit_rust_workspace_rules.py` exécuté sur la base stable : `General Rust rule audit: clean`, `KSP workspace Rust rule audit: clean` ;
|
||||
- le même audit structurel réexécuté sur l’état candidat `pre.001` après matérialisation : `General Rust rule audit: clean`, `KSP workspace Rust rule audit: clean` ;
|
||||
- audit externe Tauri/frontend actuel réalisé.
|
||||
|
||||
## Validations tentées mais impossibles dans le sandbox
|
||||
|
||||
Le binaire `cargo` n'est pas installé dans le sandbox. Les trois commandes suivantes ont été tentées et ont échoué avec code `127` :
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets
|
||||
```
|
||||
|
||||
Aucune de ces commandes n'est déclarée réussie.
|
||||
|
||||
## Validation opérateur requise avant commit
|
||||
|
||||
Après application du delta :
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets
|
||||
```
|
||||
|
||||
Comme `pre.001` ne crée aucune crate/frontend, aucun `npm` ni build Tauri n'est requis dans cette tranche.
|
||||
|
||||
Le gate `pre.001` n'est fermé qu'après réception de ces preuves opérateur vertes. Aucun travail `pre.002` ne doit être engagé avant ce checkpoint.
|
||||
Reference in New Issue
Block a user