112 lines
5.3 KiB
Markdown
112 lines
5.3 KiB
Markdown
<!-- file: deltas/0.2.12/pre.008.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta `0.2.12-pre.008` — intégration Wallet minimale et recalibrage de clôture
|
|
|
|
## Base
|
|
|
|
```text
|
|
0.2.12-pre.007
|
|
```
|
|
|
|
Le gate opérateur de `pre.007` est intégralement propre : audits Rust/Markdown, `cargo check --workspace`, Clippy workspace, test ciblé SOL Prices Desk, `cargo test --workspace` et `cargo tauri dev` passent. Le parcours visuel confirme la table provider-neutral et les refresh manuel/selected/all.
|
|
|
|
## Décision opérateur
|
|
|
|
Le périmètre Wallet Desk est réduit : les fonctionnalités avancées de marché restent dans `ksp-offchain-transport-lib` et `ksp-app-solprices-desk`. Wallet Desk n'a besoin que d'une information auxiliaire SOL/USD lors du refresh de balance.
|
|
|
|
Contrat retenu :
|
|
|
|
```text
|
|
Refresh balance existant
|
|
-> getBalance On-chain
|
|
-> refresh_all Off-chain des providers actuellement éligibles
|
|
-> ne garder que les observations réussies du refresh courant
|
|
-> calculer une moyenne SOL/USD backend
|
|
-> afficher une seule case SOL/USD moyen
|
|
-> N.A. si aucune observation n'est disponible
|
|
```
|
|
|
|
Aucune valorisation USD du solde, aucun provider canonique, aucun panneau provider détaillé et aucune nouvelle command prix Wallet ne sont introduits.
|
|
|
|
## Implémentation
|
|
|
|
- version workspace : `0.2.12-pre.8` ;
|
|
- `ksp-app-wallet-desk` dépend désormais directement de `ksp-offchain-transport-lib` ;
|
|
- les trois profils du composite Wallet Desk ajoutent `offchain_transport -> cfg.std.offchain_transport/public_keyless` ;
|
|
- la fixture Config et l'exemple du composite Wallet sont synchronisés ;
|
|
- ajout d'un `OffchainTransportRuntime` Wallet résolu exclusivement via Config ;
|
|
- l'initialisation prix est auxiliaire : un échec Config/Off-chain est journalisé par domain/code sûrs et dégrade la projection vers `N.A.` sans empêcher le Desk de démarrer ;
|
|
- `refresh_wallet_balance` conserve son input vide et orchestre `getBalance` et `MarketPriceService::refresh_all` dans la même opération backend ;
|
|
- la moyenne utilise uniquement les observations réellement produites par le refresh courant ;
|
|
- le calcul n'utilise aucun `f64` et arrondit half-up à huit décimales maximum avant suppression des zéros terminaux ;
|
|
- `WalletBalanceDto` gagne uniquement `sol_usd_average: Option<String>` ;
|
|
- le frontend Wallet affiche une seule case `SOL/USD moyen`, avec `N.A.` en absence de valeur ;
|
|
- aucun `provider_id`, URL, endpoint, credential, payload provider ou command prix ne traverse le frontend Wallet ;
|
|
- le lifecycle WalletSession, VIEW/OWNER, secrets, import/export et la logique `getBalance` existante restent inchangés.
|
|
|
|
## Tests/canaris
|
|
|
|
- moyenne déterministe sur valeurs réalistes ;
|
|
- moyenne entière fractionnaire (`1`, `2` -> `1.5`) sans IEEE-754 ;
|
|
- composite Wallet vérifie le composant Off-chain et sa provenance Composite ;
|
|
- service `public_keyless` construit avec huit entrées provider-neutral ;
|
|
- canari desktop exige exactement une case `currentWalletSolUsdAverage` et aucune surface prix avancée ;
|
|
- sécurité : `refresh_wallet_balance` ne reçoit toujours ni Pubkey, ni endpoint, ni provider ID depuis le frontend ;
|
|
- release compliance reconnaît explicitement `ksp-offchain-transport-lib` comme boundary KSP autorisée.
|
|
|
|
## Recalibrage du forecast
|
|
|
|
Les anciennes tranches Wallet riches et les hardenings séparés ne sont plus justifiés. Le forecast restant devient :
|
|
|
|
```text
|
|
pre.008 intégration Wallet minimale + recalibrage
|
|
pre.009 hardening transversal + gate technique/live + builds finaux
|
|
pre.010 réconciliation documentaire + prompt suivant + CHANGELOG + ROADMAP
|
|
rel.001 publication stable
|
|
```
|
|
|
|
Les responsabilités finales restent présentes ; elles sont fusionnées pour éviter des prereleases artificielles.
|
|
|
|
## Fichiers ajoutés/modifiés
|
|
|
|
```text
|
|
Cargo.toml
|
|
config/composite.ksp-app-wallet-desk.json
|
|
config/examples/composite.ksp-app-wallet-desk.example.json
|
|
crates/ksp-config-lib/unit_tests/fixtures/composite.ksp-app-wallet-desk.json
|
|
crates/ksp-app-wallet-desk/Cargo.toml
|
|
crates/ksp-app-wallet-desk/package.json
|
|
crates/ksp-app-wallet-desk/tauri.conf.json
|
|
crates/ksp-app-wallet-desk/src/app_state.rs
|
|
crates/ksp-app-wallet-desk/src/constants.rs
|
|
crates/ksp-app-wallet-desk/src/lib.rs
|
|
crates/ksp-app-wallet-desk/src/offchain_runtime.rs
|
|
crates/ksp-app-wallet-desk/src/wallet_balance.rs
|
|
crates/ksp-app-wallet-desk/frontend/main.html
|
|
crates/ksp-app-wallet-desk/frontend/ts/main.ts
|
|
crates/ksp-app-wallet-desk/unit_tests/wallet_balance.rs
|
|
crates/ksp-app-wallet-desk/tests/config_composition.rs
|
|
crates/ksp-app-wallet-desk/tests/desktop_contract.rs
|
|
crates/ksp-app-wallet-desk/tests/desktop_security.rs
|
|
crates/ksp-app-wallet-desk/tests/release_compliance.rs
|
|
docs/plans/019-V0_2_12_SOL_PRICES_DESK_PLAN.md
|
|
docs/validation/015-V0_2_12_SOL_PRICES_DESK.md
|
|
deltas/0.2.12/pre.008.md
|
|
```
|
|
|
|
## Gate opérateur attendu
|
|
|
|
```bash
|
|
cargo fmt --all
|
|
python3 scripts/audit_rust_workspace_rules.py
|
|
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.2.12
|
|
cargo check --workspace
|
|
cargo clippy --workspace --all-targets
|
|
cargo test -p ksp-app-wallet-desk
|
|
cargo test --workspace
|
|
(cd crates/ksp-app-wallet-desk && cargo tauri dev)
|
|
```
|
|
|
|
Contrôle manuel : ouvrir un Wallet VIEW/OWNER, lancer `Refresh balance`, vérifier que la balance SOL reste correcte et que `SOL/USD moyen` affiche une valeur si au moins un provider keyless répond, sinon `N.A.`.
|