v0.2.12-pre.008-fix.002

This commit is contained in:
2026-08-27 15:18:34 +02:00
parent fe46cbe3bd
commit f0493df09e
13 changed files with 248 additions and 38 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/019-V0_2_12_SOL_PRICES_DESK_PLAN.md -->
<!-- version: 15 -->
<!-- version: 16 -->
# Plan `0.2.12` — SOL Prices Desk + intégration prix Wallet Desk
@@ -555,15 +555,21 @@ Finalisation de la table responsive sans changer le contrat de dispatch : résum
### `pre.008` — Intégration Wallet minimale + recalibrage de clôture
**Statut : implémenté ; corrigé par `pre.008-fix.001`, gate opérateur à confirmer.**
**Statut : réalisé ; corrigé par `pre.008-fix.001` puis `pre.008-fix.002`, gate opérateur final à confirmer.**
Absorption de l'ancien couloir Wallet `pre.009``pre.011` dans une seule tranche : ajout `offchain_transport/public_keyless` au composite Wallet, runtime Off-chain auxiliaire, `refresh_all` lors de `refresh_wallet_balance`, moyenne SOL/USD backend sans `f64`, `WalletBalanceDto.sol_usd_average` et une seule case UI `SOL/USD moyen`/`N.A.`. Aucun panneau provider, aucune command prix Wallet, aucun provider ID frontend et aucune valorisation USD du solde. La tranche réconcilie également le présent forecast avec cette réduction de scope.
Absorption de l'ancien couloir Wallet `pre.009``pre.011` dans une seule tranche : ajout `offchain_transport/public_keyless` au composite Wallet, runtime Off-chain auxiliaire, `refresh_all` lors de `refresh_wallet_balance`, moyenne SOL/USD backend sans `f64` et projection compacte dans Wallet Desk. La correction `fix.002` complète le besoin opérateur réellement attendu : `WalletBalanceDto` expose également un équivalent USD exact calculé côté Rust à partir des lamports et de la moyenne du refresh courant ; Dashboard et Details affichent le prix moyen et l'équivalent ou `N.A.`. Aucun panneau provider, aucune command prix Wallet et aucun provider ID frontend ne sont ajoutés. La tranche réconcilie également le forecast avec cette réduction de scope.
#### `pre.008-fix.001` — Correction du canari desktop et Clippy de la moyenne
**Statut : réalisé ; gate opérateur technique partiellement PASS, interrompu par un canari historique de version.**
Le premier gate de `pre.008` confirme `cargo check --workspace` mais révèle deux défauts purement techniques : des littéraux Rust non échappés dans le nouveau canari `desktop_contract.rs`, qui empêchent `cargo fmt` et les targets de test de parser le fichier, et un warning Clippy `manual_is_multiple_of` dans le formateur décimal Wallet. Le fix remplace les littéraux fragiles par des raw strings Rust et applique `u128::is_multiple_of(10)`. Son gate confirme ensuite `fmt`, audits, `check` et Clippy, puis s'arrête sur le canari `pre_018_packaged_runtime_bundles_config_resources_and_keeps_wallet_desk_version_coherent`, encore couplé à une version littérale dans le HTML. Le runtime Tauri et le refresh balance/prix fonctionnent.
#### `pre.008-fix.002` — Équivalent USD, projection Details et version desktop dynamique
**Statut : implémenté ; gate opérateur à confirmer.**
Le premier gate de `pre.008` confirme `cargo check --workspace` mais révèle deux défauts purement techniques : des littéraux Rust non échappés dans le nouveau canari `desktop_contract.rs`, qui empêchent `cargo fmt` et les targets de test de parser le fichier, et un warning Clippy `manual_is_multiple_of` dans le formateur décimal Wallet. Le fix remplace les littéraux fragiles par des raw strings Rust et applique `u128::is_multiple_of(10)`. Aucune logique de moyenne, aucun appel Off-chain, aucun DTO ni aucune UI n'est modifié.
Correction du dernier écart fonctionnel de la tranche : le refresh produisait bien une moyenne SOL/USD mais elle n'était visible que dans le résumé Dashboard, tandis que Details n'affichait ni cette moyenne ni la valeur USD équivalente de la balance. `WalletBalanceDto.sol_usd_equivalent` est désormais calculé côté Rust sans flottant, à partir des lamports et de `sol_usd_average`, avec arrondi half-up à huit décimales maximum ; l'UI rend moyenne et équivalent dans Dashboard et Details, ou `N.A.` si le prix auxiliaire est indisponible. Le badge statique `0.2.6` est remplacé par `RuntimeStatusDto.application_version`, et le canari packaging vérifie ce binding version-neutral au lieu d'exiger la version courante en littéral dans `main.html`.
### `pre.009` — Hardening transversal + gate technique/live final

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/015-V0_2_12_SOL_PRICES_DESK.md -->
<!-- version: 14 -->
<!-- version: 15 -->
# Validation `0.2.12` — SOL Prices Desk + intégration Wallet Desk
@@ -586,9 +586,10 @@ getBalance + refresh_all lancés dans l
observations prises pour moyenne uniquement succès du refresh courant
moyenne backend, aucune conversion f64, 8 décimales max
WalletBalanceDto.sol_usd_average Option<String>
UI Wallet une case SOL/USD moyen / N.A.
WalletBalanceDto.sol_usd_equivalent Option<String>, calcul exact backend
UI Wallet moyenne + équivalent dans Dashboard/Details, sinon N.A.
provider_id / URL / credential / command prix dans frontend absent
valorisation balance SOL en USD absente
calcul de valorisation frontend / f64 absent
WalletSession / VIEW / OWNER / secrets inchangés
```
@@ -615,16 +616,60 @@ cargo check --workspace PASS
cargo clippy --workspace --all-targets FAIL — desktop_contract.rs + manual_is_multiple_of
```
Le correctif attendu est strictement mécanique :
`pre.008-fix.001` corrige ces deux défauts mécaniques. Son gate opérateur du `27 août 2026` donne ensuite :
```text
desktop_contract.rs raw strings Rust valides
wallet_balance.rs coefficient.is_multiple_of(10)
version 0.2.12-pre.8.fix.1
logique moyenne / Off-chain / DTO / frontend inchangée
cargo fmt --all PASS
python3 scripts/audit_rust_workspace_rules.py PASS
python3 scripts/audit_markdown_tables.py README.md ... deltas PASS
cargo check --workspace PASS
cargo clippy --workspace --all-targets PASS
cargo test -p ksp-app-wallet-desk FAIL — 1 canari desktop historique
cargo test --workspace NOT RUN après l'échec ciblé
cargo tauri dev Wallet Desk PASS
```
Gate opérateur à rejouer après application :
Le test ciblé passe `61` unit tests, `3` tests de composition et `18/19` tests `desktop_contract`. L'unique échec est :
```text
pre_018_packaged_runtime_bundles_config_resources_and_keeps_wallet_desk_version_coherent
assertion failed: main.contains(packaged_version)
```
Le runtime manuel confirme en parallèle que le chemin métier est opérationnel :
```text
provider_count=8
observed_provider_count=6
average_available=true
sol_usd_average_available=true
getBalance succès
cargo tauri dev succès
```
Deux écarts restent donc à corriger dans `pre.008-fix.002` : le badge principal est encore figé à `0.2.6`, et la vue Details ne montre pas l'information prix auxiliaire. La demande opérateur précise en outre que l'équivalent USD de la balance doit être visible.
## 26. Gate `0.2.12-pre.008-fix.002` — équivalent USD et version dynamique
Le correctif attendu reste dans la responsabilité Wallet condensée de `pre.008` :
```text
WalletBalanceDto.sol_usd_average conservé
WalletBalanceDto.sol_usd_equivalent ajouté, Option<String>
source de l'équivalent lamports + moyenne du refresh courant
calcul Rust/u128, aucun f64/f32/JS
arrondi équivalent half-up, 8 décimales max
prix auxiliaire indisponible moyenne N.A. + équivalent N.A.
balance SOL autoritative inchangée
Dashboard moyenne + équivalent
Details moyenne + équivalent
badge 0.2.6 statique supprimé
version affichée RuntimeStatusDto.application_version
canari packaging version-neutral, vérifie le binding dynamique
provider_id / URL / credential / command prix Wallet absent
```
Gate opérateur à rejouer :
```bash
cargo fmt --all
@@ -636,4 +681,3 @@ cargo test -p ksp-app-wallet-desk
cargo test --workspace
(cd crates/ksp-app-wallet-desk && cargo tauri dev)
```