v0.2.12-pre.008-fix.001

This commit is contained in:
2026-08-27 14:46:41 +02:00
parent f1e365ec97
commit fe46cbe3bd
8 changed files with 125 additions and 15 deletions

View File

@@ -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"

View File

@@ -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",

View File

@@ -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;
}

View File

@@ -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": {

View File

@@ -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("));

View File

@@ -0,0 +1,70 @@
<!-- file: deltas/0.2.12/pre.008-fix.001.md -->
<!-- version: 1 -->
# 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)
```

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/019-V0_2_12_SOL_PRICES_DESK_PLAN.md -->
<!-- version: 14 -->
<!-- version: 15 -->
# 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é.**

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/015-V0_2_12_SOL_PRICES_DESK.md -->
<!-- version: 13 -->
<!-- version: 14 -->
# 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)
```