v0.2.9-pre.008

This commit is contained in:
2026-08-24 16:16:48 +02:00
parent 05aec88178
commit affa18a6e9
9 changed files with 1198 additions and 40 deletions

View File

@@ -1,9 +1,9 @@
<!-- file: docs/plans/016-V0_2_9_YELLOWSTONE_GRPC_PLAN.md -->
<!-- version: 15 -->
<!-- version: 16 -->
# Plan `0.2.9` — moteur Yellowstone gRPC + standard Solana + PublicNode
> **Statut : `0.2.9-pre.006` est fermée sur gate opérateur intégralement vert : fmt/audit/check/Clippy/workspace PASS, Transport 364 unit + 45 public API + 39 completeness + 4 doctests. `0.2.9-pre.007` est candidate et matérialise uniquement Transactions + `transaction_status` du `Subscribe` standard : filtres complets, signature Base58 décodée exactement sur 64 octets, Cuckoo/token-account expansion, DTOs transaction/meta complets et Transaction V1 `TransactionConfig`. Blocks restent `pre.008`; aucun stream bidi nest encore ouvert.**
> **Statut : `0.2.9-pre.007` est fermée sur gate opérateur intégralement vert : fmt/audit/check/Clippy/workspace PASS, Transport 367 unit + 46 public API + 40 completeness + 4 doctests. `0.2.9-pre.008` est candidate et complète uniquement Blocks + `block_meta` + `entry` du `Subscribe` standard : filtre Blocks courant complet, rewards/time/height, réutilisation des DTOs Transaction/Account, compteurs serveur indépendants des payloads optionnels et `starting_transaction_index`. Aucun stream bidi nest encore ouvert ; lifecycle reste `pre.009`.**
## 1. Objet, base et état d'ouverture
@@ -928,10 +928,10 @@ pre.005 DONE — standard Solana : Accounts + Slots filters/updates
pre.006 DONE — structure Transport : namespace privé HTTP explicite
budget : 1520 min ; gate opérateur final PASS 364/45/39/4 + workspace
pre.007 CANDIDATE — standard Solana : Transactions + transaction_status
pre.007 DONE — standard Solana : Transactions + transaction_status
budget : 1520 min ; preuve : include/exclude/required/Cuckoo/token expansion + tx/meta + TransactionConfig V1
pre.008 standard Solana : Blocks + block_meta + entry
pre.008 CANDIDATE — standard Solana : Blocks + block_meta + entry
budget : 1520 min ; preuve : counts/arrays/optional/oneof/payload bounds
pre.009 moteur partagé : bidi mutation + Ping/Pong + half-close + backpressure + shutdown
@@ -1273,3 +1273,65 @@ Les marqueurs `inner_instructions_none`, `log_messages_none` et `return_data_non
OUT de `pre.007` : Blocks/block_meta/entry, stream bidi/Ping-Pong, reconnect/replay, Config V3, PublicNode et `SubscribeDeshred`.
**Gate candidat :** audit statique clean ; compilation/Clippy/tests opérateur requis avant fermeture.
## 23. Gate final `pre.007` — Transactions + `transaction_status`
Preuve opérateur du `2026-08-24` :
| Gate | Résultat final |
|------------------------------------------|----------------|
| `cargo fmt --all` | PASS |
| audit Rust workspace | PASS / clean |
| `cargo check --workspace` | PASS |
| `cargo clippy --workspace --all-targets` | PASS |
| Transport unit | 367/367 PASS |
| Transport `public_api` | 46/46 PASS |
| Transport `release_completeness` | 40/40 PASS |
| Transport doctests | 4/4 PASS |
| Core dependency canary | 3/3 PASS |
| `cargo test --workspace` | PASS |
Le gate confirme la projection Transactions complète, incluant `TransactionConfig` V1 et les marqueurs legacy de `TransactionStatusMeta`, sans régression HTTP/WS et sans avancer Blocks ou bidi.
**Verdict : `pre.007` fermée.**
## 24. `pre.008` — Blocks + `block_meta` + `entry` candidate
Le proto `yellowstone-grpc-proto 12.6.0` est réaudité avant implémentation. `SubscribeRequestFilterBlocks` contient exactement `account_include[]`, `include_transactions?`, `include_accounts?`, `include_entries?` et `cuckoo_account_include?`. `blocks_meta` et `entry` conservent leurs filtres marqueurs vides.
La candidate matérialise :
```text
request filter Blocks
account_include[] ordonné et borné
include_transactions?
include_accounts?
include_entries?
cuckoo_account_include?
SubscribeUpdateBlock
slot / blockhash / parent_slot / parent_blockhash
rewards? + num_partitions?
block_time? / block_height?
executed_transaction_count
transactions[] -> YellowstoneTransactionInfo réutilisé
updated_account_count
accounts[] -> YellowstoneAccountInfo réutilisé
entries_count
entries[] -> YellowstoneEntryInfo
SubscribeUpdateBlockMeta
même metadata sans payloads transaction/account/entry
SubscribeUpdateEntry
slot / index / num_hashes / hash[32]
executed_transaction_count
starting_transaction_index
```
Les compteurs serveur ne sont volontairement pas comparés aux longueurs des vecteurs : les options `include_transactions`, `include_accounts` et `include_entries` permettent au serveur de rapporter les totaux tout en omettant les payloads correspondants. Les `blockhash`/`parent_blockhash` sont validés comme Base58 représentant 32 octets, et les hash dentrée restent des 32 octets exacts. `Debug` nexpose aucun hash, account selector, reward pubkey ou payload imbriqué.
Les conversions request protobuf et décodeurs Block/BlockMeta/Entry restent `#[cfg(test)]` jusquà louverture du stream runtime en `pre.009`. Aucun `SubscribeDeshred`, provider PublicNode, Config V3, Ping/Pong lifecycle ou reconnect nentre dans cette tranche.
**Gate candidat :** audit statique clean ; compilation/Clippy/tests opérateur requis avant fermeture.