v0.2.12-pre.004

This commit is contained in:
2026-08-27 10:02:46 +02:00
parent afc50c1e48
commit e7c3379f44
17 changed files with 914 additions and 70 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/019-V0_2_12_SOL_PRICES_DESK_PLAN.md -->
<!-- version: 6 -->
<!-- version: 7 -->
# Plan `0.2.12` — SOL Prices Desk + intégration prix Wallet Desk
@@ -484,21 +484,21 @@ Correction du scaffold pour reprendre réellement les conventions communes Confi
### `pre.003` — Composite Config et bootstrap Off-chain
**Statut : implémenté ; gate opérateur interrompu par un défaut de compilation du canari `config_composition`, corrigé par `pre.003-fix.001`.**
**Statut : réalisé ; gate opérateur de tranche PASS après `pre.003-fix.001`.**
Ajout atomique du composite `cfg.composite.ksp-app-solprices-desk`, de son descriptor registry et des resources packagées nécessaires aux trois Desks concernés, puis bootstrap Config -> Off-chain Transport du nouveau Desk. Le gate exige que le packaging Config reste cohérent ; aucune UI prix n'est ajoutée ici.
#### `pre.003-fix.001` — Correction du canari ConfigEnvironment sans élargissement de contrat
**Statut : implémenté ; gate opérateur à confirmer.**
**Statut : réalisé ; gate opérateur de tranche PASS.**
Correction strictement locale du test `config_composition` : le message d'assertion ne tente plus de formater le `Result<ConfigEnvironment, Error>` en `Debug`. `ConfigEnvironment` reste volontairement sans contrat `Debug`; aucun comportement runtime, composite, provider ou frontend n'est modifié.
### `pre.004` — Runtime prix, registry rows et DTOs
**Statut : planifié.**
**Statut : implémenté ; gate opérateur à confirmer.**
Création du `MarketPriceRuntime` applicatif, projection provider-neutral du registry, DTOs TS-RS et états initiaux/loading/empty. Les providers restent opaques à l'UI et le prix exact traverse l'IPC sous forme de chaîne décimale, jamais comme vérité `f64`.
Création du `MarketPriceRuntime` applicatif, projection provider-neutral du registry, DTOs TS-RS et états initiaux/loading/empty. `list_market_prices` projette les lignes depuis le registry sans dispatch réseau ; l'état de présentation reste uniquement en mémoire backend. Les providers restent opaques à l'UI, le prix exact et les timestamps traversent l'IPC sous forme de chaînes exactes, et aucun refresh n'est encore disponible avant `pre.005`.
### `pre.005` — Refresh individuel
@@ -572,7 +572,7 @@ Préparation du prompt de la release suivante, de `CHANGELOG.md` et de `ROADMAP.
Mécanique de publication stable uniquement, après validation de la dernière prerelease et vérification de la cohérence de release. Aucun défaut fonctionnel ou documentaire ne doit être absorbé par `rel.001`.
Le point le plus risqué reste `pre.003`; son scope est néanmoins borné parce qu'il ne contient aucune UI prix et traite ensemble le seul invariant de packaging transversal. Le scope global reste raisonnablement clôturable dans une session de release KSP : aucun redécoupage n'est requis avant `pre.002`.
Le point de packaging transversal de `pre.003` est désormais fermé. Le prochain risque fonctionnel est borné aux refresh `pre.005`/`pre.006`, sans remettre en cause le découpage souple ni les responsabilités documentaires de clôture.
## 20. Critères de sortie `pre.001`

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/015-V0_2_12_SOL_PRICES_DESK.md -->
<!-- version: 5 -->
<!-- version: 6 -->
# Validation `0.2.12` — SOL Prices Desk + intégration Wallet Desk
@@ -82,10 +82,10 @@ NOT RUN commande non exécutée dans le contexte indiqué
| Price Desk composite file | `config/composite.ksp-app-solprices-desk.json` | PASS |
| Price Desk file_id | `cfg.composite.ksp-app-solprices-desk` | PASS |
| schema | `schema.composite` existant | PASS |
| components | `logging`, `offchain_transport` | PENDING |
| default profile | `public_keyless` | PENDING |
| optional profile | `all_free` | PENDING |
| test profile | `tests` -> offchain `public_keyless` | PENDING |
| components | `logging`, `offchain_transport` | PASS |
| default profile | `public_keyless` | PASS |
| optional profile | `all_free` | PASS |
| test profile | `tests` -> offchain `public_keyless` | PASS |
| Wallet composite | ajoute offchain `public_keyless` à devnet/temporary/tests | PENDING |
| registry/resource count | 11 après nouveau composite | PASS |
| registry + resources atomiques | Config + Config Desk + Wallet Desk + Price Desk même tranche | PASS |
@@ -96,14 +96,14 @@ NOT RUN commande non exécutée dans le contexte indiqué
| 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 |
| app dépend du service/registry générique | oui | PASS |
| branche `coingecko`/`kraken`/etc. dans app | aucune | PASS |
| SDK provider dans app | aucun | PASS |
| reqwest/provider fetch frontend | aucun | PASS |
| endpoint/header/API key dans DTO | aucun | PASS |
| rate limiter/sleep/retry provider dans app | aucun | PASS |
| refresh many ordre service | préservé | PENDING |
| semantics provider-neutral visibles | oui, sans fusion | PENDING |
| semantics provider-neutral visibles | oui, sans fusion | PASS |
| prix canonique/fallback/moyenne | aucun | OUT |
## 7. Security matrix
@@ -121,7 +121,7 @@ NOT RUN commande non exécutée dans le contexte indiqué
| CWD/resource confusion | canaris propres à chaque app | PENDING |
| Price Desk capabilities | `core:default`, `tracing:default` uniquement | PASS |
| plugin dialog Price Desk | absent | PASS |
| frontend sensitive logging | action/ID/count/code seulement | PENDING |
| frontend sensitive logging | action/ID/count/code seulement | PASS |
| Wallet VIEW/OWNER/secrets | non-régression | PENDING |
## 8. Wallet integration matrix
@@ -295,3 +295,42 @@ python3 scripts/audit_markdown_tables.py README.md ... deltas PASS
cargo fmt/check/clippy/test NOT RUN — cargo indisponible dans le sandbox
```
## 17. Gate `0.2.12-pre.004`
La tranche introduit la première projection prix applicative sans effectuer de requête provider :
```text
MarketPriceRuntime backend implémenté
état présentation mémoire backend uniquement
registry -> lignes provider-neutral implémenté
MarketPriceProviderRowDto implémenté
MarketPriceRuntimeStatusDto implémenté
prix exact Option<String>, jamais f64
timestamps observation/retry Option<String> exactes en millisecondes Unix
list_market_prices implémenté, aucun dispatch réseau
états frontend loading / empty / table implémentés
refresh row/many/all absent par contrat pre.004
frontend fetch/localStorage/sessionStorage absent
logging chargement/rendu registry trace sans prix/payload
```
Le gate opérateur précédent est désormais fermé après `pre.003-fix.001` :
```text
cargo fmt --all PASS
python3 scripts/audit_rust_workspace_rules.py PASS
python3 scripts/audit_markdown_tables.py ... deltas/0.2.12 PASS
cargo check --workspace PASS
cargo clippy --workspace --all-targets PASS
cargo test -p ksp-app-solprices-desk PASS
(cd crates/ksp-app-solprices-desk && cargo tauri dev) PASS
cargo test --workspace NOT RUN dans ce retour précis
```
Validations sandbox après matérialisation de `pre.004` :
```text
python3 scripts/audit_rust_workspace_rules.py PASS
python3 scripts/audit_markdown_tables.py README.md ... deltas PASS
cargo fmt/check/clippy/test NOT RUN — cargo indisponible dans le sandbox
```