v0.2.11-pre.007
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/014-V0_2_11_OFFCHAIN_PRICE_TRANSPORT.md -->
|
||||
<!-- version: 11 -->
|
||||
<!-- version: 12 -->
|
||||
|
||||
# Validation `0.2.11` — Off-chain price transport SOL/USD
|
||||
|
||||
@@ -209,27 +209,55 @@ Les tests déterministes de `pre.005` couvrent les descriptors exchange, la pré
|
||||
|
||||
## 3.9 Gate `0.2.11-pre.006`
|
||||
|
||||
| Critère | Statut | Preuve |
|
||||
|-----------------------------------------------------------------|---------|---------------------------------------------------------|
|
||||
| version workspace `0.2.11-pre.6` | PASS | `Cargo.toml` racine |
|
||||
| Jupiter Price V3 adapter public | PASS | `market_price_jupiter.rs` |
|
||||
| Jupiter keyless et Free key distingués | PASS | settings + descriptor + header sensible |
|
||||
| Jupiter keyless 0,5 RPS et Free 1 RPS représentés | PASS | descriptors + canaries unitaires |
|
||||
| Jupiter utilise uniquement le mint WSOL | PASS | query `ids` fixe |
|
||||
| `usdPrice` Jupiter parsé exactement sans `f64` canonique | PASS | `RawValue` -> `MarketPriceDecimal` |
|
||||
| `blockId` Jupiter conservé en provenance sans faux timestamp | PASS | provenance bornée + `provider_timestamp = None` |
|
||||
| DexScreener adapter public avec pair address explicite | PASS | `MarketPriceDexScreenerSettings` |
|
||||
| DexScreener endpoint direct pair uniquement | PASS | `/latest/dex/pairs/solana/{pairId}` |
|
||||
| DexScreener vérifie `chainId`, pair address et identité WSOL | PASS | parser provider |
|
||||
| DexScreener utilise uniquement `priceUsd` | PASS | DTO wire privé + parsing exact |
|
||||
| DexScreener 300 req/min représenté | PASS | descriptor provider |
|
||||
| aucune découverte/selection/ranking automatique de pool | PASS | dependency boundary + absence search/token-pairs/tokens |
|
||||
| aucun SDK provider, Config, registry ou refresh multiple avancé | PASS | manifest + scope des modules |
|
||||
| audit Rust sandbox | PASS | clean, 0 candidate export |
|
||||
| audit Markdown sandbox | PLANNED | à exécuter après réconciliation documentaire |
|
||||
| gate Cargo | PLANNED | à exécuter par l'opérateur |
|
||||
| Critère | Statut | Preuve |
|
||||
|-----------------------------------------------------------------|--------|---------------------------------------------------------|
|
||||
| version workspace `0.2.11-pre.6` | PASS | `Cargo.toml` racine |
|
||||
| Jupiter Price V3 adapter public | PASS | `market_price_jupiter.rs` |
|
||||
| Jupiter keyless et Free key distingués | PASS | settings + descriptor + header sensible |
|
||||
| Jupiter keyless 0,5 RPS et Free 1 RPS représentés | PASS | descriptors + canaries unitaires |
|
||||
| Jupiter utilise uniquement le mint WSOL | PASS | query `ids` fixe |
|
||||
| `usdPrice` Jupiter parsé exactement sans `f64` canonique | PASS | `RawValue` -> `MarketPriceDecimal` |
|
||||
| `blockId` Jupiter conservé en provenance sans faux timestamp | PASS | provenance bornée + `provider_timestamp = None` |
|
||||
| DexScreener adapter public avec pair address explicite | PASS | `MarketPriceDexScreenerSettings` |
|
||||
| DexScreener endpoint direct pair uniquement | PASS | `/latest/dex/pairs/solana/{pairId}` |
|
||||
| DexScreener vérifie `chainId`, pair address et identité WSOL | PASS | parser provider |
|
||||
| DexScreener utilise uniquement `priceUsd` | PASS | DTO wire privé + parsing exact |
|
||||
| DexScreener 300 req/min représenté | PASS | descriptor provider |
|
||||
| aucune découverte/selection/ranking automatique de pool | PASS | dependency boundary + absence search/token-pairs/tokens |
|
||||
| aucun SDK provider, Config, registry ou refresh multiple avancé | PASS | manifest + scope des modules |
|
||||
| audit Rust sandbox | PASS | clean, 0 candidate export |
|
||||
| audit Markdown sandbox | PASS | clean, 120 tables / 111 fichiers |
|
||||
| `cargo check` / Clippy / tests Off-chain | PASS | résultats opérateur du 2026-08-25 |
|
||||
| `cargo test --workspace` sur état exact `pre.006` | N/R | non rejoué avant passage explicite à `pre.007` |
|
||||
|
||||
Les fixtures de `pre.006` couvrent Jupiter keyless/Free, redaction de la clé, prix exact, identité WSOL, `blockId`, absence volontaire de faux timestamp, ainsi que DexScreener avec pair Solana explicite, `priceUsd`, rejet de chain/pair/base invalides, réponse multiple et prix absent. Aucun smoke live n'est revendiqué dans cette tranche.
|
||||
Les fixtures de `pre.006` couvrent Jupiter keyless/Free, redaction de la clé, prix exact, identité WSOL, `blockId`, absence volontaire de faux timestamp, ainsi que DexScreener avec pair Solana explicite, `priceUsd`, rejet de chain/pair/base invalides, réponse multiple et prix absent. Le gate opérateur ciblé du `2026-08-25` est PASS : audit Rust clean, audit Markdown clean à 120 tables / 111 fichiers, `cargo check --workspace` PASS, `cargo clippy --workspace --all-targets` PASS et `cargo test -p ksp-offchain-transport-lib` PASS avec 43 unitaires + 4 boundary + 5 public API. `cargo test --workspace` n'a pas été rejoué sur cet état exact.
|
||||
|
||||
## 3.10 Gate `0.2.11-pre.007`
|
||||
|
||||
| Critère | Statut | Preuve |
|
||||
|------------------------------------------------------------------|---------|---------------------------------------|
|
||||
| version workspace `0.2.11-pre.7` | PASS | `Cargo.toml` racine |
|
||||
| Birdeye Standard SOL/USD adapter public | PASS | `market_price_birdeye.rs` |
|
||||
| Birdeye exige `X-API-KEY` lorsqu'activé | PASS | settings + header sensible |
|
||||
| Birdeye fixe `x-chain = solana` et le mint WSOL | PASS | request builder |
|
||||
| Birdeye Price Single `value` parsé exactement | PASS | `RawValue` -> `MarketPriceDecimal` |
|
||||
| Birdeye `updateUnixTime` conservé comme timestamp provider | PASS | parser provider |
|
||||
| Birdeye Standard 1 RPS compte modélisé | PASS | descriptor provider |
|
||||
| quota Birdeye 30 000 compute units informatif | PASS | `MarketPriceProviderLongTermQuota` |
|
||||
| coût Price Single 3 compute units informatif | PASS | `MarketPriceProviderRequestCost` |
|
||||
| registry provider-neutral matérialisé | PASS | `MarketPriceProviderRegistry` |
|
||||
| huit providers V1 présents dans le canari de complétude registry | PASS | test `market_price_registry` |
|
||||
| registry trié par provider id et doublons rejetés | PASS | constructeur public générique + tests |
|
||||
| entry publique limitée à descriptor + état générique | PASS | `MarketPriceProviderRegistryEntry` |
|
||||
| availability expose éligibilité et `retry_at` génériques | PASS | `MarketPriceProviderAvailability` |
|
||||
| registry sans mutation ou dispatch réseau | PASS | projection générique publique |
|
||||
| registry ne contient aucun dispatch/name provider | PASS | dependency boundary |
|
||||
| refresh single/multiple, Config et smoke live non avancés | PASS | scope réservé à `pre.008+` |
|
||||
| audit Rust sandbox | PASS | clean, 0 candidate export |
|
||||
| audit Markdown sandbox | PASS | clean, 121 tables / 112 fichiers |
|
||||
| gate Cargo | PLANNED | à exécuter par l'opérateur |
|
||||
|
||||
Les tests déterministes de `pre.007` couvrent l'auth Birdeye et sa redaction, le descriptor 1 RPS / 30 000 CU / 3 CU, le parsing exact du prix et du timestamp, les réponses invalides, ainsi que le registry complet des huit providers, son ordre déterministe, le rejet de doublons et les projections d'availability. Aucun refresh réseau générique ni smoke live n'est revendiqué dans cette tranche.
|
||||
|
||||
## 4. Matrice provider prévue
|
||||
|
||||
@@ -241,7 +269,7 @@ Les fixtures de `pre.006` couvrent Jupiter keyless/Free, redaction de la clé, p
|
||||
| Kraken | Oui | Oui | aucune | PASS | PLANNED | IMPLEMENTED |
|
||||
| Coinbase Exchange | Oui | Oui | aucune | PASS | PLANNED | IMPLEMENTED |
|
||||
| Jupiter Price V3 | Oui | Oui | keyless ou Free key | PASS | PLANNED | IMPLEMENTED |
|
||||
| Birdeye | Oui | Oui | API key Standard | PLANNED | PLANNED | AUDITED |
|
||||
| Birdeye | Oui | Oui | API key Standard | PASS | PLANNED | IMPLEMENTED |
|
||||
| DexScreener | Oui | Oui | aucune | PASS | PLANNED | IMPLEMENTED |
|
||||
|
||||
`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.
|
||||
@@ -262,7 +290,7 @@ Avant la stable, les conditions d'usage et la persistance des offres gratuites d
|
||||
| `f64` non utilisé comme canon public | PASS |
|
||||
| aucune structure wire provider exportée | PASS |
|
||||
| aucune URL/header/asset id provider requis côté app | PASS |
|
||||
| registry provider et état runtime possédés par Off-chain Transport | PLANNED |
|
||||
| registry provider et état runtime possédés par Off-chain Transport | PASS |
|
||||
| refresh provider par identifiant générique | PLANNED |
|
||||
| refresh multiple sans connaissance provider côté consumer | PLANNED |
|
||||
|
||||
@@ -275,13 +303,13 @@ Avant la stable, les conditions d'usage et la persistance des offres gratuites d
|
||||
| limite dynamique keyless représentable | PASS |
|
||||
| `429` classé | PASS |
|
||||
| `Retry-After` honoré lorsqu'exploitable | PASS |
|
||||
| cooldown expose prochain instant admissible | PLANNED |
|
||||
| cooldown expose prochain instant admissible | PASS |
|
||||
| refresh all ne lance que les providers éligibles | PLANNED |
|
||||
| provider en cooldown ne bloque pas les autres | PLANNED |
|
||||
| provider down ne rend pas le service global inutilisable | PLANNED |
|
||||
| auth manquante distinguée d'un transport down | PLANNED |
|
||||
| quota indisponible distingué d'un transport down | PLANNED |
|
||||
| quota mensuel local non présenté comme compteur authoritative | PLANNED |
|
||||
| quota mensuel local non présenté comme compteur authoritative | PASS |
|
||||
|
||||
## 7. Numeric safety
|
||||
|
||||
|
||||
Reference in New Issue
Block a user