v0.2.11-pre.010
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
<!-- file: docs/plans/018-V0_2_11_OFFCHAIN_PRICE_TRANSPORT_PLAN.md -->
|
||||
<!-- version: 16 -->
|
||||
<!-- version: 17 -->
|
||||
|
||||
# Plan `0.2.11` — Off-chain price transport SOL/USD multi-provider
|
||||
|
||||
**Statut courant : `0.2.11-pre.009` matérialise la frontière Config -> Off-chain Transport. `cfg.std.offchain_transport` et `schema.std.offchain_transport` possèdent désormais un domaine `market_price` avec les huit providers V1, des profils `public_keyless` et `all_free`, les credentials résolus exclusivement depuis une provenance Config classée Secret, et une adresse de paire DexScreener publique lorsqu'elle provient de l'environnement. `ResolvedOffchainTransportConfig` construit `MarketPriceService` sans créer de dépendance inverse depuis Off-chain Transport. Les limites provider restent possédées par la crate runtime et ne deviennent pas des cadences libres de Config.**
|
||||
**Statut courant : `0.2.11-pre.010` durcit la façade et les invariants avant le gate live. Les enums publiques évolutives de `market_price` sont désormais `#[non_exhaustive]`, des canaries release-level verrouillent l'inventaire exact des huit providers, la redaction et les frontières Config/HTTP, et des tests adversariaux complètent numeric safety, timestamps et provenance. `README.md` / `USAGE.md` de la nouvelle crate sont introduits comme brouillons techniques uniquement ; la réconciliation documentaire finale reste réservée à `pre.012`. Le gate opérateur de `pre.009` est intégralement PASS.**
|
||||
|
||||
## 1. Base et autorité
|
||||
|
||||
@@ -473,18 +473,19 @@ ne contourne jamais le cooldown
|
||||
|
||||
### Refresh multiple/all
|
||||
|
||||
Un refresh multiple :
|
||||
Un refresh multiple V1 :
|
||||
|
||||
```text
|
||||
valide la sélection complète avant le premier dispatch
|
||||
évalue chaque provider indépendamment
|
||||
lance concurremment les providers éligibles
|
||||
exécute séquentiellement dans un ordre déterministe
|
||||
ne bloque pas Coinbase parce que Jupiter est en cooldown
|
||||
ne dort pas pour attendre tous les providers non éligibles
|
||||
ne dort pas pour attendre les providers non éligibles
|
||||
retourne un résultat générique par provider
|
||||
expose le prochain instant admissible pour les providers différés
|
||||
```
|
||||
|
||||
La future UI peut donc désactiver/annoter un bouton à partir de l'état retourné sans connaître la règle provider.
|
||||
Le choix séquentiel de V1 privilégie la simplicité, la reproductibilité des effets et l'absence de scheduler implicite. Il n'interdit pas une évolution concurrente future, mais une telle évolution devra définir explicitement ordre observable, admission et interactions de rate limiting au lieu d'être supposée par la HID. La future UI peut donc désactiver/annoter un bouton à partir de l'état retourné sans connaître la règle provider.
|
||||
|
||||
## 14. HTTP commun et résilience
|
||||
|
||||
@@ -769,15 +770,15 @@ Implémentation de Birdeye Standard avec `X-API-KEY`, endpoint Price Single Sola
|
||||
|
||||
### `pre.009` — Config Off-chain Transport
|
||||
|
||||
**Statut : réalisé ; gate Cargo opérateur à rejouer.**
|
||||
**Statut : réalisé ; gate opérateur complet PASS.**
|
||||
|
||||
Ajout de `cfg.std.offchain_transport` / `schema.std.offchain_transport`, du document standard V1, de son schema strict, d'un exemple et de la fixture Config. Le domaine `market_price` configure les huit providers sans rendre leurs cadences modifiables. `public_keyless` fonctionne sans secret ; `all_free` référence quatre credentials `KSP_SECRET_*` et une paire DexScreener `KSP_PUBLIC_*`. `ResolvedOffchainTransportConfig` résout l'environnement, contrôle la provenance des credentials/public fields et construit `MarketPriceService` via `MarketPriceProviderSetup`, sans dépendance inverse. Les deux applications desktop embarquent les nouvelles ressources Config. La tranche réconcilie aussi DexScreener pour qu'une paire soit requise uniquement quand le provider est activé.
|
||||
|
||||
### `pre.010` — Hardening et complétude technique
|
||||
|
||||
**Statut : planifié.**
|
||||
**Statut : réalisé côté delta ; gate Cargo opérateur à rejouer.**
|
||||
|
||||
Hardening de l'API publique, tests adversariaux/completeness et brouillons techniques README/USAGE sans réconciliation documentaire finale.
|
||||
Durcissement de la façade publique avec `#[non_exhaustive]` sur les enums évolutives, absorption future-safe de ces enums par l'adapter Config, canaries de complétude exacte des huit providers, tests adversariaux numeric/timestamps/provenance/redaction et vérification de l'absence d'URL/rate-limit provider configurables. Les premiers `README.md` / `USAGE.md` d'Off-chain Transport et les ajouts Config associés sont des brouillons techniques ; `pre.012` reste seule propriétaire de la réconciliation documentaire finale. Le contrat `refresh_many`/`refresh_all` V1 est explicitement réaffirmé séquentiel et déterministe.
|
||||
|
||||
### `pre.011` — Gate technique et live final
|
||||
|
||||
|
||||
Reference in New Issue
Block a user