v0.2.7-pre.003
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
<!-- file: docs/plans/014-V0_2_7_ONCHAIN_WEBSOCKET_PLAN.md -->
|
||||
<!-- version: 4 -->
|
||||
<!-- version: 5 -->
|
||||
|
||||
# Plan `0.2.7` — WebSocket Solana standard
|
||||
|
||||
> **Statut : actif, `0.2.7-pre.002`.** Le gate `pre.001` est clos. `pre.002` matérialise les settings WebSocket Transport, la redaction URL, le discriminateur de protocole, les identités locales, les états lifecycle et les snapshots sûrs. Le socket physique reste différé à `pre.004`.
|
||||
> **Statut : actif, `0.2.7-pre.003`.** Les gates `pre.001` et `pre.002` sont clos. `pre.003` matérialise `std.transport` V2 HTTP + WebSocket, la lecture backward V1 HTTP-only et l'adapter `Config -> WsTransportSettings`. Le socket physique reste différé à `pre.004`.
|
||||
|
||||
## 1. Objet et base vérifiée
|
||||
|
||||
@@ -110,9 +110,9 @@ Aucun gate Cargo n'est déclaré réussi. Une validation opérateur est obligato
|
||||
|
||||
La surface WebSocket doit être additive : aucune renormalisation invasive des types `Http*` n'est requise dans `0.2.7`.
|
||||
|
||||
### 4.2 Config actuel est explicitement HTTP V1
|
||||
### 4.2 Config hérité et évolution V2
|
||||
|
||||
`config/std.transport.json`, son schema et `ksp-config-lib/src/transport.rs` décrivent un document V1 HTTP :
|
||||
À l’ouverture de `0.2.7`, `config/std.transport.json`, son schema et `ksp-config-lib/src/transport.rs` décrivaient un document V1 HTTP :
|
||||
|
||||
```text
|
||||
format_version = 1
|
||||
@@ -124,7 +124,7 @@ format_version != 1 rejeté
|
||||
|
||||
Décision : **ne pas ajouter silencieusement des clés WebSocket au V1**.
|
||||
|
||||
`0.2.7` fera évoluer le même composant standard `std.transport` vers un **format V2 explicitement HTTP + WebSocket**, tout en conservant la lecture du V1 HTTP-only pour compatibilité. Config reste propriétaire du parsing/résolution et adapte ensuite vers les settings publics Transport.
|
||||
`pre.003` fait évoluer le même composant standard `std.transport` vers un **format V2 explicitement HTTP + WebSocket**, tout en conservant la lecture du V1 HTTP-only pour compatibilité. Config reste propriétaire du parsing/résolution et adapte ensuite vers les settings publics Transport.
|
||||
|
||||
Shape cible minimale :
|
||||
|
||||
@@ -146,7 +146,21 @@ Décision d'extensibilité : **le conteneur V2 ne doit pas supposer qu'il n'exis
|
||||
|
||||
Cette préparation ne promet aucune option Helius dans `0.2.7`. L'audit provider-specific de la release suivante décidera la relation exacte entre Helius Enhanced WebSocket, LaserStream et le moteur standard avant d'ajouter des variantes/configurations concrètes.
|
||||
|
||||
Le V1 chargé sous `0.2.7` produit une configuration HTTP valide et une collection WebSocket vide. Le V2 devient le format livré par les fixtures Config dès la tranche qui matérialise le WebSocket.
|
||||
Le V1 chargé sous `0.2.7` produit une configuration HTTP valide et aucune instance `WsTransportSettings`. Le V2 devient le format livré par les fixtures Config dès la tranche qui matérialise le WebSocket.
|
||||
|
||||
Checkpoint `pre.003` matérialisé :
|
||||
|
||||
```text
|
||||
std.transport schema id = urn:ksp:schema:std.transport:v2
|
||||
V1 strict HTTP-only -> toujours accepté
|
||||
V2 strict HTTP + WS -> format livré
|
||||
ws_defaults -> session defaults génériques
|
||||
ws_endpoints[].session -> overrides génériques optionnels
|
||||
ws_endpoints[].kind -> solana_standard uniquement en 0.2.7
|
||||
ResolvedTransportConfig -> HTTP toujours présent + WS Option pour backward V1
|
||||
```
|
||||
|
||||
Le schema V2 utilise deux branches strictes discriminées par `format_version`; la compatibilité V1 n'est donc pas obtenue en relâchant `additionalProperties`. Les overrides endpoint ne contiennent que des paramètres génériques de `WsSessionSettings`, jamais des options Helius/provider-specific.
|
||||
|
||||
## 5. Audit historique bot3
|
||||
|
||||
@@ -853,7 +867,7 @@ L'inventaire officiel n'impose que 9 familles de subscriptions, mais le lifecycl
|
||||
```text
|
||||
pre.001 audit interne/externe + matrice 18 méthodes + bot3 + dependencies + threat model + plan/sizing
|
||||
pre.002 DONE — settings WS Transport + URL redaction + IDs/states/snapshots + tests de settings
|
||||
pre.003 std.transport V2 HTTP+WS + backward V1 + discriminateur WS + schema/fixtures + Config -> WsTransportSettings
|
||||
pre.003 DONE — std.transport V2 HTTP+WS + backward V1 + discriminateur WS + schema/fixtures + Config -> WsTransportSettings
|
||||
pre.004 deps tokio-tungstenite/futures-util + actor physique + handshake/read/write + pending JSON-RPC + serveur local
|
||||
pre.005 limites frame/message/request + control frames + cancellation/close/shutdown + adversarial socket tests
|
||||
pre.006 registry subscriptions + IDs locaux + generic subscribe/unsubscribe engine + channels typed bounded
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!-- file: docs/validation/010-V0_2_7_ONCHAIN_WEBSOCKET.md -->
|
||||
<!-- version: 4 -->
|
||||
<!-- version: 5 -->
|
||||
|
||||
# Validation `0.2.7` — WebSocket Solana standard
|
||||
|
||||
> **Statut : matrice active, `0.2.7-pre.002`.** Le gate normatif `pre.001` est clos ; les settings, identités, états lifecycle et snapshots sûrs sont maintenant matérialisés. Les preuves runtime socket/subscription restent ouvertes.
|
||||
> **Statut : matrice active, `0.2.7-pre.003`.** Les settings/lifecycle `pre.002` et la composition Config V2 `pre.003` sont matérialisés. Les preuves runtime socket/subscription restent ouvertes.
|
||||
|
||||
## 1. Baseline normative
|
||||
|
||||
@@ -253,7 +253,7 @@ Aucune de ces dependencies n'est ajoutée par `pre.001`; le graphe Cargo stable
|
||||
|
||||
## 9. Config compliance initiale
|
||||
|
||||
V1 actuel : HTTP-only strict. Décision :
|
||||
V1 hérité : HTTP-only strict. Contrat de compatibilité :
|
||||
|
||||
```text
|
||||
V1 -> support de lecture conservé, WS vide
|
||||
@@ -266,7 +266,24 @@ Transport -X-> Config
|
||||
|
||||
Le type Transport correspondant au discriminateur est prévu `#[non_exhaustive]`. L'objectif est de pouvoir ajouter ultérieurement une famille telle que Helius Enhanced WebSocket sans créer un nouveau conteneur Config ni injecter des options provider-specific dans les settings Solana standard. Toute valeur inconnue reste explicitement rejetée en `0.2.7`; aucun paramètre Helius n'est implémenté par anticipation.
|
||||
|
||||
La schema V1 n'est pas assouplie. Une schema V2 explicite remplace la fixture standard au moment où l'adapter est matérialisé.
|
||||
`pre.003` remplace le schema enregistré par `urn:ksp:schema:std.transport:v2`, avec deux branches strictes : V1 HTTP-only et V2 HTTP + WebSocket. La compatibilité V1 ne relâche donc ni `additionalProperties`, ni la shape historique.
|
||||
|
||||
Preuves `pre.003` :
|
||||
|
||||
```text
|
||||
config/std.transport.json format_version = 2
|
||||
config/examples/std.transport.example.json format_version = 2
|
||||
V1 fixture dédiée load + HTTP mapping OK attendu
|
||||
V1 ws_settings = None
|
||||
V2 ws_settings = Some(validated)
|
||||
ws_defaults globals
|
||||
profiles[].ws_endpoints profile-local
|
||||
ws_endpoints[].kind enum schema solana_standard
|
||||
ws_endpoints[].session overrides génériques optionnels
|
||||
Config -> Transport seule direction de dépendance
|
||||
```
|
||||
|
||||
`ResolvedTransportConfig::settings()` reste l'accesseur HTTP historique. `http_settings()` l'explicite et `ws_settings()` expose `Option<&WsTransportSettings>` afin que le V1 backward ne force jamais un faux `WsTransportSettings` vide. `into_transport_settings()` permet de consommer les deux contrats ensemble.
|
||||
|
||||
## 9.1 Checkpoint settings/lifecycle `pre.002`
|
||||
|
||||
@@ -359,7 +376,7 @@ N subscriptions same session prouvé
|
||||
reconnect/resubscribe/backpressure/shutdown gates verts
|
||||
unstable warnings centralisés
|
||||
HTTP 52+14 non régressé
|
||||
Config V1 backward + V2 WS validés
|
||||
Config V1 backward + V2 WS validés (**Done `pre.003`**, compilation opérateur requise)
|
||||
smoke live opt-in documenté
|
||||
cargo tree inspecté
|
||||
cargo test --workspace vert
|
||||
|
||||
Reference in New Issue
Block a user