4.1 KiB
Delta 0.2.12-pre.006 — Refresh selected/many/all SOL/USD
1. Identité
release : 0.2.12
tranche : pre.006
version Cargo : 0.2.12-pre.6
base : 0.2.12-pre.5.fix.1
Le gate opérateur de la base est propre : audits Rust/Markdown, cargo check --workspace, Clippy, cargo test -p ksp-app-solprices-desk et cargo test --workspace passent.
2. Scope réalisé
pre.006 complète les actions manuelles du SOL Prices Desk sans ajouter de scheduler consommateur :
refresh individuel conservé
refresh selected/many MarketPriceService::refresh_many
refresh all MarketPriceService::refresh_all
ordre selected ordre courant des rows / requête
ordre all ordre stable provider-id Off-chain
DTO batch input IDs opaques uniquement
DTO batch result rows + requested_count/refreshed_count
cooldown/retry registry Off-chain, aucune réinterprétation app
polling/auto-refresh non
fallback/consensus/moyenne non
3. In-flight et atomicité
Avant chaque opération, le backend valide la sélection complète sous le mutex de présentation :
- doublons interdits ;
- IDs inconnus interdits ;
- provider déjà
loadinginterdit ; - aucune ligne n'est marquée
loadingavant la fin de cette validation globale.
Après validation, toutes les lignes concernées passent loading = true, puis le mutex est relâché avant l'appel async au service. En cas d'erreur structurelle du service, les flags loading sont nettoyés. Les outcomes réussis ou non éligibles sont appliqués dans l'ordre retourné par Off-chain Transport et conservent la dernière observation réussie lorsqu'aucune nouvelle observation n'est produite.
4. Frontend et Logging
La vue Prices ajoute :
checkbox par ligne
compteur selected
Refresh selected
Refresh all
Les IDs sélectionnés sont reconstruits dans l'ordre courant des rows avant l'IPC. Les contrôles batch sont désactivés lorsqu'une opération visible est déjà loading.
Instrumentation :
changement de sélection debug
clic Refresh selected debug + selectedCount
clic Refresh all debug + providerCount
IPC request/completion debug / trace via invokeKsp
application résultat batch trace + requested/refreshed counts
échec warn
Aucun prix, payload provider, URL, header, credential ou DTO complet n'est sérialisé dans les logs.
5. Canaris
La tranche rend les canaris historiques évolutifs puis ajoute des preuves dédiées pre.006 :
- le refresh individuel reste présent sans interdire les surfaces futures de sa propre release ;
#[tauri::command]etgenerate_handler!restent centralisés danstauri.rs;- exactement sept commandes Tauri sont attendues dans le Desk à cette tranche ;
refresh_manyetrefresh_allsont appelés directement sur le service générique ;- doublons et conflits
in_flightne provoquent aucune mutation partielle ; - aucun
setInterval,setTimeout,requestAnimationFrameoutokio::time::sleepn'est ajouté au chemin prix.
6. Hors scope confirmé
DataTable/polish final pre.007
hardening/package final pre.008
Wallet Desk prices pre.009+
auto-refresh OUT 0.2.12
prix canonique/fallback/consensus OUT 0.2.12
valorisation USD Wallet OUT 0.2.12
7. Gate
À exécuter par l'opérateur :
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)