v0.2.11-pre.012
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/014-V0_2_11_OFFCHAIN_PRICE_TRANSPORT.md -->
|
||||
<!-- version: 19 -->
|
||||
<!-- version: 20 -->
|
||||
|
||||
# Validation `0.2.11` — Off-chain price transport SOL/USD
|
||||
|
||||
@@ -365,37 +365,55 @@ La tranche `pre.011` ne change aucune logique réseau de production. Elle rend u
|
||||
|
||||
Le smoke keyless opérateur de `pre.011` a bien exécuté les sept providers avant assertion finale. Les six adapters Coinbase Exchange, CoinGecko, CoinPaprika, DexScreener, Jupiter et Kraken ont produit une observation valide. CoinMarketCap seul a terminé `TemporarilyUnavailable`. Le réaudit officiel ciblé a identifié un écart déterministe dans le builder KSP : Simple Price V2 attend `id=5426`, alors que l'adapter envoyait `ids=5426`.
|
||||
|
||||
| Critère | Statut | Preuve / condition opérateur |
|
||||
|----------------------------------------------------|---------|----------------------------------------------------------------|
|
||||
| version workspace `0.2.11-pre.11.fix.1` | PASS | `Cargo.toml` racine |
|
||||
| endpoint CoinMarketCap V2 inchangé | PASS | `/v2/simple/price` et `/public-api/v2/simple/price` |
|
||||
| identifiant SOL CoinMarketCap corrigé en `id=5426` | PASS | builder commun Keyless / Basic |
|
||||
| query V2 exacte canarisée | PASS | `id=5426&convert=USD&include_last_updated=true` |
|
||||
| parser/rate-limit/auth/sémantique inchangés | PASS | aucun autre contrat runtime modifié |
|
||||
| six autres providers keyless du smoke initial | PASS | outcomes live `pre.011`, aucun autre échec |
|
||||
| re-smoke keyless après fix | PENDING | obligatoire avant `pre.012` |
|
||||
| smoke keyed réel | PENDING | `SKIP opérateur` permis si les quatre credentials sont absents |
|
||||
| Critère | Statut | Preuve / condition opérateur |
|
||||
|----------------------------------------------------|--------|-----------------------------------------------------|
|
||||
| version workspace `0.2.11-pre.11.fix.1` | PASS | `Cargo.toml` racine |
|
||||
| endpoint CoinMarketCap V2 inchangé | PASS | `/v2/simple/price` et `/public-api/v2/simple/price` |
|
||||
| identifiant SOL CoinMarketCap corrigé en `id=5426` | PASS | builder commun Keyless / Basic |
|
||||
| query V2 exacte canarisée | PASS | `id=5426&convert=USD&include_last_updated=true` |
|
||||
| parser/rate-limit/auth/sémantique inchangés | PASS | aucun autre contrat runtime modifié |
|
||||
| six autres providers keyless du smoke initial | PASS | outcomes live `pre.011`, aucun autre échec |
|
||||
| re-smoke keyless après fix | PASS | 7/7 opérateur le 2026-08-26 |
|
||||
| smoke keyed réel | SKIP | opérateur sans les quatre credentials gratuits |
|
||||
|
||||
Ce correctif est technique et appartient toujours à la lane `pre.011`. Il ne transfère aucune responsabilité documentaire à `pre.012`.
|
||||
|
||||
## 4. Matrice provider prévue
|
||||
## 3.16 Réconciliation documentaire `0.2.11-pre.012`
|
||||
|
||||
| Provider | SOL/USD V1 | Gratuit V1 | Mode auth prévu | Test déterministe | Smoke live | Statut courant |
|
||||
|-------------------|------------|------------|----------------------|-------------------|------------------|----------------|
|
||||
| CoinGecko | Oui | Oui | keyless ou Demo key | PASS | PASS keyless | IMPLEMENTED |
|
||||
| CoinMarketCap | Oui | Oui | keyless ou Basic key | PASS | PENDING re-smoke | IMPLEMENTED |
|
||||
| CoinPaprika | Oui | Oui | aucune | PASS | PASS | IMPLEMENTED |
|
||||
| Kraken | Oui | Oui | aucune | PASS | PASS | IMPLEMENTED |
|
||||
| Coinbase Exchange | Oui | Oui | aucune | PASS | PASS | IMPLEMENTED |
|
||||
| Jupiter Price V3 | Oui | Oui | keyless ou Free key | PASS | PASS keyless | IMPLEMENTED |
|
||||
| Birdeye | Oui | Oui | API key Standard | PASS | PENDING keyed | IMPLEMENTED |
|
||||
| DexScreener | Oui | Oui | aucune | PASS | PASS | IMPLEMENTED |
|
||||
La lane technique/live est fermée avant cette tranche : le premier smoke keyless a isolé CoinMarketCap, `pre.011-fix.001` a corrigé le paramètre V2, puis le re-smoke opérateur a passé les sept providers keyless en `7/7`. Le smoke keyed n'a pas été exécuté faute des quatre credentials gratuits simultanés et reste explicitement `SKIP opérateur`.
|
||||
|
||||
`AUDITED` signifie uniquement que la documentation officielle actuelle satisfait le gate d'entrée. Ce statut ne vaut pas preuve d'un smoke réseau KSP.
|
||||
`pre.012` ne modifie aucun comportement Rust, test, schema, Config exécutable, dépendance ou contrat réseau. La rustdoc crate-root est seulement réconciliée pour retirer `pre.010`. La tranche prépare ensuite un dernier gate workspace sans refaire le smoke live ni les graphes Cargo.
|
||||
|
||||
Avant la stable, les conditions d'usage et la persistance des offres gratuites doivent être réauditées ; un provider peut rester techniquement supporté tout en nécessitant un plan différent pour certains usages.
|
||||
| Critère | Statut | Preuve / condition opérateur |
|
||||
|--------------------------------------------------------|---------|-------------------------------------------------|
|
||||
| re-smoke keyless après CoinMarketCap fix | PASS | 7/7 le 2026-08-26 |
|
||||
| smoke keyed avec quatre credentials | SKIP | credentials non disponibles ensemble |
|
||||
| plan `0.2.11` réconcilié | PASS | statuts techniques/live finalisés |
|
||||
| matrice provider finale | PASS | huit providers implémentés |
|
||||
| README/USAGE Off-chain durables | PASS | brouillon `pre.010` supprimé |
|
||||
| index documentaire réconcilié | PASS | `docs/000-README.md` |
|
||||
| séquence fonctionnelle `0.2.11` / `0.2.12` réconciliée | PASS | `002-FUNCTIONAL_RELEASE_SEQUENCE.md` |
|
||||
| aucune responsabilité `CHANGELOG` / `ROADMAP` / prompt | PASS | réservée à `pre.013` |
|
||||
| gate workspace documentaire final | PENDING | opérateur après application exacte de `pre.012` |
|
||||
|
||||
## 5. Contrat public prévu
|
||||
## 4. Matrice provider finale
|
||||
|
||||
| Provider | SOL/USD V1 | Gratuit V1 | Mode auth prévu | Test déterministe | Smoke live | Statut courant |
|
||||
|-------------------|------------|------------|----------------------|-------------------|--------------|----------------|
|
||||
| CoinGecko | Oui | Oui | keyless ou Demo key | PASS | PASS keyless | IMPLEMENTED |
|
||||
| CoinMarketCap | Oui | Oui | keyless ou Basic key | PASS | PASS keyless | IMPLEMENTED |
|
||||
| CoinPaprika | Oui | Oui | aucune | PASS | PASS | IMPLEMENTED |
|
||||
| Kraken | Oui | Oui | aucune | PASS | PASS | IMPLEMENTED |
|
||||
| Coinbase Exchange | Oui | Oui | aucune | PASS | PASS | IMPLEMENTED |
|
||||
| Jupiter Price V3 | Oui | Oui | keyless ou Free key | PASS | PASS keyless | IMPLEMENTED |
|
||||
| Birdeye | Oui | Oui | API key Standard | PASS | SKIP keyed | IMPLEMENTED |
|
||||
| DexScreener | Oui | Oui | aucune | PASS | PASS | IMPLEMENTED |
|
||||
|
||||
Le smoke `PASS` signifie qu'un mode keyless de ce provider a été réellement exercé par le harness KSP de clôture. `SKIP keyed` signifie uniquement que Birdeye, qui n'a pas de mode keyless V1, n'a pas reçu de preuve live faute du jeu complet de credentials opérateur ; ses fixtures, parsing, auth et descriptors restent couverts déterministiquement.
|
||||
|
||||
Les conditions d'usage et la persistance des offres gratuites ont été réauditées au gate final du `2026-08-26`. Elles restent des propriétés externes susceptibles d'évoluer après la release et ne constituent pas une garantie commerciale KSP.
|
||||
|
||||
## 5. Contrat public final
|
||||
|
||||
| Invariant | Statut |
|
||||
|------------------------------------------------------------------------|--------|
|
||||
@@ -415,20 +433,20 @@ Avant la stable, les conditions d'usage et la persistance des offres gratuites d
|
||||
|
||||
## 6. Rate limiting et availability
|
||||
|
||||
| Cas | Statut |
|
||||
|---------------------------------------------------------------|---------|
|
||||
| cadence locale fixe représentable | PASS |
|
||||
| burst documenté supérieur à la cadence moyenne représentable | PASS |
|
||||
| limite dynamique keyless représentable | PASS |
|
||||
| `429` classé | PASS |
|
||||
| `Retry-After` honoré lorsqu'exploitable | PASS |
|
||||
| cooldown expose prochain instant admissible | PASS |
|
||||
| refresh all ne lance que les providers éligibles | PASS |
|
||||
| provider en cooldown ne bloque pas les autres | PASS |
|
||||
| provider down ne rend pas le service global inutilisable | PASS |
|
||||
| auth rejetée distinguée d'un transport down | PASS |
|
||||
| quota indisponible distingué d'un transport down | PLANNED |
|
||||
| quota mensuel local non présenté comme compteur authoritative | PASS |
|
||||
| Cas | Statut |
|
||||
|---------------------------------------------------------------|--------|
|
||||
| cadence locale fixe représentable | PASS |
|
||||
| burst documenté supérieur à la cadence moyenne représentable | PASS |
|
||||
| limite dynamique keyless représentable | PASS |
|
||||
| `429` classé | PASS |
|
||||
| `Retry-After` honoré lorsqu'exploitable | PASS |
|
||||
| cooldown expose prochain instant admissible | PASS |
|
||||
| refresh all ne lance que les providers éligibles | PASS |
|
||||
| provider en cooldown ne bloque pas les autres | PASS |
|
||||
| provider down ne rend pas le service global inutilisable | PASS |
|
||||
| auth rejetée distinguée d'un transport down | PASS |
|
||||
| état `QuotaUnavailable` distinct représentable | PASS |
|
||||
| quota mensuel local non présenté comme compteur authoritative | PASS |
|
||||
|
||||
## 7. Numeric safety
|
||||
|
||||
@@ -446,23 +464,23 @@ Avant la stable, les conditions d'usage et la persistance des offres gratuites d
|
||||
|
||||
## 8. HTTP et sécurité
|
||||
|
||||
| Invariant | Statut |
|
||||
|------------------------------------------------|---------|
|
||||
| `reqwest` seul client provider | PASS |
|
||||
| aucun SDK provider | PASS |
|
||||
| endpoint provider officiel fixe en V1 | PASS |
|
||||
| redirects désactivés | PASS |
|
||||
| proxy implicite désactivé selon policy KSP | PASS |
|
||||
| connect timeout borné | PASS |
|
||||
| request timeout borné | PASS |
|
||||
| body réponse borné avant parsing | PASS |
|
||||
| URL retirée des erreurs reqwest | PASS |
|
||||
| réponse remote brute absente des KspError/logs | PASS |
|
||||
| API key absente de Debug/log/error | PASS |
|
||||
| 401/403 classés auth/access | PASS |
|
||||
| 429 classé rate limit | PASS |
|
||||
| 5xx classé transient | PASS |
|
||||
| schema drift classé provider protocol | PLANNED |
|
||||
| Invariant | Statut |
|
||||
|------------------------------------------------|--------|
|
||||
| `reqwest` seul client provider | PASS |
|
||||
| aucun SDK provider | PASS |
|
||||
| endpoint provider officiel fixe en V1 | PASS |
|
||||
| redirects désactivés | PASS |
|
||||
| proxy implicite désactivé selon policy KSP | PASS |
|
||||
| connect timeout borné | PASS |
|
||||
| request timeout borné | PASS |
|
||||
| body réponse borné avant parsing | PASS |
|
||||
| URL retirée des erreurs reqwest | PASS |
|
||||
| réponse remote brute absente des KspError/logs | PASS |
|
||||
| API key absente de Debug/log/error | PASS |
|
||||
| 401/403 classés auth/access | PASS |
|
||||
| 429 classé rate limit | PASS |
|
||||
| 5xx classé transient | PASS |
|
||||
| schema drift classé réponse provider invalide | PASS |
|
||||
|
||||
## 9. DexScreener V1
|
||||
|
||||
@@ -509,23 +527,24 @@ Avant la stable, les conditions d'usage et la persistance des offres gratuites d
|
||||
|
||||
Cette section valide l'architecture préparée par `0.2.11`; l'application elle-même reste hors scope et sera testée en `0.2.12`.
|
||||
|
||||
## 12. Non-régression et gates finaux prévus
|
||||
## 12. Non-régression et gates finaux
|
||||
|
||||
| Gate | Statut |
|
||||
|-------------------------------------------------|---------|
|
||||
| `cargo fmt --all` | PLANNED |
|
||||
| audit Rust workspace | PLANNED |
|
||||
| audit Markdown tables | PLANNED |
|
||||
| `cargo check --workspace` | PLANNED |
|
||||
| `cargo clippy --workspace --all-targets` | PLANNED |
|
||||
| `cargo test --workspace` | PLANNED |
|
||||
| tests `ksp-offchain-transport-lib` | PLANNED |
|
||||
| tests Config | PLANNED |
|
||||
| cargo tree Off-chain Transport | PENDING |
|
||||
| absence de dépendances provider SDK | PENDING |
|
||||
| smokes keyless gratuits | PENDING |
|
||||
| smokes keyed gratuits disponibles à l'opérateur | PENDING |
|
||||
| réconciliation README/USAGE/plan/validation | PLANNED |
|
||||
| Gate | Statut |
|
||||
|----------------------------------------------|---------|
|
||||
| `cargo fmt --all` | PASS |
|
||||
| audit Rust workspace | PASS |
|
||||
| audit Markdown tables | PASS |
|
||||
| `cargo check --workspace` | PASS |
|
||||
| `cargo clippy --workspace --all-targets` | PASS |
|
||||
| `cargo test --workspace` sur `pre.011` | PASS |
|
||||
| tests `ksp-offchain-transport-lib` après fix | PASS |
|
||||
| tests Config après fix | PASS |
|
||||
| cargo tree Off-chain Transport | PASS |
|
||||
| absence de dépendances provider SDK | PASS |
|
||||
| smoke keyless gratuit final | PASS |
|
||||
| smoke keyed quatre credentials | SKIP |
|
||||
| réconciliation README/USAGE/plan/validation | PASS |
|
||||
| gate workspace de `pre.012` | PENDING |
|
||||
|
||||
## 13. Hors scope validé
|
||||
|
||||
|
||||
Reference in New Issue
Block a user