v0.2.12-pre.001
This commit is contained in:
@@ -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.
|
||||
|
||||
197
docs/validation/015-V0_2_12_SOL_PRICES_DESK.md
Normal file
197
docs/validation/015-V0_2_12_SOL_PRICES_DESK.md
Normal 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` à 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`
|
||||
|
||||
```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
|
||||
```
|
||||
Reference in New Issue
Block a user