Files
khadhroony-solana-project/deltas/0.2.12/pre.006.md
2026-08-27 11:27:39 +02:00

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à loading interdit ;
  • aucune ligne n'est marquée loading avant 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] et generate_handler! restent centralisés dans tauri.rs ;
  • exactement sept commandes Tauri sont attendues dans le Desk à cette tranche ;
  • refresh_many et refresh_all sont appelés directement sur le service générique ;
  • doublons et conflits in_flight ne provoquent aucune mutation partielle ;
  • aucun setInterval, setTimeout, requestAnimationFrame ou tokio::time::sleep n'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)