v0.2.9-pre.004
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
|
||||
# Validation `0.2.9` — moteur Yellowstone + standard Solana + PublicNode
|
||||
|
||||
> **Statut : `pre.002-fix.002` est fermé. Le premier gate `pre.003` confirme fmt/audit/check, Transport 354 unit + 43 public API + 36 release completeness + 4 doctests, Core dependency canary et workspace complet ; seul Clippy échoue sur 11 diagnostics `implicit_return` dans la fixture unary. `0.2.9-pre.003-fix.001` corrige uniquement ces diagnostics de test, sans changement runtime. TLS client, metadata générique redacted, connexion réelle et exactement sept unary Yellowstone standard restent la surface `pre.003` ; `Subscribe`, PublicNode et Config V3 restent hors tranche. OrbitFlare et Helius sont les seules releases provider suivantes planifiées ; les autres providers restent en TODO/IDEAS sans numéro réservé.**
|
||||
> **Statut : `pre.003-fix.001` est fermé sur gate opérateur intégralement vert et graphes Cargo inspectés. `0.2.9-pre.004` est candidate et ajoute uniquement la fondation standard `SubscribeRequest` : sept maps, commitment, account-data slices, ping, `from_slot`, bornes communes et redaction Debug. Aucun stream bidi n'est encore ouvert ; les filtres détaillés Accounts/Slots/Transactions/Blocks restent réservés à `pre.005–007`. PublicNode et Config V3 restent hors tranche. OrbitFlare et Helius sont les seules releases provider suivantes planifiées ; les autres providers restent en TODO/IDEAS sans numéro réservé.**
|
||||
|
||||
## 1. Autorités du gate
|
||||
|
||||
@@ -55,17 +55,17 @@ crate proto : 12.6.0
|
||||
|
||||
## 3. Matrice service `Geyser`
|
||||
|
||||
| RPC | Forme | Classification | Scope | Preuve cible | État |
|
||||
|-----------------------|-------|------------------------------------------------------|-------|-----------------------|------|
|
||||
| `Subscribe` | bidi | standard | IN | fixture locale + live | TODO |
|
||||
| `SubscribeDeshred` | bidi | Triton extension/pré-exécution malgré présence proto | OUT | canari d'absence/API | TODO |
|
||||
| `SubscribeReplayInfo` | unary | standard | IN | fixture unary | TODO |
|
||||
| `Ping` | unary | standard | IN | fixture unary | TODO |
|
||||
| `GetLatestBlockhash` | unary | standard | IN | fixture unary | TODO |
|
||||
| `GetBlockHeight` | unary | standard | IN | fixture unary | TODO |
|
||||
| `GetSlot` | unary | standard | IN | fixture unary | TODO |
|
||||
| `IsBlockhashValid` | unary | standard | IN | fixture unary | TODO |
|
||||
| `GetVersion` | unary | standard | IN | fixture unary | TODO |
|
||||
| RPC | Forme | Classification | Scope | Preuve cible | État |
|
||||
|-----------------------|-------|------------------------------------------------------|-------|-----------------------|-----------------------------------------------|
|
||||
| `Subscribe` | bidi | standard | IN | fixture locale + live | PARTIAL pre.004 request / stream TODO pre.008 |
|
||||
| `SubscribeDeshred` | bidi | Triton extension/pré-exécution malgré présence proto | OUT | canari d'absence/API | OUT |
|
||||
| `SubscribeReplayInfo` | unary | standard | IN | fixture unary | DONE pre.003 |
|
||||
| `Ping` | unary | standard | IN | fixture unary | DONE pre.003 |
|
||||
| `GetLatestBlockhash` | unary | standard | IN | fixture unary | DONE pre.003 |
|
||||
| `GetBlockHeight` | unary | standard | IN | fixture unary | DONE pre.003 |
|
||||
| `GetSlot` | unary | standard | IN | fixture unary | DONE pre.003 |
|
||||
| `IsBlockhashValid` | unary | standard | IN | fixture unary | DONE pre.003 |
|
||||
| `GetVersion` | unary | standard | IN | fixture unary | DONE pre.003 |
|
||||
|
||||
## 4. `SubscribeRequest` — coverage normative
|
||||
|
||||
@@ -265,11 +265,11 @@ DONE/source+tests ajoutés close timeout > 0 et plafonné
|
||||
DONE/source+tests ajoutés max inbound/outbound > 0 et plafonnés
|
||||
DONE/source+tests ajoutés request/update queue capacities > 0 et plafonnées
|
||||
DONE/source+tests ajoutés reconnect attempt/backoff bornés
|
||||
TODO pre.004 filter-group count
|
||||
TODO pre.004 filter-name length/uniqueness
|
||||
CANDIDATE pre.004 filter-group count <= 1024 total sur les sept maps
|
||||
CANDIDATE pre.004 filter-name non vide/trim/control-free <= 128 octets + unicité globale
|
||||
DONE/source+tests ajoutés metadata ASCII key/value count/size + reserved/bin bounds
|
||||
TODO pre.005+ account/owner/include/exclude/required counts
|
||||
TODO pre.004+ memcmp/data slice bounds
|
||||
CANDIDATE pre.004 data slice count <= 128, length <= 64 MiB, offset+length sans overflow ; memcmp TODO pre.005
|
||||
TODO pre.005+ Cuckoo dimensions/data bounds
|
||||
```
|
||||
|
||||
@@ -279,32 +279,32 @@ Security canaries :
|
||||
DONE/source+tests ajoutés endpoint URL Debug redacted
|
||||
DONE/source+tests ajoutés metadata publique/secrète redacted ; secret marqué sensitive
|
||||
DONE/source+fixture Status message/details/metadata distants exclus des KspError
|
||||
CANDIDATE pre.003 connect réel + TLS WebPKI configuré ; erreur connect/TLS safe, Cargo pending
|
||||
TODO pre.004+ request/update Debug sans payload arbitraire sensible
|
||||
DONE pre.003/fix.001 connect réel + TLS WebPKI configuré ; erreur connect/TLS safe, gate Cargo PASS
|
||||
CANDIDATE pre.004 SubscribeRequest Debug sans filter names/payload arbitraire ; update Debug TODO pre.005+
|
||||
DONE pre.003 source/tests channel/client Debug sans URL, metadata value ni raw Tonic ; lifecycle stream ultérieur
|
||||
```
|
||||
|
||||
## 11. Lifecycle / backpressure / replay
|
||||
|
||||
| Cas | Attendu | État |
|
||||
|--------------------------------------------|------------------------------------------|-----------|
|
||||
| stream open | session bornée | TODO |
|
||||
| request mutation | ordre déterministe | TODO |
|
||||
| server Ping -> client request ping -> Pong | explicite | TODO |
|
||||
| server half-close | terminal/reconnect selon policy | TODO |
|
||||
| client close | cleanup borné | TODO |
|
||||
| receiver drop | cleanup capacité | TODO |
|
||||
| slow subscription | pas de queue infinie | TODO |
|
||||
| inbound oversized | rejet avant allocation excessive | TODO |
|
||||
| outbound oversized | rejet avant write | TODO |
|
||||
| reconnect budget | borné | TODO |
|
||||
| resubscribe order | déterministe | TODO |
|
||||
| `from_slot` | utilisé sans promesse lossless | TODO |
|
||||
| ReplayInfo | informatif | CANDIDATE |
|
||||
| duplicates | observables | TODO |
|
||||
| gaps | observables | TODO |
|
||||
| divergent node history | couverture documentée | TODO |
|
||||
| shutdown during reconnect | aucune nouvelle connexion après shutdown | TODO |
|
||||
| Cas | Attendu | État |
|
||||
|--------------------------------------------|------------------------------------------|-----------------------------------|
|
||||
| stream open | session bornée | TODO |
|
||||
| request mutation | ordre déterministe | TODO |
|
||||
| server Ping -> client request ping -> Pong | explicite | TODO |
|
||||
| server half-close | terminal/reconnect selon policy | TODO |
|
||||
| client close | cleanup borné | TODO |
|
||||
| receiver drop | cleanup capacité | TODO |
|
||||
| slow subscription | pas de queue infinie | TODO |
|
||||
| inbound oversized | rejet avant allocation excessive | TODO |
|
||||
| outbound oversized | rejet avant write | TODO |
|
||||
| reconnect budget | borné | TODO |
|
||||
| resubscribe order | déterministe | TODO |
|
||||
| `from_slot` | utilisé sans promesse lossless | TODO |
|
||||
| ReplayInfo | informatif | DONE unary ; usage reconnect TODO |
|
||||
| duplicates | observables | TODO |
|
||||
| gaps | observables | TODO |
|
||||
| divergent node history | couverture documentée | TODO |
|
||||
| shutdown during reconnect | aucune nouvelle connexion après shutdown | TODO |
|
||||
|
||||
Claims interdits sans nouvelle preuve :
|
||||
|
||||
@@ -404,8 +404,8 @@ Les autres providers restent en TODO/IDEAS sans release dédiée. Aucune façade
|
||||
```text
|
||||
pre.001 DONE audit/sizing/architecture 15–20 min nominal
|
||||
pre.002 DONE moteur: deps/settings/errors/channel 15–20 min ; gate final fix.002 PASS
|
||||
pre.003 CANDIDATE TLS/metadata + fixture + 7 unary standard 15–20 min
|
||||
pre.004 TODO standard: Subscribe common/from_slot/bounds 15–20 min
|
||||
pre.003 DONE TLS/metadata + fixture + 7 unary standard 15–20 min ; gate final fix.001 PASS
|
||||
pre.004 CANDIDATE standard: Subscribe common/from_slot/bounds 15–20 min
|
||||
pre.005 TODO standard: accounts + slots 15–20 min
|
||||
pre.006 TODO standard: transactions + transaction_status 15–20 min
|
||||
pre.007 TODO standard: blocks + block_meta + entry 15–20 min
|
||||
@@ -583,3 +583,51 @@ aucun Subscribe/PublicNode/Config V3 anticipé
|
||||
```
|
||||
|
||||
**Verdict `pre.003-fix.001` : correctif Clippy minimal prêt ; fermeture de `pre.003` après réexécution verte des gates habituels et inspection des graphes Cargo demandée par la tranche.**
|
||||
|
||||
### 18.2 Gate final opérateur `pre.003-fix.001`
|
||||
|
||||
| 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 | 354/354 PASS |
|
||||
| Transport `public_api` | 43/43 PASS |
|
||||
| Transport `release_completeness` | 36/36 PASS |
|
||||
| Transport doctests | 4/4 PASS |
|
||||
| `cargo test --workspace` | PASS |
|
||||
| `cargo tree -p ...` | fourni/relu |
|
||||
| `cargo tree -p ... -e features` | fourni/relu |
|
||||
| `cargo tree -p ... --duplicates` | fourni/relu |
|
||||
| `cargo tree --duplicates` | fourni/relu |
|
||||
|
||||
Graphe pertinent confirmé : `tonic 0.14.6`, `tonic-prost 0.14.6`, `prost/prost-types 0.14.4`, `yellowstone-grpc-proto 12.6.0`, `solana-pubkey 4.3.0`. Les features serveur/codegen et `yellowstone-grpc-proto/tonic` restent liées à la fixture dev/test ; aucune seconde version Tonic/Prost/Solana n'est introduite par la tranche.
|
||||
|
||||
**Verdict : `pre.003` fermée.**
|
||||
|
||||
## 19. Gate `pre.004` — candidate
|
||||
|
||||
| Surface | État candidate |
|
||||
|-----------------------------------------------------|----------------|
|
||||
| workspace version | `0.2.9-pre.4` |
|
||||
| sept maps `SubscribeRequest` | SOURCE PASS |
|
||||
| map vide / entrée nommée vide | SOURCE+TEST |
|
||||
| commitment optional exact | SOURCE+TEST |
|
||||
| account-data slices ordonnées | SOURCE+TEST |
|
||||
| ping optional exact | SOURCE+TEST |
|
||||
| `from_slot` optional exact | SOURCE+TEST |
|
||||
| filter names <=128 octets / unicité globale | SOURCE+TEST |
|
||||
| filter groups <=1024 total | SOURCE+TEST |
|
||||
| slices <=128 / length <=64 MiB / overflow rejeté | SOURCE+TEST |
|
||||
| request Debug sans noms/payloads de filtres | SOURCE+TEST |
|
||||
| filtres Accounts/Slots détaillés | OUT pre.004 |
|
||||
| filtres Transactions/Blocks détaillés | OUT pre.004 |
|
||||
| stream bidi / lifecycle / updates | OUT pre.004 |
|
||||
| PublicNode / Config V3 | OUT pre.004 |
|
||||
| audit Rust workspace local | PASS / clean |
|
||||
| fmt/check/Clippy/tests | opérateur TODO |
|
||||
|
||||
Le proto publié `yellowstone-grpc-proto 12.6.0` a été recontrôlé avant implémentation : les onze champs top-level retenus restent `accounts`, `slots`, `transactions`, `transactions_status`, `blocks`, `blocks_meta`, `entry`, `commitment`, `accounts_data_slice`, `ping`, `from_slot`. Aucun `SubscribeDeshred` n'entre dans la surface KSP.
|
||||
|
||||
**Verdict `pre.004` : candidate source prête ; fermeture après gate Cargo opérateur.**
|
||||
|
||||
Reference in New Issue
Block a user