v0.2.11-pre.003
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
<!-- file: docs/plans/018-V0_2_11_OFFCHAIN_PRICE_TRANSPORT_PLAN.md -->
|
||||
<!-- version: 6 -->
|
||||
<!-- version: 7 -->
|
||||
|
||||
# Plan `0.2.11` — Off-chain price transport SOL/USD multi-provider
|
||||
|
||||
**Statut courant : `0.2.11-pre.002-fix.003` ferme le nommage public de la famille `market_price` avant `pre.003`. Les types, constantes et codes d'erreur publics spécifiques à cette famille portent désormais le préfixe `MarketPrice` / `MARKET_PRICE`, afin d'éviter une collision future avec `swap_quote_*` ou une autre capacité off-chain. Le contrat V1 reste limité à SOL/USD et aucun client HTTP/provider n'est encore ajouté.**
|
||||
**Statut courant : `0.2.11-pre.003` matérialise le HTTP REST commun et le rate limiting provider-neutral sans encore ajouter d'adapter provider. Les primitives `http_*` restent internes à la crate et réutilisables par les futures familles off-chain ; `market_price_*` reste la seule famille métier actuelle et demeure limitée à SOL/USD.**
|
||||
|
||||
## 1. Base et autorité
|
||||
|
||||
@@ -482,24 +482,30 @@ Décisions V1 :
|
||||
|
||||
```text
|
||||
reqwest uniquement
|
||||
HTTPS officiel fixe lorsque le provider le supporte
|
||||
HTTPS officiel fixe dans les adapters V1
|
||||
redirect désactivé
|
||||
proxy implicite désactivé selon le pattern KSP retenu
|
||||
connect timeout borné
|
||||
request timeout borné
|
||||
Referer automatique désactivé
|
||||
proxy système/implicite désactivé
|
||||
retries implicites reqwest désactivés
|
||||
connect timeout borné : défaut 5 s, hard max 30 s
|
||||
request timeout borné : défaut 10 s, hard max 120 s
|
||||
GET uniquement pour les prix V1
|
||||
body réponse borné
|
||||
JSON attendu et validé
|
||||
body réponse borné avant désérialisation : défaut 1 MiB, hard max 4 MiB
|
||||
JSON syntaxiquement validé avant remise à l'adapter typed
|
||||
429 classé explicitement
|
||||
Retry-After honoré lorsqu'il est exploitable
|
||||
5xx classé transitoire
|
||||
401/403 classé auth/access
|
||||
Retry-After delta-seconds honoré et borné à 1 h lorsqu'il est exploitable
|
||||
408 et 5xx classés transitoires
|
||||
401/403 classés auth/access
|
||||
URL retirée des erreurs reqwest avant contexte KSP
|
||||
aucun body remote brut dans KspError
|
||||
```
|
||||
|
||||
Il n'existe pas d'URL provider arbitraire dans la Config V1. Cela évite SSRF, redirection de credential et confusion de provenance.
|
||||
|
||||
Les primitives `http_*` sont **crate-private** : elles ne créent pas un client HTTP générique public contournant les capacités métier. Les adapters `market_price_*`, puis de futures familles telles que `swap_quote_*`, les consomment derrière leur propre contrat.
|
||||
|
||||
Le limiter `pre.003` est non bloquant. Une cadence fixe est matérialisée par un token bucket lissé ; lorsqu'aucun burst n'est documenté, la capacité locale initiale reste volontairement `1`. Une limite dynamique n'invente aucune cadence locale et apprend seulement des réponses provider, notamment `429`. Un `Retry-After` serveur peut prolonger le cooldown mais ne peut pas dépasser une borne défensive d'une heure. Aucune primitive HTTP commune ne dort en attendant la disponibilité : elle expose un délai de defer que l'orchestrateur `pre.008` pourra projeter provider par provider.
|
||||
|
||||
## 15. Config provider-capability-aware
|
||||
|
||||
Config reste l'unique propriétaire des documents/env/secrets.
|
||||
@@ -686,9 +692,9 @@ Préfixage de toute la surface publique spécifique à la famille `market_price`
|
||||
|
||||
### `pre.003` — HTTP REST commun et rate limiting
|
||||
|
||||
**Statut : planifié.**
|
||||
**Statut : réalisé.**
|
||||
|
||||
Client HTTP REST commun, classification d'erreurs, bornes de body et timeouts, redaction, limiter et cooldown génériques.
|
||||
Client HTTP REST commun crate-private, classification d'erreurs HTTP/reqwest, bornes de body et timeouts, redaction, désactivation explicite des redirects/proxy/retries implicites, JSON syntaxiquement validé, limiter token-bucket générique non bloquant et cooldown provider-driven borné. Aucun adapter provider n'est avancé.
|
||||
|
||||
### `pre.004` — CoinGecko, CoinMarketCap et CoinPaprika
|
||||
|
||||
|
||||
Reference in New Issue
Block a user