Files
2026-08-27 14:41:08 +02:00

5.3 KiB

Delta 0.2.12-pre.008 — intégration Wallet minimale et recalibrage de clôture

Base

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 :

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 :

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

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

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..