v0.2.12-pre.001

This commit is contained in:
2026-08-26 20:41:45 +02:00
parent db1f8d4a53
commit 9a7eda1aa6
8 changed files with 899 additions and 12 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/000-README.md -->
<!-- version: 26 -->
<!-- version: 27 -->
# Validations KSP
@@ -22,4 +22,5 @@ Documents :
- [`011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md`](011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md) — matrice finale validée de la release stable `0.2.8`, ouverte par `pre.001`, consolidée jusquà `pre.011` puis publiée par `rel.001` : Helius `account/logs/program/root/signature/slot/slotsUpdates + transaction`, `block/vote` absents, heartbeat provider, sécurité/redaction, lifecycle adversarial, non-régressions HTTP/WS, stratégie smoke live et graphes Cargo finaux.
- [`012-V0_2_9_YELLOWSTONE_GRPC.md`](012-V0_2_9_YELLOWSTONE_GRPC.md) — matrice finale de la release stable `0.2.9` : service Geyser courant, `Subscribe` standard, 7 unary, filtres/updates, dépendances/licence, replay/backpressure, Config V3 et smoke PublicNode Mainnet/Testnet.
- [`013-V0_2_10_ORBITFLARE_YELLOWSTONE_GRPC.md`](013-V0_2_10_ORBITFLARE_YELLOWSTONE_GRPC.md) — matrice finale de la release stable `0.2.10` : Free Devnet, auth `x-token`, endpoint security, heartbeat standard, Config V3, smoke live `Slot + Ping` et invariant N1/N2 immuable.
- [`014-V0_2_11_OFFCHAIN_PRICE_TRANSPORT.md`](014-V0_2_11_OFFCHAIN_PRICE_TRANSPORT.md) — matrice active ouverte par `0.2.11-pre.001` : SOL/USD multi-provider, `reqwest` sans SDK provider, numeric safety, rate limiting/availability, Config capability-aware, DexScreener pair explicite et frontière HID future.
- [`014-V0_2_11_OFFCHAIN_PRICE_TRANSPORT.md`](014-V0_2_11_OFFCHAIN_PRICE_TRANSPORT.md) — matrice historique clôturée de `0.2.11` : SOL/USD multi-provider, numeric safety, rate limiting/availability, Config capability-aware et smoke keyless final `7/7`.
- [`015-V0_2_12_SOL_PRICES_DESK.md`](015-V0_2_12_SOL_PRICES_DESK.md) — matrice active ouverte par `0.2.12-pre.001` : screen/features, DTO/commands, Config/composite, frontières provider-neutral, sécurité, Wallet integration, packaging Tauri et gates live/build.

View File

@@ -0,0 +1,197 @@
<!-- file: docs/validation/015-V0_2_12_SOL_PRICES_DESK.md -->
<!-- version: 1 -->
# 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 :
```text
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` à lentré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 dIDs 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`
```text
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 :
```text
pre.013 gate technique/live + builds finaux
pre.014 réconciliation documentaire finale
pre.015 prompt suivant + CHANGELOG + ROADMAP uniquement
rel.001 publication stable
```