v0.2.11-pre.006
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/014-V0_2_11_OFFCHAIN_PRICE_TRANSPORT.md -->
|
||||
<!-- version: 10 -->
|
||||
<!-- version: 11 -->
|
||||
|
||||
# Validation `0.2.11` — Off-chain price transport SOL/USD
|
||||
|
||||
@@ -184,27 +184,52 @@ Le gate opérateur rejoué le `2026-08-25` est intégralement PASS : audit Rust
|
||||
|
||||
## 3.8 Gate `0.2.11-pre.005`
|
||||
|
||||
| Critère | Statut | Preuve |
|
||||
|--------------------------------------------------------|---------|----------------------------------------------------|
|
||||
| version workspace `0.2.11-pre.5` | PASS | `Cargo.toml` racine |
|
||||
| Kraken Spot SOL/USD adapter public | PASS | `market_price_kraken.rs` |
|
||||
| Kraken public keyless sans faux credential | PASS | settings + descriptor |
|
||||
| Kraken dernier trade conservé avec sémantique exchange | PASS | ticker `SOLUSD` -> `c[0]` -> `ExchangeLastTrade` |
|
||||
| Kraken ne fabrique aucun timestamp provider absent | PASS | `provider_timestamp = None` |
|
||||
| Kraken cadence locale conservatrice 1 req/s IP | PASS | descriptor + canari unitaire |
|
||||
| Coinbase Exchange SOL/USD adapter public | PASS | `market_price_coinbase_exchange.rs` |
|
||||
| Coinbase Exchange public keyless sans faux credential | PASS | settings + descriptor |
|
||||
| Coinbase dernier trade et timestamp provider conservés | PASS | `price` + `time` -> `ExchangeLastTrade` |
|
||||
| Coinbase token bucket public 10 req/s IP, burst 15 | PASS | descriptor + canari unitaire |
|
||||
| DTOs wire Kraken/Coinbase privés | PASS | structs privées dans les modules providers |
|
||||
| endpoints provider fixes et HTTPS | PASS | constantes privées + boundary canary |
|
||||
| prix exchange parsés exactement sans passage par `f64` | PASS | `RawValue` -> `MarketPriceDecimal::parse_json_raw` |
|
||||
| aucun SDK provider, Config ou registry global avancé | PASS | manifest + dependency boundary |
|
||||
| audit Rust sandbox | PASS | clean, 0 candidate export |
|
||||
| audit Markdown sandbox | PASS | clean, 119 tables / 110 fichiers |
|
||||
| gate Cargo complet | PLANNED | à exécuter par l'opérateur |
|
||||
| Critère | Statut | Preuve |
|
||||
|--------------------------------------------------------|--------|----------------------------------------------------|
|
||||
| version workspace `0.2.11-pre.5` | PASS | `Cargo.toml` racine |
|
||||
| Kraken Spot SOL/USD adapter public | PASS | `market_price_kraken.rs` |
|
||||
| Kraken public keyless sans faux credential | PASS | settings + descriptor |
|
||||
| Kraken dernier trade conservé avec sémantique exchange | PASS | ticker `SOLUSD` -> `c[0]` -> `ExchangeLastTrade` |
|
||||
| Kraken ne fabrique aucun timestamp provider absent | PASS | `provider_timestamp = None` |
|
||||
| Kraken cadence locale conservatrice 1 req/s IP | PASS | descriptor + canari unitaire |
|
||||
| Coinbase Exchange SOL/USD adapter public | PASS | `market_price_coinbase_exchange.rs` |
|
||||
| Coinbase Exchange public keyless sans faux credential | PASS | settings + descriptor |
|
||||
| Coinbase dernier trade et timestamp provider conservés | PASS | `price` + `time` -> `ExchangeLastTrade` |
|
||||
| Coinbase token bucket public 10 req/s IP, burst 15 | PASS | descriptor + canari unitaire |
|
||||
| DTOs wire Kraken/Coinbase privés | PASS | structs privées dans les modules providers |
|
||||
| endpoints provider fixes et HTTPS | PASS | constantes privées + boundary canary |
|
||||
| prix exchange parsés exactement sans passage par `f64` | PASS | `RawValue` -> `MarketPriceDecimal::parse_json_raw` |
|
||||
| aucun SDK provider, Config ou registry global avancé | PASS | manifest + dependency boundary |
|
||||
| audit Rust sandbox | PASS | clean, 0 candidate export |
|
||||
| audit Markdown sandbox | PASS | clean, 119 tables / 110 fichiers |
|
||||
| `cargo check` / Clippy / tests Off-chain | PASS | résultats opérateur du 2026-08-25 |
|
||||
| `cargo test --workspace` sur état exact `pre.005` | N/R | non rejoué avant passage explicite à `pre.006` |
|
||||
|
||||
Les tests déterministes de `pre.005` couvrent les descriptors exchange, la précision décimale, le timestamp Coinbase, l'absence de timestamp Kraken, le rejet d'une erreur/identité Kraken incohérente et le rejet d'un timestamp Coinbase invalide. Aucun smoke réseau n'est revendiqué dans cette tranche.
|
||||
Les tests déterministes de `pre.005` couvrent les descriptors exchange, la précision décimale, le timestamp Coinbase, l'absence de timestamp Kraken, le rejet d'une erreur/identité Kraken incohérente et le rejet d'un timestamp Coinbase invalide. Le gate opérateur ciblé du `2026-08-25` est PASS : audit Rust clean, audit Markdown clean à 119 tables / 110 fichiers, `cargo check --workspace` PASS, `cargo clippy --workspace --all-targets` PASS et `cargo test -p ksp-offchain-transport-lib` PASS avec 37 unitaires + 3 boundary + 4 public API. `cargo test --workspace` n'a pas été rejoué sur cet état exact.
|
||||
|
||||
## 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 |
|
||||
|
||||
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.
|
||||
|
||||
## 4. Matrice provider prévue
|
||||
|
||||
@@ -215,9 +240,9 @@ Les tests déterministes de `pre.005` couvrent les descriptors exchange, la pré
|
||||
| CoinPaprika | Oui | Oui | aucune | PASS | PLANNED | IMPLEMENTED |
|
||||
| Kraken | Oui | Oui | aucune | PASS | PLANNED | IMPLEMENTED |
|
||||
| Coinbase Exchange | Oui | Oui | aucune | PASS | PLANNED | IMPLEMENTED |
|
||||
| Jupiter Price V3 | Oui | Oui | keyless ou Free key | PLANNED | PLANNED | AUDITED |
|
||||
| Jupiter Price V3 | Oui | Oui | keyless ou Free key | PASS | PLANNED | IMPLEMENTED |
|
||||
| Birdeye | Oui | Oui | API key Standard | PLANNED | PLANNED | AUDITED |
|
||||
| DexScreener | Oui | Oui | aucune | PLANNED | PLANNED | AUDITED |
|
||||
| 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.
|
||||
|
||||
@@ -294,15 +319,15 @@ Avant la stable, les conditions d'usage et la persistance des offres gratuites d
|
||||
|
||||
## 9. DexScreener V1
|
||||
|
||||
| Invariant | Statut |
|
||||
|----------------------------------------------|---------|
|
||||
| pair address SOL/USD explicite dans settings | PLANNED |
|
||||
| `chainId = solana` vérifié | PLANNED |
|
||||
| identité SOL de la paire vérifiée | PLANNED |
|
||||
| `priceUsd` utilisé comme prix commun | PLANNED |
|
||||
| aucune recherche automatique de pool | PLANNED |
|
||||
| aucun tri automatique par liquidité | PLANNED |
|
||||
| aucune moyenne/consensus entre pools | PLANNED |
|
||||
| Invariant | Statut |
|
||||
|----------------------------------------------|--------|
|
||||
| pair address SOL/USD explicite dans settings | PASS |
|
||||
| `chainId = solana` vérifié | PASS |
|
||||
| identité SOL de la paire vérifiée | PASS |
|
||||
| `priceUsd` utilisé comme prix commun | PASS |
|
||||
| aucune recherche automatique de pool | PASS |
|
||||
| aucun tri automatique par liquidité | PASS |
|
||||
| aucune moyenne/consensus entre pools | PASS |
|
||||
|
||||
## 10. Config -> Off-chain Transport
|
||||
|
||||
|
||||
Reference in New Issue
Block a user