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-deskdépend désormais directement deksp-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
OffchainTransportRuntimeWallet 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_balanceconserve son input vide et orchestregetBalanceetMarketPriceService::refresh_alldans la même opération backend ;- la moyenne utilise uniquement les observations réellement produites par le refresh courant ;
- le calcul n'utilise aucun
f64et arrondit half-up à huit décimales maximum avant suppression des zéros terminaux ; WalletBalanceDtogagne uniquementsol_usd_average: Option<String>;- le frontend Wallet affiche une seule case
SOL/USD moyen, avecN.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
getBalanceexistante 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_keylessconstruit avec huit entrées provider-neutral ; - canari desktop exige exactement une case
currentWalletSolUsdAverageet aucune surface prix avancée ; - sécurité :
refresh_wallet_balancene reçoit toujours ni Pubkey, ni endpoint, ni provider ID depuis le frontend ; - release compliance reconnaît explicitement
ksp-offchain-transport-libcomme 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..