v0.2.11-pre.002

This commit is contained in:
2026-08-25 19:45:06 +02:00
parent f42fa8f4f1
commit 4f92fb03f1
17 changed files with 1610 additions and 44 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/014-V0_2_11_OFFCHAIN_PRICE_TRANSPORT.md -->
<!-- version: 1 -->
<!-- version: 2 -->
# Validation `0.2.11` — Off-chain price transport SOL/USD
@@ -44,7 +44,23 @@ Les statuts `PLANNED` restent non validés tant que la tranche correspondante n'
| forecast prereleases établi | PASS | plan 018 |
| code runtime provider ajouté en `pre.001` | N/A | interdit par le gate, aucune crate créée |
## 3. Matrice provider prévue
## 3. Gate `0.2.11-pre.002`
| Critère | Statut | Preuve |
|----------------------------------------------------|--------|----------------------------------------------------|
| crate `ksp-offchain-transport-lib` créée | PASS | membre workspace + package dédié |
| version workspace synchronisée sur `0.2.11-pre.2` | PASS | `Cargo.toml` racine |
| dépendance inverse vers Config absente | PASS | manifest crate |
| `reqwest` et SDK providers absents de la fondation | PASS | manifest crate |
| `PriceDecimal` exact sans canon `f64` | PASS | coefficient `u128`, scale 18, sérialisation string |
| SOL/USD seule paire publique V1 | PASS | `PricePair::SolUsd` + `SolUsdPriceObservation` |
| identifiant/descripteur provider opaques | PASS | `PriceProviderId` + `PriceProviderDescriptor` |
| auth/rate-limit/quota représentables génériquement | PASS | types provider-neutral dédiés |
| settings communs sans faux endpoint/API key | PASS | `PriceProviderCommonSettings` |
| availability provider-neutral représentable | PASS | `PriceProviderAvailability` + `PriceProviderState` |
| HTTP actif ou adapter provider ajouté | N/A | explicitement réservé à `pre.003+` |
## 4. Matrice provider prévue
| Provider | SOL/USD V1 | Gratuit V1 | Mode auth prévu | Test déterministe | Smoke live | Statut courant |
|-------------------|------------|------------|----------------------|-------------------|------------|----------------|
@@ -61,31 +77,31 @@ Les statuts `PLANNED` restent non validés tant que la tranche correspondante n'
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.
## 4. Contrat public prévu
## 5. Contrat public prévu
| Invariant | Statut |
|------------------------------------------------------------------------|---------|
| surface publique limitée à SOL/USD dans V1 | PLANNED |
| identifiants provider opaques pour les consumers | PLANNED |
| provenance provider toujours observable | PLANNED |
| sémantique de prix observable sans prétendre à une équivalence | PLANNED |
| timestamp requête/réception KSP présents | PLANNED |
| timestamp provider optionnel seulement lorsqu'il est réellement fourni | PLANNED |
| absence de prix distincte de zéro | PLANNED |
| `f64` non utilisé comme canon public | PLANNED |
| aucune structure wire provider exportée | PLANNED |
| aucune URL/header/asset id provider requis côté app | PLANNED |
| surface publique limitée à SOL/USD dans V1 | PASS |
| identifiants provider opaques pour les consumers | PASS |
| provenance provider toujours observable | PASS |
| sémantique de prix observable sans prétendre à une équivalence | PASS |
| timestamp requête/réception KSP présents | PASS |
| timestamp provider optionnel seulement lorsqu'il est réellement fourni | PASS |
| absence de prix distincte de zéro | PASS |
| `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 |
| refresh provider par identifiant générique | PLANNED |
| refresh multiple sans connaissance provider côté consumer | PLANNED |
## 5. Rate limiting et availability
## 6. Rate limiting et availability
| Cas | Statut |
|---------------------------------------------------------------|---------|
| cadence locale fixe représentable | PLANNED |
| burst documenté représentable | PLANNED |
| limite dynamique keyless représentable | PLANNED |
| cadence locale fixe représentable | PASS |
| burst documenté représentable | PASS |
| limite dynamique keyless représentable | PASS |
| `429` classé | PLANNED |
| `Retry-After` honoré lorsqu'exploitable | PLANNED |
| cooldown expose prochain instant admissible | PLANNED |
@@ -96,21 +112,21 @@ Avant la stable, les conditions d'usage et la persistance des offres gratuites d
| quota indisponible distingué d'un transport down | PLANNED |
| quota mensuel local non présenté comme compteur authoritative | PLANNED |
## 6. Numeric safety
## 7. Numeric safety
| Cas | Statut |
|-----------------------------------------------------|---------|
| décimal string valide | PLANNED |
| décimal string valide | PASS |
| JSON number valide sans passage canonique par `f64` | PLANNED |
| notation scientifique bornée | PLANNED |
| coefficient/scale overflow rejeté | PLANNED |
| valeur négative rejetée | PLANNED |
| zéro rejeté pour une observation réussie | PLANNED |
| NaN/Inf impossibles dans le type canonique | PLANNED |
| serialization canonique sans perte | PLANNED |
| round-trip public déterministe | PLANNED |
| notation scientifique bornée | PASS |
| coefficient/scale overflow rejeté | PASS |
| valeur négative rejetée | PASS |
| zéro rejeté pour une observation réussie | PASS |
| NaN/Inf impossibles dans le type canonique | PASS |
| serialization canonique sans perte | PASS |
| round-trip public déterministe | PASS |
## 7. HTTP et sécurité
## 8. HTTP et sécurité
| Invariant | Statut |
|------------------------------------------------|---------|
@@ -130,7 +146,7 @@ Avant la stable, les conditions d'usage et la persistance des offres gratuites d
| 5xx classé transient | PLANNED |
| schema drift classé provider protocol | PLANNED |
## 8. DexScreener V1
## 9. DexScreener V1
| Invariant | Statut |
|----------------------------------------------|---------|
@@ -142,7 +158,7 @@ Avant la stable, les conditions d'usage et la persistance des offres gratuites d
| aucun tri automatique par liquidité | PLANNED |
| aucune moyenne/consensus entre pools | PLANNED |
## 9. Config -> Off-chain Transport
## 10. Config -> Off-chain Transport
| Invariant | Statut |
|------------------------------------------------------------------|---------|
@@ -159,7 +175,7 @@ Avant la stable, les conditions d'usage et la persistance des offres gratuites d
| `.env.example` synchronisé pour les secrets réellement ajoutés | PLANNED |
| aucune cadence provider configurable au-dessus de la limite sûre | PLANNED |
## 10. Frontière future `ksp-app-solprices-desk`
## 11. Frontière future `ksp-app-solprices-desk`
| Invariant | Statut |
|--------------------------------------------------------------------|---------|
@@ -175,7 +191,7 @@ 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`.
## 11. Non-régression et gates finaux prévus
## 12. Non-régression et gates finaux prévus
| Gate | Statut |
|-------------------------------------------------|---------|
@@ -193,7 +209,7 @@ Cette section valide l'architecture préparée par `0.2.11`; l'application elle-
| smokes keyed gratuits disponibles à l'opérateur | PLANNED |
| réconciliation README/USAGE/plan/validation | PLANNED |
## 12. Hors scope validé
## 13. Hors scope validé
```text
SOL/EUR et autres quotes