v0.2.9-pre.002
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
<!-- file: docs/plans/016-V0_2_9_YELLOWSTONE_GRPC_PLAN.md -->
|
||||
<!-- version: 4 -->
|
||||
<!-- version: 5 -->
|
||||
|
||||
# Plan `0.2.9` — moteur Yellowstone gRPC + standard Solana + PublicNode
|
||||
|
||||
> **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.**
|
||||
> **Statut : `0.2.9-pre.002` — première matérialisation N1 préparée : dépendances Yellowstone/Tonic minimales, settings runtime bornés, error mapping initial et channel Tonic lazy privé. Les gates Cargo restent à exécuter par l’opérateur avant commit. `0.2.9` reste 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
|
||||
|
||||
@@ -298,14 +298,20 @@ https://docs.rs/crate/yellowstone-grpc-proto/latest
|
||||
|
||||
KSP suit la **Rust stable courante de l'opérateur** et ne documente pas de numéro Rust upstream comme objectif de projet. Le seul gate utile est opérationnel : les dépendances finalement retenues doivent compiler avec la stable courante utilisée par le workspace.
|
||||
|
||||
Éléments build à vérifier en `pre.002` :
|
||||
Résultat de matérialisation `pre.002` :
|
||||
|
||||
```text
|
||||
proto crate crate publiée/pré-générée ; pas de vendoring de .proto KSP
|
||||
client KSP autour de Tonic features client/TLS minimales
|
||||
protoc/build.rs aucun outil système ajouté sauf besoin démontré
|
||||
yellowstone-grpc-proto ^12.6 workspace dependency, default-features = false, aucune feature KSP activée
|
||||
tonic ^0.14 workspace dependency, default-features = false ; Transport active seulement `channel`
|
||||
yellowstone-grpc-client absent
|
||||
prost/prost-types aucune dépendance KSP directe
|
||||
tonic-prost aucune dépendance KSP directe à ce stade
|
||||
proto crate publiée/générée ; aucun .proto copié dans KSP
|
||||
protoc aucun outil système KSP ajouté ; la crate proto publiée utilise son build vendored
|
||||
```
|
||||
|
||||
Le feature `tonic` optionnel de `yellowstone-grpc-proto` n'est **pas** activé en `pre.002`. KSP n'a besoin à ce stade que des messages Protobuf générés bruts ; le channel physique est construit directement avec Tonic. Cette décision évite de tirer prématurément la surface client/serveur Tonic générée et laisse `pre.003` choisir explicitement les features supplémentaires réellement nécessaires aux unary/TLS/metadata.
|
||||
|
||||
Un minimum Rust déclaré par une dépendance n'est enregistré que s'il devient un **blocage réel** lors de la compilation ; il n'est pas suivi comme métrique de release.
|
||||
|
||||
## 6. Matrice du service `Geyser` courant
|
||||
@@ -529,16 +535,19 @@ Avantages :
|
||||
|
||||
**Décision : stratégie cible retenue.**
|
||||
|
||||
Matérialisation attendue en `pre.002` :
|
||||
Matérialisation réalisée en `pre.002` :
|
||||
|
||||
```text
|
||||
yellowstone-grpc-proto ^12.6 workspace dependency, features minimales
|
||||
tonic ^0.14 workspace dependency, features client/TLS minimales
|
||||
prost/prost-types pas de direct dependency KSP sauf besoin démontré
|
||||
tokio-stream/futures seulement si nécessaire et sans doublon gratuit
|
||||
yellowstone-grpc-proto ^12.6 root : default-features = false ; Transport : .workspace = true sans feature
|
||||
tonic ^0.14 root : default-features = false ; Transport : features = ["channel"]
|
||||
yellowstone-grpc-client absent
|
||||
prost/prost-types pas de dépendance KSP directe
|
||||
tonic-prost pas de dépendance KSP directe en pre.002
|
||||
tokio-stream pas ajouté
|
||||
futures-util dépendance existante inchangée
|
||||
```
|
||||
|
||||
L'exacte feature set sera déterminée par compilation et `cargo tree`, pas par anticipation documentaire.
|
||||
Le choix est volontairement plus étroit que le forecast initial : `pre.002` matérialise les messages wire publiés et le channel HTTP/2 lazy, mais **pas encore le client RPC généré, TLS, metadata ou compression**. Les éventuelles features/dependencies supplémentaires doivent être justifiées par `pre.003` et vérifiées par `cargo tree`; elles ne sont pas activées par anticipation.
|
||||
|
||||
### C. proto/génération KSP minimale bornée
|
||||
|
||||
@@ -582,11 +591,17 @@ pas de façade provider vide uniquement pour renommer le même protocole
|
||||
Noms cibles, affinables sans casser le principe :
|
||||
|
||||
```text
|
||||
# N1 — moteur Yellowstone
|
||||
# N1 — moteur Yellowstone matérialisé en pre.002
|
||||
YellowstoneGrpcEndpointUrl
|
||||
YellowstoneGrpcProviderName
|
||||
YellowstoneGrpcClusterName
|
||||
YellowstoneGrpcReconnectSettings
|
||||
YellowstoneGrpcEndpointSettings
|
||||
YellowstoneGrpcSessionSettings
|
||||
YellowstoneGrpcTransportSettings
|
||||
YellowstoneGrpcChannel # channel Tonic lazy privé, sans I/O réseau en pre.002
|
||||
|
||||
# N1 — étapes ultérieures
|
||||
YellowstoneGrpcSession
|
||||
YellowstoneSubscriptionHandle<T>
|
||||
|
||||
@@ -880,8 +895,8 @@ Prévision courante :
|
||||
pre.001 DONE — audit upstream/service/proto + providers gratuits + licences/deps + architecture + threat model + sizing
|
||||
budget : 15–20 min nominal ; preuve : plan + matrice + stratégie B + forecast recalibré
|
||||
|
||||
pre.002 moteur Yellowstone : proto/dependencies + settings/errors + channel minimal
|
||||
budget : 15–20 min ; preuve : features minimales + compile/tests + redaction + cargo tree
|
||||
pre.002 IMPLEMENTED — moteur Yellowstone : proto/dependencies + settings/errors + channel minimal
|
||||
budget : 15–20 min ; preuve locale : audit statique KSP clean + redaction/API canaries ajoutés ; compile/tests/cargo tree = gate opérateur
|
||||
|
||||
pre.003 moteur Yellowstone : TLS/metadata générique + fixture locale + 7 unary RPCs
|
||||
budget : 15–20 min ; preuve : connect/TLS/timeouts/Status safe + wire unary exact
|
||||
@@ -936,10 +951,16 @@ et le reste est replanifié explicitement ; aucune capacité n'est abandonnée s
|
||||
|
||||
## 18. Fichiers attendus par tranche
|
||||
|
||||
Cibles probables, sans imposer artificiellement le découpage source :
|
||||
Cibles réelles ouvertes par `pre.002`, puis cibles probables suivantes :
|
||||
|
||||
```text
|
||||
# pre.002
|
||||
crates/ksp-onchain-transport-lib/src/grpc_settings.rs
|
||||
crates/ksp-onchain-transport-lib/src/grpc_channel.rs
|
||||
crates/ksp-onchain-transport-lib/unit_tests/grpc_settings.rs
|
||||
crates/ksp-onchain-transport-lib/unit_tests/grpc_channel.rs
|
||||
|
||||
# pre.003+
|
||||
crates/ksp-onchain-transport-lib/src/grpc_session.rs
|
||||
crates/ksp-onchain-transport-lib/src/grpc_protocol.rs
|
||||
crates/ksp-onchain-transport-lib/src/grpc_subscribe.rs
|
||||
|
||||
Reference in New Issue
Block a user