v0.2.9-pre.012
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
<!-- file: docs/plans/016-V0_2_9_YELLOWSTONE_GRPC_PLAN.md -->
|
||||
<!-- version: 22 -->
|
||||
<!-- version: 23 -->
|
||||
|
||||
# Plan `0.2.9` — moteur Yellowstone gRPC + standard Solana + PublicNode
|
||||
|
||||
> **Statut courant : `0.2.9-pre.010-fix.001` est fermée par gate opérateur sans warning. `0.2.9-pre.011` est la tranche active : Config Transport V3, séparation explicite protocol/provider, mapping Config -> Yellowstone gRPC et premier profil PublicNode Mainnet. Le présent document a été réorganisé pendant `pre.011` : les décisions actives restent ici ; les journaux historiques détaillés restent dans `deltas/0.2.9/`.**
|
||||
**Statut courant : `0.2.9-pre.011` est fermée par gate opérateur complet sans warning. `0.2.9-pre.012` est la tranche active de fermeture technique : réaudit upstream final, smoke PublicNode Mainnet opt-in, compliance finale, graphes Cargo, README/USAGE, règles de tableaux Markdown et prompt autonome `0.2.10 — OrbitFlare Yellowstone gRPC`. Les journaux détaillés restent dans `deltas/0.2.9/`; ce plan conserve l’état courant et les décisions.**
|
||||
|
||||
## 1. Objet et autorité de la release
|
||||
|
||||
@@ -88,18 +88,24 @@ Les intégrations provider futures ne dupliquent jamais le moteur N1. Une façad
|
||||
|
||||
## 4. Audit upstream et dépendances retenues
|
||||
|
||||
### 4.1 Snapshot normatif du gate
|
||||
### 4.1 Snapshot normatif et réaudit final
|
||||
|
||||
Le gate d'ouverture a réaudité Yellowstone courant et a constaté des versions indépendantes entre plugin, client et proto :
|
||||
Le gate d'ouverture puis le réaudit final du 2026-08-24 confirment que les numéros du plugin, du client, du proto et des releases GitHub évoluent indépendamment. Il ne faut donc pas transformer un numéro de `master` en numéro de release publié.
|
||||
|
||||
État observé au réaudit final :
|
||||
|
||||
```text
|
||||
release GitHub observée v15.1.2+solana.4.2.0 — 2026-08-18
|
||||
yellowstone-grpc-client 13.3.0
|
||||
yellowstone-grpc-proto 12.6.0
|
||||
prost/prost-types 0.14.x
|
||||
tonic 0.14.x
|
||||
latest release GitHub indexée v14.2.2+solana.4.1.0 — 2026-07-27
|
||||
master yellowstone-grpc-geyser 15.1.2
|
||||
master yellowstone-grpc-client 13.3.0
|
||||
master yellowstone-grpc-proto 12.6.0
|
||||
master Agave Geyser / storage 4.2.0
|
||||
master prost / prost-types / tonic 0.14.x
|
||||
KSP yellowstone-grpc-proto direct ^12.6
|
||||
```
|
||||
|
||||
Le service `Geyser`, la shape de `SubscribeRequest` et les neuf variantes `SubscribeUpdate` retenues par KSP n'ont pas changé matériellement par rapport au gate `pre.001`. `SubscribeDeshred` reste explicitement hors scope `0.2.9`.
|
||||
|
||||
Les sources primaires restent :
|
||||
|
||||
```text
|
||||
@@ -530,18 +536,20 @@ La partie HTTP/WS de ce profil reste standard Solana ; seul l'endpoint gRPC est
|
||||
|
||||
### 9.2 Testnet
|
||||
|
||||
PublicNode affiche toujours une offre Solana Testnet gRPC, mais le hostname exact n'est pas exposé de façon suffisamment autoritative dans la surface publique inspectable pendant `pre.011`.
|
||||
Le réaudit final du 2026-08-24 confirme que PublicNode annonce bien une capacité Solana Testnet gRPC. La surface officielle consultable ne fournit cependant toujours pas un hostname Testnet exact suffisamment autoritatif pour être versionné.
|
||||
|
||||
Décision :
|
||||
Décision finale `0.2.9` :
|
||||
|
||||
```text
|
||||
existence Testnet gRPC confirmée
|
||||
hostname Testnet exact non inventé
|
||||
profil Testnet committé non en pre.011
|
||||
réaudit endpoint/live pre.012
|
||||
hostname Testnet exact non obtenu depuis une source autoritative
|
||||
hostname déduit ou tiers interdit
|
||||
profil Testnet committé non
|
||||
smoke Testnet non
|
||||
statut EXTERNAL BLOCK documentaire / NOT GUESSED
|
||||
```
|
||||
|
||||
Un échec à confirmer le hostname Testnet ne bloque pas la fondation Mainnet ; il doit être documenté explicitement au gate final.
|
||||
Ce bloc externe ne remet pas en cause la fondation Mainnet. Une release provider ultérieure peut matérialiser Testnet dès qu'une source PublicNode autoritative expose l'endpoint exact.
|
||||
|
||||
## 10. Threat model et bornes
|
||||
|
||||
@@ -608,13 +616,16 @@ Les preuves détaillées restent dans les fichiers `deltas/0.2.9/*.md`. Le plan
|
||||
| `pre.008` + fix | Blocks + block_meta + entry | **CLOSED** |
|
||||
| `pre.009` + fix | bidi, Ping/Pong, backpressure, half-close, shutdown | **CLOSED** |
|
||||
| `pre.010` + fix | reconnect, from_slot, ReplayInfo, gaps/duplicates | **CLOSED** |
|
||||
| `pre.011` | Config V3 + protocol/provider + PublicNode Mainnet | **ACTIVE CANDIDATE** |
|
||||
| `pre.012` | live/compliance/docs/graph/prompt suivant | **PLANNED** |
|
||||
| `pre.011` | Config V3 + protocol/provider + PublicNode Mainnet | **CLOSED** |
|
||||
| `pre.012` | live/compliance/docs/graph/prompt suivant | **ACTIVE CANDIDATE** |
|
||||
|
||||
Gate opérateur de fermeture `pre.010-fix.001` :
|
||||
Gate opérateur de fermeture `pre.011` :
|
||||
|
||||
```text
|
||||
fmt/audit/check/clippy PASS sans warning
|
||||
Config unit 113/113
|
||||
Config public API 15/15
|
||||
Config ownership 5/5
|
||||
Transport unit 383/383
|
||||
Transport public API 49/49
|
||||
Transport completeness 43/43
|
||||
@@ -625,51 +636,31 @@ cargo test --workspace PASS
|
||||
|
||||
## 13. Forecast restant
|
||||
|
||||
### `pre.011` — Config V3 + PublicNode Mainnet
|
||||
|
||||
Cible :
|
||||
|
||||
```text
|
||||
workspace.package.version = 0.2.9-pre.11
|
||||
schema std.transport V3 strict + branches V1/V2
|
||||
Config adapter gRPC
|
||||
metadata publique/secrète + provenance
|
||||
protocol/provider distincts
|
||||
profil publicnode_mainnet
|
||||
compatibilité API V2 conservée
|
||||
plan 016 + validation 012 réorganisés
|
||||
```
|
||||
|
||||
Preuves :
|
||||
|
||||
```text
|
||||
schema Draft 2020-12 valide
|
||||
fixtures V1/V2/V3
|
||||
Config unit/public API/ownership
|
||||
Transport non-régressé
|
||||
workspace complet
|
||||
```
|
||||
|
||||
### `pre.012` — fermeture technique et live
|
||||
|
||||
Cible :
|
||||
Cible active :
|
||||
|
||||
```text
|
||||
workspace.package.version = 0.2.9-pre.12
|
||||
réaudit upstream final
|
||||
réaudit PublicNode Testnet hostname
|
||||
smoke PublicNode Mainnet opt-in
|
||||
Testnet opt-in seulement si endpoint exact confirmé
|
||||
réaudit PublicNode Testnet sans endpoint inventé
|
||||
smoke PublicNode Mainnet opt-in, programmatique et sans credential
|
||||
compliance HTTP 52 current + 14 historical
|
||||
compliance Standard WS 18/18
|
||||
Helius WebSocket non régressé
|
||||
cargo tree direct + duplicates final
|
||||
README/USAGE Transport synchronisés
|
||||
matrice validation fermée
|
||||
prompt 0.2.10 préparé selon la séquence active
|
||||
règles Markdown sur les tableaux reformulées et auditées mécaniquement
|
||||
validation 012 fermée si les gates opérateur sont verts
|
||||
prompt 0.2.10 OrbitFlare autonome
|
||||
workspace final vert
|
||||
```
|
||||
|
||||
Si `pre.012` devient trop large, une `pre.013+` est créée ; le numéro n'est pas une deadline.
|
||||
La candidate ajoute un smoke live **ignoré par défaut** ; elle ne modifie pas le runtime Yellowstone déjà fermé. Le smoke Mainnet utilise uniquement la façade provider-neutral KSP, `GetVersion` et `GetSlot`, avec TLS et sans metadata d'authentification.
|
||||
|
||||
Le Testnet reste `EXTERNAL BLOCK / NOT GUESSED` tant que PublicNode n'expose pas l'endpoint exact dans une source autoritative.
|
||||
|
||||
Si le gate opérateur révèle une anomalie réelle, un `pre.012-fix.001` est créé. Si la fermeture nécessite une nouvelle frontière fonctionnelle plutôt qu'un fix, une `pre.013+` est ouverte ; le numéro n'est pas une deadline.
|
||||
|
||||
## 14. Critères de split
|
||||
|
||||
@@ -689,27 +680,21 @@ moteur Yellowstone + façade Solana standard + Config provider-neutral + premiè
|
||||
|
||||
## 15. Gates opérateur
|
||||
|
||||
Après changement Rust :
|
||||
Gate `pre.012` :
|
||||
|
||||
```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.9
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets
|
||||
```
|
||||
|
||||
Pour `pre.011` :
|
||||
|
||||
```bash
|
||||
cargo test -p ksp-config-lib
|
||||
cargo test -p ksp-config-lib --test public_api
|
||||
cargo test -p ksp-config-lib --test ownership
|
||||
cargo test -p ksp-onchain-transport-lib
|
||||
cargo test -p ksp-core-lib --test workspace_dependencies
|
||||
cargo test --workspace
|
||||
```
|
||||
|
||||
Le graphe de dépendances gRPC n'est pas modifié par `pre.011`; son gate final complet reste en `pre.012` :
|
||||
Graphes finaux :
|
||||
|
||||
```bash
|
||||
cargo tree -p ksp-onchain-transport-lib
|
||||
@@ -717,6 +702,14 @@ cargo tree -p ksp-onchain-transport-lib --duplicates
|
||||
cargo tree --duplicates
|
||||
```
|
||||
|
||||
Smoke live opt-in Mainnet :
|
||||
|
||||
```bash
|
||||
cargo test -p ksp-onchain-transport-lib --test yellowstone_publicnode_smoke -- --ignored --nocapture
|
||||
```
|
||||
|
||||
Le smoke n'est jamais déclaré réussi avant exécution. Un incident externe PublicNode/TLS/réseau est consigné comme tel et ne doit pas être maquillé en PASS local. Le Testnet n'est pas exécuté tant que son endpoint exact n'est pas confirmé par une source PublicNode autoritative.
|
||||
|
||||
## 16. Conditions de clôture `0.2.9`
|
||||
|
||||
```text
|
||||
|
||||
Reference in New Issue
Block a user