Files
khadhroony-solana-project/deltas/0.2.10/pre.001.md
2026-08-25 10:14:37 +02:00

8.6 KiB

Delta 0.2.10-pre.001 — audit/sizing OrbitFlare Yellowstone gRPC

1. Base requise et vérifiée

Archive autoritaire fournie :

khadhroony-solana-project-v0.2.9-full-from-gitea.zip

État vérifié :

workspace.package.version = 0.2.9
deltas/0.2.9/rel.001.md présent
prompts/015-V0_2_10_START_PROMPT.md présent
metadata .git absente de l'archive Gitea

Cette livraison ouvre :

workspace.package.version = 0.2.10-pre.1
commit attendu            = v0.2.10-pre.001
aucun tag prerelease

2. Objet

pre.001 exécute le gate documentaire obligatoire :

lecture base/règles/architecture
baseline stable
réaudit OrbitFlare actuel
réaudit Yellowstone actuel
auth control-plane/data-plane
endpoints/network/security
Free Devnet gRPC
heartbeat
capabilities/unary/replay
limits/quotas
architecture N1/N2 immuable
threat model
sizing et forecast

Aucun code provider lourd, SDK OrbitFlare, metadata secrète ou heartbeat supplémentaire n'est ajouté.

3. Baseline opérateur acquise

Preuves fournies le 2026-08-25 sur v0.2.9 :

cargo fmt --all                               OK
python3 scripts/audit_rust_workspace_rules.py OK / clean
python3 scripts/audit_markdown_tables.py      OK / 87 tables / 261 files
cargo check --workspace                       OK
cargo clippy --workspace --all-targets        OK
cargo test --workspace                        OK
cargo tree -p ksp-onchain-transport-lib --duplicates fourni

Transport pendant le workspace test :

383 unit
49 public_api
43 release_completeness
4 doctests

Les live smokes restent opt-in/ignored par défaut.

Le cargo tree -p ksp-onchain-transport-lib complet n'a pas encore été fourni et doit être rejoué avant commit.

4. Graphe de dépendances inspecté

Versions utiles visibles :

yellowstone-grpc-proto 12.6.0
tonic                   0.14.6
tonic-prost             0.14.6
prost                    0.14.4
tokio                    1.53.1
http                     1.5.0
reqwest                  0.13.4

Aucune divergence Tonic/Prost/Yellowstone ne justifie une intervention. Les doublons restants sont sans impact matériel pour OrbitFlare.

5. Réaudit OrbitFlare du 2026-08-25

Free Devnet

Le pricing actuel confirme :

Free                     0 USD/mois
RPC                      10 RPS
transactions             1 TPS
gRPC                     Devnet only
credit limits            unlimited

Le CLI documente :

RPC Devnet  = http://devnet.rpc.orbitflare.com
gRPC Devnet = http://devnet.rpc.orbitflare.com:10000

Objectif opérationnel fermé : utiliser OrbitFlare comme provider gRPC Devnet gratuit pour les tests KSP futurs, en complément de PublicNode Mainnet/Testnet.

Auth

Classification :

X-ORBIT-KEY         Customer API only
Bearer              Customer API v2
RPC api_key          HTTP RPC only
account API key      ne prouve pas une auth Yellowstone
gRPC Dashboard token possible selon licence/service
x-token              mécanisme Yellowstone plausible si token gRPC distinct
aucune metadata      documentée par SDK Go pour endpoints régionaux

La clé de compte opérateur ne doit pas être fournie au dépôt ni injectée par supposition dans gRPC.

Heartbeat

OrbitFlare recommande un SubscribeRequest::Ping périodique. Yellowstone upstream envoie déjà un SubscribeUpdate::Ping périodique et KSP N1 répond automatiquement par un Ping standard sans modifier le dernier full request mémorisé.

Décision :

aucun timer OrbitFlare ajouté au moteur
aucun changement YellowstoneGrpcSessionSettings
aucune modification grpc_stream.rs
pre.002 doit observer le Ping serveur live OrbitFlare Devnet

Si ce Ping est observé, la policy standard N1 est suffisante. Sinon, une divergence provider doit être démontrée puis composée au-dessus de N1 sans le modifier.

Limits

50 connexions gRPC simultanées par IP sur shared
subscriptions par connexion annoncées unlimited
idle timeout environ 10 minutes
RESOURCE_EXHAUSTED au dépassement
backoff exponentiel conseillé

Ces valeurs restent provider-owned.

6. Réaudit Yellowstone actuel

État observé :

release GitHub courante         v15.1.2+solana.4.2.0
yellowstone-grpc-proto publié   12.6.0

Aucune évolution matérielle ne remet en cause le standard N2 de 0.2.9. Aucune dependency n'est modifiée.

7. Invariant architectural supersédant l'hypothèse initiale

Décision opérateur explicite :

le moteur gRPC ne change jamais pour un provider
le moteur WebSocket ne change jamais pour un provider
les fonctionnalités provider se composent au-dessus du moteur

Pour 0.2.10 :

N1 moteur Yellowstone = IMMUTABLE
N2 standard Solana    = IMMUTABLE
N3 OrbitFlare         = profile/capability/facade seulement si besoin démontré

Le prompt 015 reste autoritatif sauf sur toute formulation qui permettrait de mettre une policy OrbitFlare directement dans le moteur partagé.

8. Config V3

La shape existante suffit :

profile_id = orbitflare_devnet
provider = orbitflare
cluster = devnet
protocol = solana_yellowstone
url = http://devnet.rpc.orbitflare.com:10000
metadata = []
secret_metadata = []

Pas de V4. Pas de secret ajouté avant preuve live. Pas de champ heartbeat moteur.

9. Smoke prévu

pre.002 doit commencer par un canari standard N2 :

connect OrbitFlare Devnet Free sans metadata
Subscribe slots confirmed
recevoir Slot non nul
observer SubscribeUpdate::Ping pendant une fenêtre bornée de caractérisation
fermer proprement

Puis sonder séparément les unary et replay sans rendre le smoke minimal dépendant d'entitlements provider non garantis.

10. Forecast recalibré

Chemin standard probable :

pre.001 audit/sizing
pre.002 Config Devnet + characterization smoke standard N2
pre.003 gate technique/live final
pre.004 réconciliation documentaire finale
pre.005 publication minimale
rel.001 stable

Chemin avec divergence provider démontrée :

pre.001 audit/sizing
pre.002 Config Devnet + characterization smoke
pre.003 provider overlay minimal au-dessus de N1/N2
pre.004 gate technique/live final
pre.005 réconciliation documentaire finale
pre.006 publication minimale
rel.001 stable

11. Fichiers ajoutés

docs/plans/017-V0_2_10_ORBITFLARE_YELLOWSTONE_GRPC_PLAN.md
docs/validation/013-V0_2_10_ORBITFLARE_YELLOWSTONE_GRPC.md
deltas/0.2.10/pre.001.md

12. Fichiers modifiés

Cargo.toml
docs/000-README.md
docs/plans/000-README.md
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
docs/validation/000-README.md

13. Fichiers volontairement inchangés

ROADMAP.md
CHANGELOG.md
.env.example
config/**
crates/**
docs/architecture/**
crates/ksp-onchain-transport-lib/README.md
crates/ksp-onchain-transport-lib/USAGE.md

Aucune implémentation provider ou Config runtime n'est introduite dans pre.001.

14. Sources externes réauditées

https://docs.orbitflare.com/llms.txt
https://docs.orbitflare.com/cli
https://docs.orbitflare.com/authentication
https://docs.orbitflare.com/data-streaming/yellowstone
https://docs.orbitflare.com/data-streaming/yellowstone-quickstart
https://docs.orbitflare.com/sdk/go-grpc
https://orbitflare.com/pricing
https://orbitflare.com/products/rpc-nodes
https://orbitflare.com/products/solana-grpc
https://github.com/rpcpool/yellowstone-grpc
https://github.com/rpcpool/yellowstone-grpc/releases
https://github.com/rpcpool/yellowstone-grpc/blob/master/README.md
https://github.com/rpcpool/yellowstone-grpc/blob/master/yellowstone-grpc-proto/proto/geyser.proto

15. Validations de préparation

Le sandbox a exécuté :

inspection archive/version/rel/prompt                   OK
lecture code N1/N2/Config et docs 0.2.9                 OK
réaudit OrbitFlare/Yellowstone actuel                   OK
inspection cargo tree --duplicates fourni par opérateur OK

Le sandbox ne dispose pas de Cargo ; aucun cargo check/clippy/test/tree post-overlay n'est déclaré réussi localement.

16. Validation opérateur attendue avant commit

Comme pre.001 change uniquement la version Cargo et la documentation :

cargo fmt --all
python3 scripts/audit_rust_workspace_rules.py
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.2.10
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test --workspace
cargo tree -p ksp-onchain-transport-lib
cargo tree -p ksp-onchain-transport-lib --duplicates

Attendu : aucun changement de dependency et aucun changement sous crates/.