# Delta `0.2.12-pre.005` — Refresh individuel SOL/USD ## 1. Identité ```text release : 0.2.12 tranche : pre.005 version Cargo : 0.2.12-pre.5 base : 0.2.12-pre.4.fix.2 ``` Le gate opérateur de la base est intégralement propre : audits Rust/Markdown, `cargo check --workspace`, Clippy, `cargo test -p ksp-app-solprices-desk`, `cargo test --workspace` et `cargo tauri dev` passent. ## 2. Scope réalisé `pre.005` branche le premier chemin réseau explicite de SOL Prices Desk sans élargir la surface Off-chain Transport : ```text refresh individuel par provider_id opaque oui MarketPriceService::refresh réutilisé directement nouvel adapter/provider non mutex présentation tenu pendant I/O non état loading mémoire backend par ligne succès nouvelle observation exacte mémorisée outcome sans observation ancienne observation réussie conservée availability / retry projection du registry Off-chain commande Tauri refresh_market_price oui refresh many / all non, réservé à pre.006 polling / auto-refresh non ``` Le DTO de ligne existant reste lossless : prix et timestamps sont toujours des chaînes exactes. Aucune valeur `f64` n'est introduite. ## 3. Frontend La table reçoit une colonne `Action` et un bouton `Refresh` par provider. Pendant l'appel, la ligne est localement affichée `loading` et le contrôle est désactivé ; la réponse backend remplace ensuite uniquement la ligne ciblée. Le logging suit le contrat commun des Desks : ```text clic Refresh debug requête IPC debug fin IPC trace application de la row trace échec warn ``` Seul le `provider_id` opaque peut accompagner ces événements. Aucun prix, payload provider, credential, header ou URL n'est journalisé. ## 4. Tests/canaris Les canaris de la crate évoluent pour vérifier : - présence du seul `refresh_market_price` et absence des refresh many/all ; - centralisation Tauri dans `tauri.rs` ; - absence de `reqwest`/`fetch`/persistance navigateur ; - conservation de la dernière observation lorsqu'un outcome ne produit aucun nouveau prix ; - remise à `loading = false` pour un provider non éligible sans dispatch réseau ; - logging frontend du clic et de l'IPC sans valeurs métier. ## 5. Hors scope confirmé ```text refresh selected/many/all scheduling/polling consensus/fallback provider prix canonique KSP valorisation USD Wallet persistance Config/Store/browser ``` ## 6. Gate À exécuter par l'opérateur : ```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-solprices-desk cargo test --workspace (cd crates/ksp-app-solprices-desk && cargo tauri dev) ```