v0.2.11-pre.011
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
<!-- file: docs/plans/018-V0_2_11_OFFCHAIN_PRICE_TRANSPORT_PLAN.md -->
|
||||
<!-- version: 18 -->
|
||||
<!-- version: 19 -->
|
||||
|
||||
# Plan `0.2.11` — Off-chain price transport SOL/USD multi-provider
|
||||
|
||||
**Statut courant : `0.2.11-pre.010-fix.001` corrige uniquement un canari de hardening qui dupliquait lexicalement le scanner global de ownership logging et faisait échouer `cargo test --workspace`. Le hardening fonctionnel de `pre.010` reste inchangé ; l'autorité de détection des bypass logging demeure `ksp-logging-lib/tests/ownership.rs`. Le gate du fix doit être rejoué avant `pre.011`.**
|
||||
**Statut courant : `0.2.11-pre.011` matérialise le gate technique/live final. Le gate complet de `pre.010-fix.001` est PASS. Les contrats officiels des huit providers sont réaudités au `2026-08-26`, un smoke keyless de sept providers et un smoke keyed de quatre modes gratuits sont désormais durables et opt-in ; leur exécution opérateur reste requise avant la réconciliation documentaire finale de `pre.012`.**
|
||||
|
||||
## 1. Base et autorité
|
||||
|
||||
@@ -192,7 +192,7 @@ Les huit providers ci-dessous satisfont le critère fonctionnel retenu : accès
|
||||
|-------------------|-----------------------|-----------------------|----------------------------------------------------|--------------------------------------------|---------|
|
||||
| CoinGecko | keyless ou Demo | aucune ou Demo key | keyless dynamique IP, Demo 100 par min et 10k mois | agrégateur marché CoinGecko | IN |
|
||||
| CoinMarketCap | keyless ou Basic | aucune ou API key | keyless dynamique IP, Basic 50 par min et 15k mois | agrégateur marché CoinMarketCap | IN |
|
||||
| CoinPaprika | Free | aucune | 10 par sec IP et 20k mois, refresh moyen 5 min | agrégateur marché CoinPaprika | IN |
|
||||
| CoinPaprika | Free | aucune | 10 par sec IP, 20k mois, données jusqu’à 10 min | agrégateur marché CoinPaprika | IN |
|
||||
| Kraken | public Spot REST | aucune | cadence sûre documentée à 1 par sec ou moins | dernier trade du marché Kraken SOL/USD | IN |
|
||||
| Coinbase Exchange | public Exchange REST | aucune | 10 par sec IP, burst 15 | dernier trade du produit Coinbase SOL-USD | IN |
|
||||
| Jupiter Price V3 | keyless ou Free | aucune ou API key | keyless 0.5 RPS, Free 1 RPS | heuristique de prix USD orientée Solana | IN |
|
||||
@@ -247,11 +247,30 @@ Réaudit `pre.006` : le Developer Platform Jupiter courant utilise `https://api.
|
||||
|
||||
Réaudit `pre.007` : Birdeye Standard reste gratuit à 30 000 compute units inclus et 1 RPS au niveau du compte. L'endpoint Price Single `GET /defi/price` consomme actuellement 3 compute units, exige `X-API-KEY`, accepte `x-chain: solana` et le mint canonique WSOL, et fournit `value` plus `updateUnixTime`. Le quota et le coût par requête sont des metadata informatives ; KSP ne décrémente jamais localement le quota comme une vérité authoritative.
|
||||
|
||||
### 6.1 Gratuité technique et conditions d'usage
|
||||
### 6.1 Réaudit final provider du 2026-08-26
|
||||
|
||||
Le gate technique final reconfirme les contrats externes effectivement encodés par KSP :
|
||||
|
||||
```text
|
||||
CoinGecko public keyless toujours documenté ; Demo toujours 100 appels/min
|
||||
CoinMarketCap Simple Price V2 toujours documenté et disponible keyless via /public-api ; Basic gratuit toujours disponible
|
||||
CoinPaprika limite globale 10 requêtes/s/IP et Free 20k appels/mois ; la documentation tarifaire annonce des données pouvant dater jusqu’à 10 min
|
||||
Kraken endpoints Spot publics : 1 appel/s ou moins reste la cadence sûre documentée ; ticker SOLUSD inchangé
|
||||
Coinbase Exchange ticker public dernier trade inchangé ; 10 requêtes/s/IP avec burst 15
|
||||
Jupiter Price V3 surface api.jup.ag conservée, modes keyless/Free et usdPrice/blockId inchangés
|
||||
Birdeye Standard gratuit, 1 RPS, 30 000 CU, Price Single 3 CU
|
||||
DexScreener endpoint direct pair inchangé, 300 requêtes/min pour la famille pairs/tokens
|
||||
```
|
||||
|
||||
Les sources officielles CoinPaprika ne formulent pas toutes la fraîcheur de la même manière : la référence ticker mentionne encore environ 5 minutes en moyenne pour Free, tandis que la page Plans/Pricing annonce un intervalle pouvant aller jusqu’à 10 minutes. KSP ne pilote aucun scheduler depuis cette information provider : le runtime conserve le timestamp réel quand il existe et ne fabrique aucune fraîcheur. Cette divergence documentaire n'impose donc aucun changement de code.
|
||||
|
||||
Pour le smoke DexScreener final, le canari opt-in utilise uniquement la paire Orca SOL/USDC `7qbRF6YsyGuLUVs6Y1q64bdVrfe4ZcUUz1JRdoVNUJnm`, vérifiée active au `2026-08-26` avec WSOL comme base. Cette paire est une donnée de test publique, pas un default runtime ni un mécanisme de découverte.
|
||||
|
||||
### 6.2 Gratuité technique et conditions d'usage
|
||||
|
||||
Le verdict `IN` signifie ici qu'un accès HTTP gratuit permet techniquement de développer et live-tester le provider dans `0.2.11`. Il ne constitue pas une affirmation de gratuité commerciale permanente.
|
||||
|
||||
L'audit du 2026-08-25 relève notamment :
|
||||
Le réaudit final du 2026-08-26 relève notamment :
|
||||
|
||||
```text
|
||||
CoinGecko keyless est présenté pour faible volume, expérimentation/prototypage et usages assimilés ; le plan Demo porte ses propres conditions et attribution
|
||||
@@ -645,7 +664,9 @@ ne compare pas à un prix exact figé
|
||||
n'échoue pas tout le batch parce qu'un provider externe est indisponible
|
||||
```
|
||||
|
||||
Les providers keyed gratuits peuvent nécessiter des credentials opérateur via Config. Les smokes keyless restent séparables pour ne pas obliger à posséder toutes les clés au même instant.
|
||||
`pre.011` matérialise deux tests ignorés séparés. Le smoke keyless couvre Coinbase Exchange, CoinGecko, CoinMarketCap, CoinPaprika, DexScreener, Jupiter et Kraken en un `refresh_all` séquentiel. Il accumule tous les outcomes avant d'échouer afin de prouver qu'un provider externe en défaut ne court-circuite pas les suivants. Le smoke keyed couvre Birdeye Standard, CoinGecko Demo, CoinMarketCap Basic et Jupiter Free. Les quatre clés sont lues sur `stdin`, dans cet ordre, et ne sont ni des arguments CLI ni des données affichées.
|
||||
|
||||
Le smoke keyed caractérise directement les adapters ; la provenance Config des mêmes secrets reste couverte par les tests déterministes de `ksp-config-lib`. Si l'opérateur ne possède pas l'une des quatre clés gratuites, le smoke keyed est enregistré `SKIP opérateur` plutôt qu'interprété comme un échec produit. Le smoke keyless reste le gate live sans credential obligatoire.
|
||||
|
||||
## 19. Hors périmètre `0.2.11`
|
||||
|
||||
@@ -776,7 +797,7 @@ Ajout de `cfg.std.offchain_transport` / `schema.std.offchain_transport`, du docu
|
||||
|
||||
### `pre.010` — Hardening et complétude technique
|
||||
|
||||
**Statut : réalisé ; `pre.010-fix.001` corrige un faux positif du canari local de hardening, gate du fix à rejouer.**
|
||||
**Statut : réalisé ; `pre.010-fix.001` validé par gate opérateur complet PASS.**
|
||||
|
||||
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.
|
||||
|
||||
@@ -784,9 +805,9 @@ Durcissement de la façade publique avec `#[non_exhaustive]` sur les enums évol
|
||||
|
||||
### `pre.011` — Gate technique et live final
|
||||
|
||||
**Statut : planifié.**
|
||||
**Statut : implémenté ; gate déterministe et smokes opérateur à exécuter.**
|
||||
|
||||
Smokes gratuits possibles, graphes Cargo, validations techniques finales et caractérisation actuelle des providers.
|
||||
Nouvel audit final des huit contrats provider, ajout de `tests/market_price_live_smoke.rs`, smoke keyless de sept providers, smoke keyed des quatre modes gratuits avec secrets sur `stdin`, vérification des graphes Cargo et reprise du gate workspace complet. Aucun endpoint, parser, rate-limit, Config ou comportement de refresh n'est modifié par cette tranche.
|
||||
|
||||
### `pre.012` — Réconciliation documentaire finale
|
||||
|
||||
|
||||
Reference in New Issue
Block a user