v0.2.12-pre.008-fix.001
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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("));
|
||||
|
||||
70
deltas/0.2.12/pre.008-fix.001.md
Normal file
70
deltas/0.2.12/pre.008-fix.001.md
Normal 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)
|
||||
```
|
||||
@@ -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é.**
|
||||
|
||||
@@ -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)
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user