14 KiB
14 KiB
Validation 0.2.12 — SOL Prices Desk + intégration Wallet Desk
1. Objet
Cette matrice est ouverte par 0.2.12-pre.001. Elle suit la création de ksp-app-solprices-desk, sa composition Config/Off-chain Transport puis l'intégration provider-neutral dans Wallet Desk.
Statuts utilisés :
PASS preuve acquise
PENDING attendu dans une tranche ultérieure
OUT explicitement hors scope
NOT RUN commande non exécutée dans le contexte indiqué
2. Gate 0.2.12-pre.001
| Critère | Statut | Preuve |
|---|---|---|
archive stable v0.2.11 utilisée |
PASS | archive Gitea opérateur fournie |
workspace.package.version = 0.2.11 à l’entrée |
PASS | inspection Cargo.toml |
deltas/0.2.11/rel.001.md présent |
PASS | inspection archive |
prompt 017-V0_2_12_START_PROMPT.md présent |
PASS | inspection archive |
metadata .git disponible |
OUT | archive source sans .git; tag non revérifiable localement |
| baseline Cargo stable | PASS | preuve opérateur 2026-08-26: fmt/check/clippy/test workspace verts |
| audits Python sandbox sur archive | PASS | Rust rules clean; Markdown tables clean avant modification |
| règles/architecture obligatoires relues | PASS | audit pre.001 + plan 019 |
| surface Off-chain réelle inventoriée | PASS | plan 019 sections 3/9/10 |
| surface Config/composite/packaging inventoriée | PASS | plan 019 section 4 |
| gabarits Config/Wallet Desk inventoriés | PASS | plan 019 section 5 |
| sources officielles Tauri/TS-RS réauditées | PASS | plan 019 section 6 |
| screen map Price Desk + Wallet | PASS | plan 019 section 8 |
| DTO/command map | PASS | plan 019 sections 9/10 |
| état de présentation décidé | PASS | backend mémoire uniquement; plan 019 section 7 |
| Config/composite map | PASS | nouveau composite + extension Wallet; plan 019 section 4 |
| threat model desktop | PASS | plan 019 section 16 |
| Wallet integration map | PASS | plan 019 section 12 |
| auto-refresh | OUT | hors scope confirmé |
| valorisation USD du solde | OUT | aucun prix canonique; hors scope confirmé |
| forecast souple recalibré | PASS | 15 prereleases + rel; plan 019 section 19 |
| scope clôturable | PASS | pas de redécoupage requis avant pre.002 |
code/scaffold fonctionnel ajouté en pre.001 |
OUT | interdit par le gate |
3. Screen/feature matrix
| Surface | Contrat | Statut |
|---|---|---|
| splash Price Desk | lifecycle KSP commun | PENDING |
| main shell Price Desk | header/navigation KSP | PENDING |
| table providers | registry provider-neutral, ordre stable | PENDING |
| prix exact | String issue de MarketPriceDecimal |
PENDING |
| availability/fraîcheur | état générique + timestamps réels | PENDING |
| refresh row | MarketPriceService::refresh |
PENDING |
| refresh selected/many | MarketPriceService::refresh_many |
PENDING |
| refresh all | MarketPriceService::refresh_all |
PENDING |
| Diagnostics | profils/counts sûrs seulement | PENDING |
| Wallet price panel | Dashboard compact provider-neutral | PENDING |
| auto-refresh | aucun scheduler/polling | OUT |
| Wallet USD valuation | aucun prix canonique | OUT |
4. DTO/command matrix
| Contrat | Entrée/sortie sûre | Statut |
|---|---|---|
MarketPriceRuntimeStatusDto |
profiles/counts sans secret | PENDING |
MarketPriceProviderRowDto |
ID/display/pair/semantics/auth/availability/price/timestamps/retry | PENDING |
MarketPriceRefreshRequestDto |
provider_id opaque seulement | PENDING |
MarketPriceRefreshManyRequestDto |
liste bornée d’IDs opaques | PENDING |
MarketPriceRefreshResultDto |
rows/outcome classifiés | PENDING |
| runtime/list/refresh/many/all commands | aucun URL/header/API key/body | PENDING |
| TS-RS exports | bindings générés non versionnés | PENDING |
| provider-specific type dans IPC | interdit | OUT |
prix f64 comme vérité IPC |
interdit | OUT |
5. Config/composite matrix
| Contrat | Valeur attendue | Statut |
|---|---|---|
| Price Desk composite file | config/composite.ksp-app-solprices-desk.json |
PENDING |
| Price Desk file_id | cfg.composite.ksp-app-solprices-desk |
PENDING |
| schema | schema.composite existant |
PENDING |
| components | logging, offchain_transport |
PENDING |
| default profile | public_keyless |
PENDING |
| optional profile | all_free |
PENDING |
| test profile | tests -> offchain public_keyless |
PENDING |
| Wallet composite | ajoute offchain public_keyless à devnet/temporary/tests |
PENDING |
| registry/resource count | 11 après nouveau composite | PENDING |
| registry + resources atomiques | Config + Config Desk + Wallet Desk + Price Desk même tranche | PENDING |
| nouveau schema Config | inutile | OUT |
modification std.offchain_transport |
pas de lacune identifiée | OUT |
6. Provider-agnostic boundary matrix
| Canari | Attendu | Statut |
|---|---|---|
| app dépend du service/registry générique | oui | PENDING |
branche coingecko/kraken/etc. dans app |
aucune | PENDING |
| SDK provider dans app | aucun | PENDING |
| reqwest/provider fetch frontend | aucun | PENDING |
| endpoint/header/API key dans DTO | aucun | PENDING |
| rate limiter/sleep/retry provider dans app | aucun | PENDING |
| refresh many ordre service | préservé | PENDING |
| semantics provider-neutral visibles | oui, sans fusion | PENDING |
| prix canonique/fallback/moyenne | aucun | OUT |
7. Security matrix
| Risque/canari | Attendu | Statut |
|---|---|---|
| URL arbitraire depuis frontend | impossible par contrat command | PENDING |
| extraction API key/header | aucune projection/log | PENDING |
| provider_id inconnu | erreur KSP sûre | PENDING |
| batch duplicate/oversized | rejet avant dispatch | PENDING |
| refresh spam | limites/cooldown Off-chain toujours actifs | PENDING |
| stale observation | timestamps/état distingués | PENDING |
| double-click race | in-flight/order contrôlés | PENDING |
| close pendant refresh | aucune persistance/sûreté frontend requise | PENDING |
| CWD/resource confusion | canaris propres à chaque app | PENDING |
| Price Desk capabilities | core:default, tracing:default uniquement |
PENDING |
| plugin dialog Price Desk | absent | PENDING |
| frontend sensitive logging | action/ID/count/code seulement | PENDING |
| Wallet VIEW/OWNER/secrets | non-régression | PENDING |
8. Wallet integration matrix
| Contrat | Attendu | Statut |
|---|---|---|
| Cargo dependency | Wallet Desk -> ksp-offchain-transport-lib |
PENDING |
| Config component | Wallet composite -> cfg.std.offchain_transport/public_keyless |
PENDING |
| runtime | ResolvedOffchainTransportConfig -> MarketPriceService | PENDING |
| commands/DTO | provider-neutral | PENDING |
| UI | petit panneau Dashboard | PENDING |
| balance HTTP On-chain | inchangée | PENDING |
| WalletSession VIEW/OWNER | inchangée | PENDING |
| Wallet secret projections | aucune nouvelle | PENDING |
| USD balance multiplication | hors scope | OUT |
9. Tauri/package matrix
| Contrat | Attendu | Statut |
|---|---|---|
| Price Desk ports | 1434/1435 strict | PENDING |
| windows | splash + main | PENDING |
| Rust package | lib + bin; main.rs mince |
PENDING |
| commands | centralisées tauri.rs |
PENDING |
| frontendDist | hors source, path Price Desk dédié | PENDING |
| hooks | npm dev/build cwd crate | PENDING |
| backend cross-app | aucune référence Wallet par erreur | PENDING |
| resources | registry complet packagé | PENDING |
| bundle | targets/icons cohérents | PENDING |
| Tauri production build Price Desk | crate-local PASS attendu | PENDING |
| Tauri production build Wallet Desk | crate-local PASS attendu | PENDING |
10. Gates techniques/live finaux
| Gate | Statut |
|---|---|
cargo fmt --all |
PENDING |
python3 scripts/audit_rust_workspace_rules.py |
PENDING |
python3 scripts/audit_markdown_tables.py ... deltas/0.2.12 |
PENDING |
cargo check --workspace |
PENDING |
cargo clippy --workspace --all-targets |
PENDING |
cargo test --workspace |
PENDING |
| Price Desk functional dev path | PENDING |
| Wallet Desk functional price path | PENDING |
| keyless app-composition live smoke | PENDING |
Price Desk cargo tauri build |
PENDING |
Wallet Desk cargo tauri build |
PENDING |
Le live 0.2.12 valide la composition applicative générique; il ne répète pas l'audit provider 7/7 de 0.2.11 sans raison.
11. Validations exécutées pour pre.001
inspection archive/version/rel/prompt PASS
python3 scripts/audit_rust_workspace_rules.py PASS
python3 scripts/audit_markdown_tables.py README.md ... crates PASS
sources officielles Tauri/TS-RS PASS audit
cargo fmt/check/clippy/test dans sandbox NOT RUN — cargo indisponible
cargo fmt/check/clippy/test opérateur sur base stable fournie PASS
Après écriture du présent delta, les audits Rust structurel et Markdown ont été rejoués avec deltas/0.2.12 inclus et sont propres.
12. Forecast de clôture
Les responsabilités finales restent séparées :
pre.013 gate technique/live + builds finaux
pre.014 réconciliation documentaire finale
pre.015 prompt suivant + CHANGELOG + ROADMAP uniquement
rel.001 publication stable