v0.2.10-pre.001
This commit is contained in:
327
deltas/0.2.10/pre.001.md
Normal file
327
deltas/0.2.10/pre.001.md
Normal file
@@ -0,0 +1,327 @@
|
||||
<!-- file: deltas/0.2.10/pre.001.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.2.10-pre.001` — audit/sizing OrbitFlare Yellowstone gRPC
|
||||
|
||||
## 1. Base requise et vérifiée
|
||||
|
||||
Archive autoritaire fournie :
|
||||
|
||||
```text
|
||||
khadhroony-solana-project-v0.2.9-full-from-gitea.zip
|
||||
```
|
||||
|
||||
État vérifié :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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` :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
Free 0 USD/mois
|
||||
RPC 10 RPS
|
||||
transactions 1 TPS
|
||||
gRPC Devnet only
|
||||
credit limits unlimited
|
||||
```
|
||||
|
||||
Le CLI documente :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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é :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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` :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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é :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```bash
|
||||
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/`.
|
||||
Reference in New Issue
Block a user