v0.2.7-pre.012
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/014-V0_2_7_ONCHAIN_WEBSOCKET_PLAN.md -->
|
||||
<!-- version: 13 -->
|
||||
<!-- version: 14 -->
|
||||
|
||||
# Plan `0.2.7` — WebSocket Solana standard
|
||||
|
||||
@@ -932,6 +932,21 @@ public raw provider-extension API -> gate 0.2.8
|
||||
application heartbeat/ping périodique -> différé sans besoin démontré
|
||||
```
|
||||
|
||||
## 21.1 Checkpoint compliance `pre.012`
|
||||
|
||||
La tranche `pre.012` ne crée pas de dixième famille et ne modifie pas le runtime actor. Elle consolide la release autour de quatre preuves :
|
||||
|
||||
```text
|
||||
WebSocket inventory -> 9 familles publiques x subscribe/unsubscribe = 18 opérations standard
|
||||
public API -> 9 wrappers subscribe + handle unsubscribe accessibles depuis la crate root
|
||||
Config composition -> V2 -> WsTransportSettings -> WsEndpointSettings accepté par WsSession::connect
|
||||
HTTP regression -> 52 current Supported + 14 historical Removed inchangés
|
||||
```
|
||||
|
||||
Les noms JSON-RPC exacts restent verrouillés par le canari interne `websocket_subscription_kinds_map_exact_standard_method_triplets`; la partition unstable reste verrouillée séparément à `block`, `slotsUpdates`, `vote`. `pre.012` ajoute un canari de release qui compte les neuf paires et un canari public qui adresse les neuf wrappers sans exposer de primitive raw arbitraire.
|
||||
|
||||
La preuve Config -> session est volontairement déterministe : le future de connexion est construit à partir d'un `WsEndpointSettings` issu du document V2 committed sans polling. Aucun réseau réel n'est donc nécessaire ; le smoke live reste dans `pre.013`.
|
||||
|
||||
## 22. Forecast recalibré
|
||||
|
||||
L'inventaire officiel n'impose que 9 familles de subscriptions, mais le lifecycle concurrent est plus coûteux que le forecast initial. Le gate reste **positif sans split de release**, à condition de granulariser les tranches au lieu de compresser le moteur et les wrappers.
|
||||
@@ -948,7 +963,7 @@ pre.008 DONE — backpressure per-sub + overflow/limits + causes terminales sû
|
||||
pre.009 DONE — wrappers stable lot A : account + program + logs, DTOs/options/KSP-TRANSPORT-007
|
||||
pre.010 DONE — wrappers stable lot B : signature + slot + root, terminaison signature/KSP-TRANSPORT-007
|
||||
pre.011 DONE — unstable : block + slotsUpdates + vote, warnings + fallbacks wire/KSP-TRANSPORT-007
|
||||
pre.012 compliance 18/18 + canaries public API + composition Config + régressions HTTP
|
||||
pre.012 DONE — compliance 18/18 + canaries public API + composition Config + régressions HTTP
|
||||
pre.013 smoke live opt-in + README/USAGE + cargo tree/duplicates + dependency audit final
|
||||
pre.014 validation workspace finale + docs/compliance + prompt 0.2.8
|
||||
rel.001 publication stable stricte
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!-- file: docs/validation/010-V0_2_7_ONCHAIN_WEBSOCKET.md -->
|
||||
<!-- version: 13 -->
|
||||
<!-- version: 14 -->
|
||||
|
||||
# Validation `0.2.7` — WebSocket Solana standard
|
||||
|
||||
> **Statut : matrice active, `0.2.7-pre.010`.** Settings/lifecycle `pre.002`, Config V2 `pre.003`, session physique `pre.004`, durcissement `pre.005`, registry `pre.006`, reconnect/resubscribe `pre.007`, backpressure `pre.008` et les six familles stables des lots `pre.009`–`pre.010` sont matérialisés. Les trois familles unstable restent ouvertes pour `pre.011`.
|
||||
> **Statut : matrice active, `0.2.7-pre.012`.** Les 9 familles standard et leurs 9 opérations unsubscribe sont matérialisées. `pre.012` consolide la compliance 18/18, la surface publique, la composition Config V2 -> Transport et la non-régression HTTP avant le smoke/audit de dépendances final.
|
||||
|
||||
## 1. Baseline normative
|
||||
|
||||
@@ -410,7 +410,6 @@ snapshot -> local IDs + remote_bound uniquement
|
||||
|
||||
Le registry est détenu par le même actor que le socket et la pending map JSON-RPC. Aucun caller ne manipule le socket ni le remote ID. Les wrappers publics `accountSubscribe`, `programSubscribe`, etc. restent volontairement différés aux lots `pre.009+` afin de ne pas exposer une API raw provider-extension intermédiaire.
|
||||
|
||||
|
||||
## 9.5 Checkpoint reconnect/resubscribe `pre.007`
|
||||
|
||||
Surface matérialisée :
|
||||
@@ -609,6 +608,40 @@ Transport public API tests = 35
|
||||
release completeness = 22
|
||||
```
|
||||
|
||||
## 9.10 Checkpoint compliance consolidée `pre.012`
|
||||
|
||||
`pre.012` n'ajoute aucune nouvelle famille WebSocket. Il transforme les preuves acquises de `pre.002` à `pre.011` en gates de release explicites et vérifie simultanément que la surface HTTP héritée reste intacte.
|
||||
|
||||
Le réaudit de l'index public Solana effectué le **23 août 2026** confirme que la surface courante reste inchangée à 9 subscribe + 9 unsubscribe.
|
||||
|
||||
Gates ajoutés ou consolidés :
|
||||
|
||||
```text
|
||||
9 WsSubscriptionKind publics exactement couverts
|
||||
9 wrappers subscribe publics disponibles depuis la crate root
|
||||
1 handle WsSubscription<T>::unsubscribe commun aux 9 familles
|
||||
9 paires subscribe/unsubscribe = 18 opérations standard comptabilisées
|
||||
triplets exacts subscribe/unsubscribe/notification toujours verrouillés par le canari ws_lifecycle
|
||||
partition unstable exacte toujours verrouillée : block + slotsUpdates + vote
|
||||
Config V2 committed -> ResolvedTransportConfig -> WsTransportSettings validé
|
||||
WsEndpointSettings produit par Config -> type accepté directement par WsSession::connect
|
||||
Config V1 -> HTTP-only reste couvert par le checkpoint pre.003
|
||||
HTTP courant -> 52 méthodes Supported
|
||||
HTTP historique -> 14 méthodes Removed
|
||||
surface API publique WebSocket complète -> canari crate-root dédié
|
||||
```
|
||||
|
||||
La composition Config est testée sans réseau : l'async future `WsSession::connect` est construite à partir de l'endpoint produit par Config et laissée non pollée jusqu'à sa destruction en fin de portée. Le gate vérifie donc la compatibilité de types et de contrats entre Config et Transport sans transformer `pre.012` en smoke live ; le vrai smoke reste réservé à `pre.013`.
|
||||
|
||||
Comptages attendus après compilation :
|
||||
|
||||
```text
|
||||
Transport unit tests = 309
|
||||
Transport public API tests = 36
|
||||
Transport release completeness = 24
|
||||
Config unit tests = 109
|
||||
```
|
||||
|
||||
## 10. Validation du gate `pre.001`
|
||||
|
||||
Exécuté dans le sandbox :
|
||||
@@ -645,16 +678,16 @@ La matrice ne considère donc pas `pre.001` techniquement validé par Cargo tant
|
||||
Avant `rel.001`, cette matrice doit obtenir :
|
||||
|
||||
```text
|
||||
18/18 méthodes official-index accounted
|
||||
9/9 subscribe wrappers public typed
|
||||
9/9 unsubscribe couverts par handles/registry
|
||||
18/18 méthodes official-index accounted (**Done `pre.012`**)
|
||||
9/9 subscribe wrappers public typed (**Done `pre.012`**)
|
||||
9/9 unsubscribe couverts par handles/registry (**Done `pre.012`**)
|
||||
0 option officielle perdue
|
||||
0 fuite URL/credential
|
||||
N sessions same URL prouvé
|
||||
N subscriptions same session prouvé
|
||||
reconnect/resubscribe/backpressure/shutdown gates verts
|
||||
unstable warnings centralisés
|
||||
HTTP 52+14 non régressé
|
||||
HTTP 52+14 non régressé (**Done `pre.012`**)
|
||||
Config V1 backward + V2 WS validés (**Done `pre.003`**, compilation opérateur requise)
|
||||
smoke live opt-in documenté
|
||||
cargo tree inspecté
|
||||
|
||||
Reference in New Issue
Block a user