v0.2.9-pre.001-fix.002
This commit is contained in:
26
ROADMAP.md
26
ROADMAP.md
@@ -1,5 +1,5 @@
|
||||
<!-- file: ROADMAP.md -->
|
||||
<!-- version: 84 -->
|
||||
<!-- version: 85 -->
|
||||
|
||||
# Roadmap KSP
|
||||
|
||||
@@ -53,14 +53,22 @@ Le roadmap décrit les objectifs à atteindre et les grandes étapes prévues. U
|
||||
- [X] `0.2.6` — `ksp-app-wallet-desk` + `.kspwallet` V2 stables : composition Config/Wallet/HTTP/Logging, lifecycle VIEW/OWNER, balance, administration/import/export, wire binaire V2, APIs multi-version, migration V1 -> V2 explicite et runtime Tauri packagé user-writable validés ; bundles Linux `.deb`/`.rpm`/`.AppImage` produits avant publication. Plan clôturé : `docs/plans/013-V0_2_6_WALLET_DESK_PLAN.md`.
|
||||
- [X] `0.2.7` — WebSocket Solana standard stable : 9 familles subscribe/unsubscribe typées (18/18 opérations), sessions physiques multiples explicites, subscriptions logiques typées, lifecycle/reconnect/resubscribe/backpressure/shutdown bornés, Config V2, non-régression HTTP 52+14, compliance finale, smoke WebSocket Devnet et audit de dépendances validés ; publication `rel.001` et prompt `0.2.8` prêts.
|
||||
- [X] `0.2.8` — Helius LaserStream WebSocket stable : façade provider dédiée sur l’actor WebSocket partagé, sept familles standard réutilisées (`account/logs/program/root/signature/slot/slotsUpdates`) + `transactionSubscribe`/`transactionUnsubscribe`, `block/vote` absents, heartbeat Ping 60 s Helius-only, Config V2/secrets redacted, lifecycle adversarial, compliance HTTP 52+14 / Standard WS 18/18 et graphes Cargo finaux validés ; prompt `0.2.9` prêt.
|
||||
- [ ] `0.2.9` — Construire le moteur client Yellowstone gRPC partagé, exposer la surface Solana Yellowstone standard et réaliser la première intégration provider PublicNode Mainnet/Testnet sans dupliquer le moteur.
|
||||
- [ ] `0.2.10` — Ajouter l’intégration Yellowstone gRPC OrbitFlare sur le moteur/standard acquis, avec auth/capabilities provider auditées et Devnet comme cible gratuite prioritaire.
|
||||
- [ ] `0.2.11` — Ajouter l’intégration Helius LaserStream gRPC sur le moteur Yellowstone partagé, sans confondre cette surface avec LaserStream WebSocket.
|
||||
- [ ] `0.2.12` — Auditer puis, si l’accès et le delta provider le justifient, ajouter l’intégration eRPC Yellowstone gRPC ; ne pas créer une façade vide si seule l’URL diffère.
|
||||
- [ ] `0.2.13` — Introduire `ksp-offchain-transport-lib` avec un premier lecteur de prix, au minimum SOL/USD et SOL/EUR.
|
||||
- [ ] `0.2.14` — Introduire une petite application desk de visualisation/validation des prix offchain, puis intégrer cette capacité dans `ksp-app-wallet-desk` sans dupliquer la logique de récupération/normalisation possédée par le composant spécialisé.
|
||||
- [ ] `0.2.15` — Introduire la première surface de `ksp-interface-lib`, comprenant une API wire publique utilisable par les implémentations officielles et externes.
|
||||
- [ ] `0.2.16` — Introduire `ksp-program-api` comme premier contrat Program extensible, sans imposer encore `ksp-program-lib` complet.
|
||||
- [ ] `0.2.9` — Construire le moteur client Yellowstone gRPC partagé, exposer la surface Solana Yellowstone standard et réaliser la première intégration provider PublicNode Mainnet/Testnet sans dupliquer le moteur ; le provider peut restreindre ou étendre le standard si une divergence réelle est démontrée.
|
||||
- [ ] `0.2.10` — Ajouter l’intégration Yellowstone gRPC OrbitFlare sur le moteur/standard acquis, avec audit explicite des auth/capabilities/restrictions/extensions et Devnet comme cible gratuite prioritaire.
|
||||
- [ ] `0.2.11` — Ajouter l’intégration Helius LaserStream gRPC sur le moteur Yellowstone partagé, avec audit de compatibilité/replay/auth/extensions, sans confondre cette surface avec LaserStream WebSocket.
|
||||
- [ ] `0.2.12` — Introduire `ksp-offchain-transport-lib` avec un premier lecteur de prix, au minimum SOL/USD et SOL/EUR.
|
||||
- [ ] `0.2.13` — Introduire une petite application desk de visualisation/validation des prix offchain, puis intégrer cette capacité dans `ksp-app-wallet-desk` sans dupliquer la logique de récupération/normalisation possédée par le composant spécialisé.
|
||||
- [ ] `0.2.14` — Introduire la première surface de `ksp-interface-lib`, comprenant une API wire publique utilisable par les implémentations officielles et externes.
|
||||
- [ ] `0.2.15` — Introduire `ksp-program-api` comme premier contrat Program extensible, sans imposer encore `ksp-program-lib` complet.
|
||||
|
||||
### TODO/IDEAS — providers Yellowstone non planifiés
|
||||
|
||||
- [ ] **TODO** — eRPC : réauditer accès, auth/IP policy, capabilities et produits complémentaires avant toute décision d’implémentation.
|
||||
- [ ] **TODO** — Triton : réauditer la frontière Yellowstone upstream / extensions Triton, notamment Deshred et futures extensions.
|
||||
- [ ] **TODO** — Alchemy : réauditer auth, replay, limites et capabilities Yellowstone avant toute intégration.
|
||||
- [ ] **TODO** — QuickNode : réauditer auth, compression, `from_slot`, filtres et limites de plan.
|
||||
- [ ] **TODO** — Chainstack : réauditer networks, auth, add-on et capabilities Yellowstone.
|
||||
- [ ] **IDEAS** — Tatum, Shyft, Solinfra, NodeFlare et autres providers : conserver comme candidats exploratoires sans numéro de release ni engagement d’implémentation.
|
||||
|
||||
### Règles Transport pour toute la série
|
||||
|
||||
|
||||
154
deltas/0.2.9/pre.001-fix.002.md
Normal file
154
deltas/0.2.9/pre.001-fix.002.md
Normal file
@@ -0,0 +1,154 @@
|
||||
<!-- file: deltas/0.2.9/pre.001-fix.002.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.2.9-pre.001-fix.002` — provider divergence + waitlist Yellowstone
|
||||
|
||||
## 1. Base requise
|
||||
|
||||
```text
|
||||
0.2.9-pre.001-fix.001
|
||||
workspace.package.version = 0.2.9-pre.1
|
||||
```
|
||||
|
||||
Ce correctif est **documentaire uniquement**. Conformément au workflow de version, il ne modifie pas `workspace.package.version`.
|
||||
|
||||
## 2. Motif du correctif
|
||||
|
||||
Le cadrage `pre.001-fix.001` avait correctement séparé :
|
||||
|
||||
```text
|
||||
N1 moteur Yellowstone partagé
|
||||
N2 façade Solana Yellowstone standard
|
||||
N3 intégration provider
|
||||
```
|
||||
|
||||
mais la formulation « sans duplication du moteur ni du wire standard » pouvait être comprise comme une hypothèse d'équivalence wire/capabilities entre Yellowstone upstream et tous les providers.
|
||||
|
||||
Cette hypothèse n'est pas acceptable : un provider peut implémenter seulement un sous-ensemble du standard, imposer des limites/auth/lifecycle différents ou proposer des extensions propres.
|
||||
|
||||
Le correctif ferme aussi la liste des providers à implémenter à court terme :
|
||||
|
||||
```text
|
||||
0.2.9 PublicNode
|
||||
0.2.10 OrbitFlare
|
||||
0.2.11 Helius LaserStream gRPC
|
||||
```
|
||||
|
||||
Les autres providers ne reçoivent plus de numéro de release réservé.
|
||||
|
||||
## 3. Décisions corrigées
|
||||
|
||||
### 3.1 Règle N1 / N2 / N3
|
||||
|
||||
```text
|
||||
N1 = moteur client Yellowstone unique
|
||||
N2 = contrat Solana Yellowstone standard KSP
|
||||
N3 = adaptation provider
|
||||
```
|
||||
|
||||
Invariant N1 :
|
||||
|
||||
```text
|
||||
aucun second actor/channel/stream moteur par provider
|
||||
```
|
||||
|
||||
Règle N2/N3 :
|
||||
|
||||
```text
|
||||
réutiliser N2 lorsqu'une capacité provider est réellement compatible
|
||||
restreindre explicitement N2 lorsqu'une capacité standard est absente/non supportée
|
||||
ajouter une extension typed N3 lorsqu'un provider étend le protocole/wire
|
||||
porter en N3 les différences auth/metadata/compression/keepalive/replay/from_slot/limites/lifecycle
|
||||
ne jamais présumer une équivalence provider/standard sans preuve
|
||||
```
|
||||
|
||||
Une divergence réelle n'est donc ni dupliquée arbitrairement ni masquée derrière le standard.
|
||||
|
||||
### 3.2 Providers actuellement planifiés
|
||||
|
||||
```text
|
||||
0.2.9 moteur Yellowstone + standard Solana + PublicNode
|
||||
0.2.10 OrbitFlare Yellowstone gRPC
|
||||
0.2.11 Helius LaserStream gRPC
|
||||
```
|
||||
|
||||
Chaque release provider commence par un delta audit avec Yellowstone upstream courant et ne matérialise que ses différences réelles.
|
||||
|
||||
### 3.3 Providers en attente
|
||||
|
||||
Les providers suivants sont retirés de la séquence numérotée :
|
||||
|
||||
```text
|
||||
TODO eRPC
|
||||
TODO Triton
|
||||
TODO Alchemy
|
||||
TODO QuickNode
|
||||
TODO Chainstack
|
||||
IDEAS Tatum
|
||||
IDEAS Shyft
|
||||
IDEAS Solinfra
|
||||
IDEAS NodeFlare
|
||||
IDEAS autres providers
|
||||
```
|
||||
|
||||
Aucun Config profile, type public, dépendance, smoke ou forecast n'est préparé pour eux tant qu'une décision explicite d'implémentation n'est pas prise.
|
||||
|
||||
### 3.4 Séquence fonctionnelle libérée
|
||||
|
||||
La suppression de la réservation `0.2.12 eRPC` ramène la suite active à :
|
||||
|
||||
```text
|
||||
0.2.12 off-chain price transport
|
||||
0.2.13 Price Desk + intégration prix Wallet Desk
|
||||
0.2.14 interface/wire foundation
|
||||
0.2.15 program-api foundation
|
||||
```
|
||||
|
||||
## 4. Fichiers modifiés
|
||||
|
||||
```text
|
||||
ROADMAP.md
|
||||
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
|
||||
docs/plans/016-V0_2_9_YELLOWSTONE_GRPC_PLAN.md
|
||||
docs/validation/012-V0_2_9_YELLOWSTONE_GRPC.md
|
||||
```
|
||||
|
||||
## 5. Fichier ajouté
|
||||
|
||||
```text
|
||||
deltas/0.2.9/pre.001-fix.002.md
|
||||
```
|
||||
|
||||
## 6. Fichiers non modifiés intentionnellement
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
prompts/014-V0_2_9_START_PROMPT.md
|
||||
crates/**
|
||||
config/**
|
||||
.env.example
|
||||
```
|
||||
|
||||
Le prompt `014` reste l'autorité historique d'ouverture ; le plan et les deltas successifs enregistrent les décisions prises pendant le gate.
|
||||
|
||||
## 7. Validation
|
||||
|
||||
Correctif documentaire :
|
||||
|
||||
```bash
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
```
|
||||
|
||||
Aucun `cargo check/clippy/test` supplémentaire n'est requis par ce correctif tant qu'aucun artefact code/build/runtime/config n'est modifié.
|
||||
|
||||
## 8. État de sortie
|
||||
|
||||
```text
|
||||
N1 moteur unique explicite
|
||||
N2 standard non présumé universel
|
||||
N3 peut réutiliser/restreindre/étendre
|
||||
PublicNode/OrbitFlare/Helius seuls providers planifiés
|
||||
reste des providers en TODO/IDEAS non numérotés
|
||||
off-chain price revient en 0.2.12
|
||||
aucun changement runtime/dependency
|
||||
```
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md -->
|
||||
<!-- version: 87 -->
|
||||
<!-- version: 88 -->
|
||||
|
||||
# Séquence des releases fonctionnelles KSP
|
||||
|
||||
@@ -366,11 +366,10 @@ Par défaut :
|
||||
0.2.9 Yellowstone gRPC engine + Solana standard + PublicNode
|
||||
0.2.10 OrbitFlare Yellowstone gRPC
|
||||
0.2.11 Helius LaserStream gRPC
|
||||
0.2.12 eRPC Yellowstone gRPC (conditionnel après réaudit accès/capabilities)
|
||||
0.2.13 off-chain price transport
|
||||
0.2.14 price visualization desk + intégration prix dans Wallet Desk
|
||||
0.2.15 interface/wire foundation
|
||||
0.2.16 program-api foundation
|
||||
0.2.12 off-chain price transport
|
||||
0.2.13 price visualization desk + intégration prix dans Wallet Desk
|
||||
0.2.14 interface/wire foundation
|
||||
0.2.15 program-api foundation
|
||||
```
|
||||
|
||||
`0.2.1-pre.001` a appliqué le gate de sizing et refusé le scope HTTP monolithique initial : l'inventaire du 2026-08-17 contient 52 méthodes courantes et 14 méthodes Deprecated historiques. Ce premier delta avait réparti la couverture typée sur `0.2.1`–`0.2.6`. `0.2.1-pre.001-fix.001` recalibre ensuite les 48 méthodes restantes sur trois releases complémentaires `0.2.2`–`0.2.4`, soit trois sessions nominales au maximum si chaque release utilise sa session complète. Si une release se clôt plus vite que prévu, la même session peut enchaîner la suivante après clôture complète de la précédente et nouveau gate de sizing positif. Un Wallet Desk utile doit pouvoir lire le solde du wallet : `getBalance` fait donc partie des quatre canaris de la foundation `0.2.1`, avant Wallet. Les transports live arrivent ensuite ; Interface/Program restent préparés avant les couches de données décodées.
|
||||
@@ -480,33 +479,51 @@ Mission : construire un moteur client Yellowstone gRPC partagé dans `ksp-onchai
|
||||
|
||||
Le `pre.001` est un gate de sizing : chaque prerelease vise 15–20 minutes de travail effectif et la release complète doit rester clôturable dans une seule session. Si cette clôture devient incertaine, `0.2.9` est scindée avant implémentation lourde supplémentaire.
|
||||
|
||||
La séparation cible reprend le modèle WebSocket : moteur physique partagé -> protocole standard -> adaptations provider. PublicNode est la première intégration provider ; une façade spécialisée n'est créée que si une différence réelle de capabilities/wire/lifecycle le justifie.
|
||||
La séparation cible reprend le modèle WebSocket : moteur physique partagé -> protocole standard -> adaptations provider. PublicNode est la première intégration provider. Le moteur n'est jamais dupliqué ; le standard n'est réutilisé que pour les capacités réellement compatibles. Une couche provider peut restreindre le standard ou porter des extensions wire/lifecycle explicites.
|
||||
|
||||
### `0.2.10`–`0.2.12` — providers Yellowstone
|
||||
### `0.2.10`–`0.2.11` — providers Yellowstone retenus
|
||||
|
||||
```text
|
||||
0.2.10 OrbitFlare Yellowstone gRPC
|
||||
0.2.11 Helius LaserStream gRPC
|
||||
0.2.12 eRPC Yellowstone gRPC, conditionné à un accès exploitable et à un delta provider réel
|
||||
```
|
||||
|
||||
Chaque release réutilise le moteur et le standard de `0.2.9`. Un provider qui ne diffère finalement que par son URL/configuration ne justifie ni second actor ni façade vide ; son gate peut réduire/fusionner le scope avant implémentation.
|
||||
Chaque release réutilise le moteur de `0.2.9`, audite son delta avec Yellowstone upstream et matérialise uniquement les restrictions/extensions réelles du provider.
|
||||
|
||||
### `0.2.13` / `0.2.14` — Off-chain price + app
|
||||
### TODO/IDEAS — providers Yellowstone en attente
|
||||
|
||||
`0.2.13` introduit `ksp-offchain-transport-lib` avec au minimum SOL/USD et SOL/EUR via une abstraction indépendante du premier provider.
|
||||
Aucune release n'est réservée pour :
|
||||
|
||||
`0.2.14` ajoute une petite application desk de visualisation/validation. Après stabilisation de cette application spécialisée, la même release doit intégrer la capacité de prix offchain dans `ksp-app-wallet-desk` sans dupliquer la récupération/normalisation appartenant au composant spécialisé.
|
||||
```text
|
||||
TODO eRPC
|
||||
TODO Triton
|
||||
TODO Alchemy
|
||||
TODO QuickNode
|
||||
TODO Chainstack
|
||||
IDEAS Tatum
|
||||
IDEAS Shyft
|
||||
IDEAS Solinfra
|
||||
IDEAS NodeFlare
|
||||
IDEAS autres providers à réauditer
|
||||
```
|
||||
|
||||
Ces providers ne déplacent pas la séquence active et ne reçoivent ni façade, ni Config profile, ni smoke tant qu'une décision explicite d'implémentation n'est pas prise.
|
||||
|
||||
### `0.2.12` / `0.2.13` — Off-chain price + app
|
||||
|
||||
`0.2.12` introduit `ksp-offchain-transport-lib` avec au minimum SOL/USD et SOL/EUR via une abstraction indépendante du premier provider.
|
||||
|
||||
`0.2.13` ajoute une petite application desk de visualisation/validation. Après stabilisation de cette application spécialisée, la même release doit intégrer la capacité de prix offchain dans `ksp-app-wallet-desk` sans dupliquer la récupération/normalisation appartenant au composant spécialisé.
|
||||
|
||||
Metadata HTTP/IPFS/Arweave viendra au premier besoin Metadata réel.
|
||||
|
||||
### `0.2.15` — Interface foundation
|
||||
### `0.2.14` — Interface foundation
|
||||
|
||||
`ksp-interface-lib` devient la façade wire officielle et expose une API publique wire utilisable par les implementations officielles et externes.
|
||||
|
||||
Aucune `ksp-interface-api` séparée n'est retenue pour l'instant.
|
||||
|
||||
### `0.2.16` — Program API foundation
|
||||
### `0.2.15` — Program API foundation
|
||||
|
||||
Introduire `ksp-program-api`, sans suffixe `-lib`, comme contrat d'extension Program.
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!-- file: docs/plans/016-V0_2_9_YELLOWSTONE_GRPC_PLAN.md -->
|
||||
<!-- version: 3 -->
|
||||
<!-- version: 4 -->
|
||||
|
||||
# Plan `0.2.9` — moteur Yellowstone gRPC + standard Solana + PublicNode
|
||||
|
||||
> **Statut : `0.2.9-pre.001-fix.001` — gate audit/sizing corrigé. `0.2.9` est bornée à un moteur client Yellowstone partagé, une façade Solana Yellowstone standard et une première intégration concrète PublicNode. Les autres providers Yellowstone sont sortis de la release et planifiés séparément. Chaque prerelease vise 15–20 minutes de travail effectif et la release complète doit rester clôturable dans une seule session de chat.**
|
||||
> **Statut : `0.2.9-pre.001-fix.002` — gate audit/sizing corrigé. `0.2.9` est bornée à un moteur client Yellowstone partagé, une façade Solana Yellowstone standard et une première intégration concrète PublicNode. Seuls OrbitFlare puis Helius LaserStream gRPC sont actuellement planifiés comme releases provider suivantes ; les autres providers restent en TODO/IDEAS sans numéro réservé. Chaque prerelease vise 15–20 minutes de travail effectif et la release complète doit rester clôturable dans une seule session de chat.**
|
||||
|
||||
## 1. Objet, base et état d'ouverture
|
||||
|
||||
@@ -56,21 +56,31 @@ N2 façade protocolaire Solana Yellowstone standard
|
||||
|
||||
N3 première intégration provider : PublicNode / Allnodes-backed
|
||||
Mainnet + Testnet, capabilities/profile/config + smokes live opt-in
|
||||
sans duplication du moteur ni du wire standard
|
||||
sans duplication du moteur ; le wire standard est réutilisé uniquement pour les capacités réellement compatibles
|
||||
```
|
||||
|
||||
Le moteur est **Yellowstone-specific**, pas une abstraction gRPC universelle. Le serveur/plugin Geyser reste hors de KSP ; KSP implémente le client du protocole Yellowstone exposé par les providers.
|
||||
|
||||
La première intégration PublicNode peut rester volontairement mince si le provider n'ajoute aucun wire ou lifecycle propriétaire : l'objectif est de matérialiser la frontière provider, les capabilities et la validation live, pas de créer artificiellement un second actor/session. Un type/facade provider-specific public n'est justifié que si PublicNode impose une différence réelle de contrat.
|
||||
|
||||
La compatibilité provider n'est toutefois **jamais présumée totale**. Pour chaque provider, N3 peut :
|
||||
|
||||
```text
|
||||
réutiliser N2 pour une capacité Yellowstone réellement compatible
|
||||
restreindre une capacité standard absente/non supportée
|
||||
ajouter une extension provider-specific typed
|
||||
adapter auth/metadata, compression, keepalive, replay/from_slot, limites ou lifecycle
|
||||
```
|
||||
|
||||
Le moteur N1 reste unique. Le wire N2 n'est jamais recopié quand il est identique, mais une divergence réelle de wire ou de sémantique doit être isolée explicitement dans N3 plutôt que masquée derrière le standard.
|
||||
|
||||
Sont explicitement exclus de `0.2.9` :
|
||||
|
||||
```text
|
||||
SubscribeDeshred et pré-exécution/deshred
|
||||
OrbitFlare provider integration
|
||||
Helius LaserStream gRPC provider integration
|
||||
eRPC provider integration
|
||||
Tatum/Triton/Chainstack/Shyft/autres providers
|
||||
eRPC/Triton/Alchemy/QuickNode/Chainstack/Tatum/Shyft/Solinfra/NodeFlare/autres providers
|
||||
client autoreconnect upstream comme contrat public KSP
|
||||
pool/scheduler automatique complexe de sessions gRPC
|
||||
exactly-once / lossless / ordre global garanti
|
||||
@@ -78,7 +88,7 @@ serveur Geyser/plugin validator
|
||||
Store/workers/backfill historique
|
||||
```
|
||||
|
||||
Les providers suivants sont **des releases ultérieures**, comme Helius LaserStream WebSocket l'a été après le moteur WebSocket standard. Ils réutiliseront N1/N2 et n'ajouteront une façade spécialisée que lorsqu'une différence d'authentification, de capabilities, de wire, de keepalive, de replay ou de lifecycle le nécessite.
|
||||
Après `0.2.9`, seules deux releases provider sont actuellement réservées : **OrbitFlare**, puis **Helius LaserStream gRPC**. Elles réutiliseront N1/N2 lorsque compatibles et isoleront leurs restrictions/extensions dans N3. Tous les autres providers restent en TODO/IDEAS sans numéro réservé jusqu'à décision explicite ultérieure.
|
||||
|
||||
## 3. Sources internes relues
|
||||
|
||||
@@ -551,10 +561,10 @@ Helius LaserStream WS HeliusLaserStreamWsSession
|
||||
Yellowstone gRPC engine nouveau runtime/session physique partagé
|
||||
Solana Yellowstone standard façade typed standard sur ce moteur
|
||||
PublicNode Yellowstone première intégration provider sur standard
|
||||
future providers adapters/facades séparés seulement si différence réelle
|
||||
future providers adapters/capabilities pouvant réutiliser, restreindre ou étendre le standard
|
||||
```
|
||||
|
||||
Cette structure reprend le principe validé par `0.2.7`/`0.2.8` : **le moteur physique n'est jamais recopié par provider**.
|
||||
Cette structure reprend le principe validé par `0.2.7`/`0.2.8` : **le moteur physique n'est jamais recopié par provider**. En revanche, l'intégration provider doit pouvoir exprimer un sous-ensemble du standard, des overrides de comportement ou des extensions wire réelles ; l'équivalence complète avec N2 n'est jamais supposée.
|
||||
|
||||
Interdictions :
|
||||
|
||||
@@ -587,11 +597,14 @@ YellowstoneUpdate / typed update projections
|
||||
|
||||
# N3 — provider
|
||||
provider descriptor/capabilities ouverts
|
||||
standard capabilities supportées / restreintes explicitement
|
||||
provider extensions typed si nécessaires
|
||||
provider auth/metadata/compression/replay/lifecycle policy
|
||||
PublicNode integration/profile/canaries
|
||||
PublicNode-specific facade seulement si une différence réelle le justifie
|
||||
```
|
||||
|
||||
Le backend wire Tonic/Prost reste privé. Tous les types publics nécessaires sont réexportés au crate root conformément aux règles KSP. Le provider et le protocole restent deux axes distincts : `PublicNode` décrit **où/comment** on exécute Yellowstone standard, pas un nouveau protocole.
|
||||
Le backend wire Tonic/Prost reste privé. Tous les types publics nécessaires sont réexportés au crate root conformément aux règles KSP. Le provider et le protocole restent deux axes distincts : `PublicNode` décrit **où/comment et avec quelles capabilities** on exécute Yellowstone. Si une capacité provider est strictement standard, elle réutilise N2 ; si elle diverge, N3 porte explicitement cette divergence.
|
||||
|
||||
### 12.3 Metadata/auth provider-neutral
|
||||
|
||||
@@ -607,7 +620,7 @@ Il ne connaît :
|
||||
```text
|
||||
aucun nom KSP_SECRET_*
|
||||
aucun std::env
|
||||
aucun header PublicNode/OrbitFlare/Tatum hardcodé comme contrat standard
|
||||
aucun header PublicNode/OrbitFlare/Helius hardcodé comme contrat standard
|
||||
```
|
||||
|
||||
Les clés metadata sont validées avant I/O ; les valeurs sensibles ne sont jamais dans `Debug`, `Display`, `KspError`, logs ou snapshots.
|
||||
@@ -721,13 +734,14 @@ Credit Limits = Unlimited
|
||||
|
||||
Cela répond au besoin « gratuit durable » mieux qu'un trial de quelques jours, mais nécessite un compte/credential.
|
||||
|
||||
Décision `0.2.9` :
|
||||
Décision de séquence :
|
||||
|
||||
```text
|
||||
OrbitFlare Devnet = smoke live opt-in secondaire
|
||||
auth = via generic secret metadata Config -> Transport
|
||||
aucun OrbitFlareGrpc* public
|
||||
aucun header provider hardcodé avant vérification exacte de la doc/live
|
||||
OrbitFlare = release provider dédiée 0.2.10
|
||||
Devnet Free = cible live prioritaire de cette release
|
||||
auth/capabilities/limites = auditées comme delta provider N3
|
||||
réutilisation de N2 seulement pour les capacités réellement compatibles
|
||||
aucun OrbitFlareGrpc* public vide si aucune divergence de contrat ne le justifie
|
||||
```
|
||||
|
||||
Source :
|
||||
@@ -736,49 +750,27 @@ Source :
|
||||
https://orbitflare.com/pricing
|
||||
```
|
||||
|
||||
### 14.3 Tatum — candidat tertiaire, non gate
|
||||
### 14.3 Helius LaserStream gRPC — provider planifié après OrbitFlare
|
||||
|
||||
Tatum documente un endpoint Yellowstone Solana Mainnet et un plan Free utilisable sans abonnement payant, mais le plan courant impose :
|
||||
Helius reste volontairement hors `0.2.9` et `0.2.10`. Sa release dédiée `0.2.11` devra auditer son delta réel avec Yellowstone upstream : auth, endpoints, replay, reconnect/continuity, capacités supplémentaires ou restrictions, et toute extension wire éventuelle. La compatibilité Yellowstone annoncée ne vaut pas preuve d'équivalence complète.
|
||||
|
||||
### 14.4 TODO/IDEAS — autres providers non planifiés
|
||||
|
||||
Aucune version n'est réservée actuellement pour les providers suivants :
|
||||
|
||||
```text
|
||||
3 RPS
|
||||
100K lifetime credits
|
||||
5 subscriptions
|
||||
TODO eRPC — réauditer accès, auth/IP policy, capabilities et éventuels produits Burst/Shred séparés
|
||||
TODO Triton — réauditer upstream vs extensions Triton, notamment Deshred et évolutions futures
|
||||
TODO Alchemy — réauditer capabilities, auth, replay et limites du produit Yellowstone
|
||||
TODO QuickNode — réauditer auth, compression, from_slot, filtres et limites par plan
|
||||
TODO Chainstack — réauditer add-on, networks, auth et capabilities
|
||||
IDEAS Tatum — accès borné par lifetime credits ; intérêt secondaire
|
||||
IDEAS Shyft — réauditer seulement si gRPC durable devient accessible
|
||||
IDEAS Solinfra — free tier + Yellowstone annoncés mais entitlement gRPC gratuit non confirmé
|
||||
IDEAS NodeFlare — réauditer seulement si offre Yellowstone gratuite durable apparaît
|
||||
```
|
||||
|
||||
Le caractère « forever » du plan n'en fait donc pas une ressource illimitée dans le temps : le quota de crédits est lifetime.
|
||||
|
||||
Décision : **candidat manuel tertiaire**, utile pour interop Mainnet authentifiée, mais pas dépendance du gate `0.2.9`.
|
||||
|
||||
Sources :
|
||||
|
||||
```text
|
||||
https://docs.tatum.io/reference/solana-grpc
|
||||
https://tatum.io/pricing
|
||||
```
|
||||
|
||||
### 14.4 Fournisseurs vérifiés mais non retenus comme gratuits gRPC
|
||||
|
||||
État courant vérifié :
|
||||
|
||||
```text
|
||||
Helius Free: pas de LaserStream gRPC ; Devnet à partir de Developer, Mainnet Business
|
||||
Shyft Free: No gRPC Access
|
||||
Alchemy Yellowstone gRPC: PAYG ou Enterprise requis
|
||||
QuickNode Yellowstone gRPC: Scale/Business ou add-on payant
|
||||
Chainstack Yellowstone gRPC: add-on payant à partir de 49 USD/mois, Growth+
|
||||
ERPC Geyser gRPC payant ; seulement trial 1 jour sur le plan Standard
|
||||
NodeFlare endpoint Yellowstone publié, mais plan Yellowstone à forfait mensuel
|
||||
Bitquery CoreCast gRPC n'est pas Yellowstone ; accès stream gratuit non garanti et offre publique payante/trial
|
||||
```
|
||||
|
||||
Candidat non validé comme gratuit durable :
|
||||
|
||||
```text
|
||||
Solinfra site public = free tier + Yellowstone annoncés, mais entitlement gRPC du free tier non explicite
|
||||
```
|
||||
|
||||
Solinfra pourra être revalidé en `pre.011` si une grille publique ou le dashboard confirme un droit Yellowstone durable à 0 USD. Triton et d'autres providers peuvent également être réaudités si leur offre change, mais aucun autre accès Yellowstone gratuit durable n'a été confirmé avec une preuve publique suffisante pendant ce gate.
|
||||
Ces entrées n'ont **aucun numéro de release**, aucun forecast et aucun engagement d'implémentation. Elles ne sont reprises dans la séquence active que sur décision explicite ultérieure. Bitquery/CoreCast reste hors de cette file Yellowstone tant que son protocole n'est pas Yellowstone standard.
|
||||
|
||||
## 15. Smoke ownership
|
||||
|
||||
@@ -791,7 +783,7 @@ Hiérarchie cible :
|
||||
2. Transport pur programmatic -> PublicNode Testnet, si endpoint exact confirmé
|
||||
3. Config V3 -> Transport -> PublicNode profile, si Config est matérialisée dans 0.2.9
|
||||
|
||||
OrbitFlare et les providers authentifiés sont validés dans leurs releases dédiées.
|
||||
OrbitFlare et Helius sont validés dans leurs releases dédiées. Les autres providers ne font l'objet d'aucun smoke planifié tant qu'ils restent en TODO/IDEAS.
|
||||
4. Tatum Mainnet authentifié, opérateur-only si utile
|
||||
```
|
||||
|
||||
@@ -1027,7 +1019,7 @@ Config V3 backward V1/V2 si Config intégrée
|
||||
PublicNode intégration provider matérialisée sans duplication du moteur
|
||||
PublicNode interop Mainnet validée opt-in ou impossibilité externe documentée
|
||||
PublicNode Testnet validé si endpoint live confirmé, sinon raison documentée
|
||||
OrbitFlare/Helius/eRPC absents du runtime 0.2.9 hors documentation de séquence
|
||||
OrbitFlare/Helius absents du runtime 0.2.9 hors documentation de séquence ; autres providers uniquement TODO/IDEAS
|
||||
HTTP 52+14 non régressé
|
||||
standard WS 18/18 non régressé
|
||||
Helius WS non régressé
|
||||
@@ -1040,17 +1032,18 @@ workspace final vert
|
||||
|
||||
## 21. Releases suivantes recalibrées
|
||||
|
||||
Le gate `pre.001-fix.001` reprend la logique WebSocket : moteur/standard d'abord, providers ensuite, un provider par release lorsque son intégration apporte un delta réel.
|
||||
Le gate `pre.001-fix.002` reprend la logique WebSocket : moteur/standard d'abord, puis uniquement les providers effectivement retenus pour implémentation.
|
||||
|
||||
```text
|
||||
0.2.9 moteur Yellowstone + Solana standard + PublicNode
|
||||
0.2.10 OrbitFlare Yellowstone gRPC
|
||||
0.2.11 Helius LaserStream gRPC
|
||||
0.2.12 eRPC Yellowstone gRPC, conditionné à un accès exploitable et à un delta provider réel
|
||||
0.2.13 off-chain price transport
|
||||
0.2.14 Price Desk + intégration prix Wallet Desk
|
||||
0.2.15 interface/wire foundation
|
||||
0.2.16 program-api foundation
|
||||
0.2.12 off-chain price transport
|
||||
0.2.13 Price Desk + intégration prix Wallet Desk
|
||||
0.2.14 interface/wire foundation
|
||||
0.2.15 program-api foundation
|
||||
```
|
||||
|
||||
La numérotation `0.2.10+` reste réauditable au gate de chaque release : un provider qui n'ajoute finalement qu'une URL interchangeable sans contrat propre ne doit pas provoquer une façade vide ni une release artificielle.
|
||||
Les autres providers Yellowstone — eRPC, Triton, Alchemy, QuickNode, Chainstack, Tatum, Shyft, Solinfra, NodeFlare et autres — restent en **TODO/IDEAS non numérotés**. Ils ne doivent pas déplacer la séquence active tant qu'une décision explicite d'implémentation n'est pas prise.
|
||||
|
||||
Pour toute intégration provider future, la règle reste : N1 n'est jamais dupliqué ; N2 est réutilisé seulement là où le provider est réellement compatible ; N3 exprime explicitement les restrictions, overrides et extensions.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!-- file: docs/validation/012-V0_2_9_YELLOWSTONE_GRPC.md -->
|
||||
<!-- version: 3 -->
|
||||
<!-- version: 4 -->
|
||||
|
||||
# Validation `0.2.9` — moteur Yellowstone + standard Solana + PublicNode
|
||||
|
||||
> **Statut : matrice ouverte par `0.2.9-pre.001` et corrigée par `pre.001-fix.001`. Le scope distingue désormais moteur Yellowstone, façade Solana standard et première intégration PublicNode. OrbitFlare/Helius/eRPC sont reportés dans des releases provider dédiées.**
|
||||
> **Statut : matrice ouverte par `0.2.9-pre.001` et corrigée par `pre.001-fix.002`. Le scope distingue moteur Yellowstone, façade Solana standard et première intégration PublicNode. OrbitFlare et Helius sont les seules releases provider suivantes actuellement planifiées ; les autres providers restent en TODO/IDEAS sans numéro réservé.**
|
||||
|
||||
## 1. Autorités du gate
|
||||
|
||||
@@ -230,20 +230,22 @@ prost/prost-types 0.14.x (0.14.4 latest observé)
|
||||
|
||||
## 9. Architecture / ownership
|
||||
|
||||
| Invariant | Preuve cible | État |
|
||||
|--------------------------------------------------------------------------------|--------------------------|------|
|
||||
| backend gRPC distinct HTTP/WS | source/API canary | TODO |
|
||||
| aucun `WsProtocolKind` gRPC | source scan | TODO |
|
||||
| Transport owns gRPC | dependency graph | TODO |
|
||||
| Config -> Transport seulement | ownership test | TODO |
|
||||
| Transport -X-> Config | ownership test | TODO |
|
||||
| Transport -X-> std::env KSP_* | ownership test | TODO |
|
||||
| Logging façade KSP only | logging ownership | TODO |
|
||||
| no raw Tonic client escape hatch | public API canary | TODO |
|
||||
| moteur Yellowstone partagé sans duplication provider | source/API canary | TODO |
|
||||
| façade Solana Yellowstone standard distincte du moteur | public API canary | TODO |
|
||||
| PublicNode représenté comme provider/capabilities, pas comme nouveau protocole | public API/config canary | TODO |
|
||||
| façade provider spécialisée seulement si delta réel | completeness review | TODO |
|
||||
| Invariant | Preuve cible | État |
|
||||
|--------------------------------------------------------------------------------|--------------------------------|------|
|
||||
| backend gRPC distinct HTTP/WS | source/API canary | TODO |
|
||||
| aucun `WsProtocolKind` gRPC | source scan | TODO |
|
||||
| Transport owns gRPC | dependency graph | TODO |
|
||||
| Config -> Transport seulement | ownership test | TODO |
|
||||
| Transport -X-> Config | ownership test | TODO |
|
||||
| Transport -X-> std::env KSP_* | ownership test | TODO |
|
||||
| Logging façade KSP only | logging ownership | TODO |
|
||||
| no raw Tonic client escape hatch | public API canary | TODO |
|
||||
| moteur Yellowstone partagé sans duplication provider | source/API canary | TODO |
|
||||
| façade Solana Yellowstone standard distincte du moteur | public API canary | TODO |
|
||||
| PublicNode représenté comme provider/capabilities, pas comme nouveau protocole | public API/config canary | TODO |
|
||||
| provider peut réutiliser, restreindre ou étendre N2 sans dupliquer N1 | capability/completeness review | TODO |
|
||||
| aucune équivalence provider/standard présumée sans preuve | provider matrix/tests | TODO |
|
||||
| façade provider spécialisée seulement si delta réel | completeness review | TODO |
|
||||
|
||||
## 10. Settings, bounds et redaction
|
||||
|
||||
@@ -341,14 +343,17 @@ Canaries :
|
||||
|
||||
## 13. Providers — validation et séquence
|
||||
|
||||
| Provider | Accès gratuit/durable observé | Rôle architectural | Release cible | Verdict |
|
||||
|----------------------------------|-------------------------------------------|-----------------------------------------------------|-------------------------|-----------------|
|
||||
| **PublicNode / Allnodes-backed** | Mainnet + Testnet Yellowstone gRPC | première intégration concrète du standard | **0.2.9** | **IN provider** |
|
||||
| **OrbitFlare** | Devnet Free | provider authentifié réutilisant standard | **0.2.10** | **REPORT** |
|
||||
| **Helius LaserStream gRPC** | accès dépendant du plan | compat Yellowstone + sémantiques provider à auditer | **0.2.11** | **REPORT** |
|
||||
| **eRPC** | gratuit durable non confirmé au gate | provider à réauditer | **0.2.12 conditionnel** | **REPORT** |
|
||||
| Tatum | Free durable mais crédits lifetime bornés | candidat ultérieur | non réservé | REPORT |
|
||||
| Triton/Chainstack/Shyft/autres | selon accès/capabilities | candidats ultérieurs | non réservé | REPORT |
|
||||
| Provider | Accès gratuit/durable observé | Rôle architectural | Release cible | Verdict |
|
||||
|-----------------------------------------------|------------------------------------|-----------------------------------------------------------|---------------|-----------------|
|
||||
| **PublicNode / Allnodes-backed** | Mainnet + Testnet Yellowstone gRPC | première intégration concrète | **0.2.9** | **IN provider** |
|
||||
| **OrbitFlare** | Devnet Free | provider dédié ; compat/restrictions/extensions à auditer | **0.2.10** | **PLANNED** |
|
||||
| **Helius LaserStream gRPC** | accès dépendant du plan | provider dédié ; compat/replay/auth/extensions à auditer | **0.2.11** | **PLANNED** |
|
||||
| eRPC | à réauditer | waitlist provider | non réservé | TODO |
|
||||
| Triton | à réauditer | upstream + extensions provider possibles | non réservé | TODO |
|
||||
| Alchemy | à réauditer | waitlist provider | non réservé | TODO |
|
||||
| QuickNode | à réauditer | waitlist provider | non réservé | TODO |
|
||||
| Chainstack | à réauditer | waitlist provider | non réservé | TODO |
|
||||
| Tatum / Shyft / Solinfra / NodeFlare / autres | selon accès/capabilities | attente exploratoire | non réservé | IDEAS |
|
||||
|
||||
### PublicNode `0.2.9`
|
||||
|
||||
@@ -365,14 +370,16 @@ utilise le moteur Yellowstone partagé
|
||||
utilise la façade standard Solana
|
||||
provider/capabilities/profile explicitement identifiables
|
||||
aucune duplication actor/channel/stream
|
||||
aucun wire PublicNode inventé si le provider reste standard
|
||||
wire N2 réutilisé seulement pour les capacités réellement compatibles ; divergence N3 explicite
|
||||
Mainnet smoke opt-in
|
||||
Testnet smoke opt-in si endpoint exact confirmé
|
||||
```
|
||||
|
||||
### Providers suivants
|
||||
|
||||
OrbitFlare, Helius et eRPC ne sont plus des smokes secondaires de `0.2.9`. Chacun est audité dans sa release dédiée et ne reçoit une façade/type spécialisé que si l'authentification, les capabilities, le wire, le keepalive, le replay ou le lifecycle diffèrent réellement du standard.
|
||||
OrbitFlare (`0.2.10`) et Helius LaserStream gRPC (`0.2.11`) sont les seules intégrations provider actuellement planifiées après PublicNode. Pour chacune, le gate doit comparer le provider au Yellowstone upstream courant : capacités supportées, restrictions, extensions wire, auth/metadata, compression, keepalive, replay/from_slot, limites et lifecycle.
|
||||
|
||||
Les autres providers restent en TODO/IDEAS sans release dédiée. Aucune façade, dépendance, Config profile ou smoke n'est préparé pour eux tant qu'une décision explicite ne les fait pas entrer dans la séquence active.
|
||||
|
||||
## 14. Non-régressions obligatoires
|
||||
|
||||
|
||||
Reference in New Issue
Block a user