From fe46cbe3bd56ca7038257f5a2539d46b72213118 Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Thu, 27 Aug 2026 14:46:41 +0200 Subject: [PATCH] v0.2.12-pre.008-fix.001 --- Cargo.toml | 4 +- crates/ksp-app-wallet-desk/package.json | 2 +- .../ksp-app-wallet-desk/src/wallet_balance.rs | 4 +- crates/ksp-app-wallet-desk/tauri.conf.json | 2 +- .../tests/desktop_contract.rs | 12 ++-- deltas/0.2.12/pre.008-fix.001.md | 70 +++++++++++++++++++ .../plans/019-V0_2_12_SOL_PRICES_DESK_PLAN.md | 10 ++- .../validation/015-V0_2_12_SOL_PRICES_DESK.md | 36 +++++++++- 8 files changed, 125 insertions(+), 15 deletions(-) create mode 100644 deltas/0.2.12/pre.008-fix.001.md diff --git a/Cargo.toml b/Cargo.toml index 2795c76..686f517 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 295 +# version: 296 [workspace] resolver = "3" members = ["crates/ksp-app-config-desk", "crates/ksp-app-solprices-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib", "crates/ksp-offchain-transport-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-wallet-lib"] [workspace.package] -version = "0.2.12-pre.8" +version = "0.2.12-pre.8.fix.1" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/crates/ksp-app-wallet-desk/package.json b/crates/ksp-app-wallet-desk/package.json index 6ea8aa4..30532d5 100644 --- a/crates/ksp-app-wallet-desk/package.json +++ b/crates/ksp-app-wallet-desk/package.json @@ -1,7 +1,7 @@ { "name": "ksp-app-wallet-desk", "private": true, - "version": "0.2.12-pre.8", + "version": "0.2.12-pre.8.fix.1", "type": "module", "scripts": { "dev": "vite", diff --git a/crates/ksp-app-wallet-desk/src/wallet_balance.rs b/crates/ksp-app-wallet-desk/src/wallet_balance.rs index e802e8d..cfa5850 100644 --- a/crates/ksp-app-wallet-desk/src/wallet_balance.rs +++ b/crates/ksp-app-wallet-desk/src/wallet_balance.rs @@ -1,5 +1,5 @@ // file: crates/ksp-app-wallet-desk/src/wallet_balance.rs -// version: 2 +// version: 3 //! Safe Wallet balance projection produced by the typed HTTP Transport path. @@ -112,7 +112,7 @@ pub(crate) fn average_sol_usd_prices(prices: &[ksp_offchain_transport_lib::Marke } fn format_scaled_decimal(mut coefficient: u128, mut scale: u8) -> String { - while scale > 0 && coefficient % 10 == 0 { + while scale > 0 && coefficient.is_multiple_of(10) { coefficient /= 10; scale -= 1; } diff --git a/crates/ksp-app-wallet-desk/tauri.conf.json b/crates/ksp-app-wallet-desk/tauri.conf.json index 36a7c68..77d67c2 100644 --- a/crates/ksp-app-wallet-desk/tauri.conf.json +++ b/crates/ksp-app-wallet-desk/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "KSP Wallet Desk", - "version": "0.2.12-pre.8", + "version": "0.2.12-pre.8.fix.1", "identifier": "com.sasedev.ksp-app-wallet-desk", "build": { "beforeDevCommand": { diff --git a/crates/ksp-app-wallet-desk/tests/desktop_contract.rs b/crates/ksp-app-wallet-desk/tests/desktop_contract.rs index 18f5abc..b36a70e 100644 --- a/crates/ksp-app-wallet-desk/tests/desktop_contract.rs +++ b/crates/ksp-app-wallet-desk/tests/desktop_contract.rs @@ -1,5 +1,5 @@ // file: crates/ksp-app-wallet-desk/tests/desktop_contract.rs -// version: 25 +// version: 26 //! Desktop build, shell and Config-status contract audits for Wallet Desk. @@ -511,18 +511,18 @@ fn v0_2_12_pre_008_wallet_balance_refresh_adds_one_auxiliary_sol_usd_average_onl let balance = read_text(root.join("src/wallet_balance.rs").as_path()); let main = read_text(root.join("frontend/ts/main.ts").as_path()); let html = read_text(root.join("frontend/main.html").as_path()); - assert!(manifest.contains("ksp-offchain-transport-lib = { path = "../ksp-offchain-transport-lib" }")); - assert!(composite.contains(""component_id": "offchain_transport"")); - assert!(composite.contains(""profile_id": "public_keyless"")); + assert!(manifest.contains(r#"ksp-offchain-transport-lib = { path = "../ksp-offchain-transport-lib" }"#)); + assert!(composite.contains(r#""component_id": "offchain_transport""#)); + assert!(composite.contains(r#""profile_id": "public_keyless""#)); assert!(state.contains("initialize_offchain_transport")); assert!(state.contains("refresh_sol_usd_average")); assert!(state.contains("tokio::join!")); assert!(state.contains("refresh_all().await")); assert!(balance.contains("sol_usd_average")); assert!(balance.contains("average_sol_usd_prices")); - assert!(html.contains("id="currentWalletSolUsdAverage"")); + assert!(html.contains(r#"id="currentWalletSolUsdAverage""#)); assert_eq!(html.matches("currentWalletSolUsdAverage").count(), 1); - assert!(main.contains("balance.solUsdAverage ? `${balance.solUsdAverage} USD` : "N.A."")); + assert!(main.contains(r#"balance.solUsdAverage ? `${balance.solUsdAverage} USD` : "N.A.""#)); assert!(!main.contains("refresh_market_price")); assert!(!main.contains("refresh_all_market_prices")); assert!(!main.contains("fetch(")); diff --git a/deltas/0.2.12/pre.008-fix.001.md b/deltas/0.2.12/pre.008-fix.001.md new file mode 100644 index 0000000..b9a96bf --- /dev/null +++ b/deltas/0.2.12/pre.008-fix.001.md @@ -0,0 +1,70 @@ + + + +# Delta `0.2.12-pre.008-fix.001` — correction canari desktop et Clippy Wallet + +## Base + +```text +0.2.12-pre.008 +``` + +## Cause + +Le premier gate opérateur de `pre.008` a confirmé les audits KSP et `cargo check --workspace`, mais a révélé deux défauts techniques dans les fichiers nouvellement modifiés : + +- `crates/ksp-app-wallet-desk/tests/desktop_contract.rs` contient plusieurs littéraux Rust avec des guillemets internes non échappés ; `cargo fmt --all` ne peut donc pas parser le fichier et Clippy `--all-targets` échoue sur le même canari ; +- `crates/ksp-app-wallet-desk/src/wallet_balance.rs` déclenche `clippy::manual_is_multiple_of` sur le test `coefficient % 10 == 0`. + +`cargo check --workspace` reste vert parce que ce chemin ne compile pas le test d'intégration fautif. + +## Correctif + +- version workspace : `0.2.12-pre.8.fix.1` ; +- versions npm/Tauri Wallet Desk synchronisées sur `0.2.12-pre.8.fix.1` ; +- les assertions textuelles du canari `v0_2_12_pre_008_wallet_balance_refresh_adds_one_auxiliary_sol_usd_average_only` utilisent désormais des raw strings Rust valides ; +- `coefficient % 10 == 0` devient `coefficient.is_multiple_of(10)` dans le formateur décimal ; +- le plan et la validation enregistrent explicitement ce fix sous `pre.008`. + +## Invariants préservés + +Aucune logique fonctionnelle de `pre.008` n'est modifiée : + +```text +composite Wallet inchangé +OffchainTransportRuntime Wallet inchangé +refresh_wallet_balance inchangé +MarketPriceService::refresh_all inchangé +calcul de moyenne / arrondi inchangé sémantiquement +WalletBalanceDto.sol_usd_average inchangé +frontend SOL/USD moyen / N.A. inchangé +providers / URLs / credentials frontend absents +``` + +Le remplacement par `is_multiple_of(10)` est strictement équivalent pour le `u128` utilisé ici ; il ne change ni l'arrondi ni la canonicalisation de la moyenne. + +## Fichiers modifiés/ajoutés + +```text +Cargo.toml +crates/ksp-app-wallet-desk/package.json +crates/ksp-app-wallet-desk/tauri.conf.json +crates/ksp-app-wallet-desk/src/wallet_balance.rs +crates/ksp-app-wallet-desk/tests/desktop_contract.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-fix.001.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) +``` diff --git a/docs/plans/019-V0_2_12_SOL_PRICES_DESK_PLAN.md b/docs/plans/019-V0_2_12_SOL_PRICES_DESK_PLAN.md index e17bbda..b4d7626 100644 --- a/docs/plans/019-V0_2_12_SOL_PRICES_DESK_PLAN.md +++ b/docs/plans/019-V0_2_12_SOL_PRICES_DESK_PLAN.md @@ -1,5 +1,5 @@ - + # Plan `0.2.12` — SOL Prices Desk + intégration prix Wallet Desk @@ -555,10 +555,16 @@ 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é ; gate opérateur à confirmer.** +**Statut : implémenté ; corrigé par `pre.008-fix.001`, gate opérateur à 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. +#### `pre.008-fix.001` — Correction du canari desktop et Clippy de la moyenne + +**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é. + ### `pre.009` — Hardening transversal + gate technique/live final **Statut : planifié.** diff --git a/docs/validation/015-V0_2_12_SOL_PRICES_DESK.md b/docs/validation/015-V0_2_12_SOL_PRICES_DESK.md index 722f25e..bc1635a 100644 --- a/docs/validation/015-V0_2_12_SOL_PRICES_DESK.md +++ b/docs/validation/015-V0_2_12_SOL_PRICES_DESK.md @@ -1,5 +1,5 @@ - + # Validation `0.2.12` — SOL Prices Desk + intégration Wallet Desk @@ -603,3 +603,37 @@ TypeScript syntax transpile Wallet main.ts PASS cargo fmt/check/clippy/test NOT RUN — cargo indisponible dans le sandbox ``` +## 25. Gate `0.2.12-pre.008-fix.001` — correction compilation des canaris + +Le premier gate opérateur de `pre.008` a produit les résultats suivants : + +```text +cargo fmt --all FAIL — littéraux Rust invalides dans desktop_contract.rs +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 FAIL — desktop_contract.rs + manual_is_multiple_of +``` + +Le correctif attendu est strictement mécanique : + +```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 +``` + +Gate opérateur à rejouer après application : + +```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) +``` +