v0.2.7-pre.010
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/014-V0_2_7_ONCHAIN_WEBSOCKET_PLAN.md -->
|
||||
<!-- version: 11 -->
|
||||
<!-- version: 12 -->
|
||||
|
||||
# Plan `0.2.7` — WebSocket Solana standard
|
||||
|
||||
@@ -810,6 +810,32 @@ Les wrappers publics sont `WsSession::account_subscribe`, `WsSession::program_su
|
||||
|
||||
La forme `Mentions(Pubkey)` rend la cardinalité `mentions == 1` vraie par construction. Les contraintes déterministes déjà retenues pour les filtres programme sont conservées côté WS : maximum quatre filtres et maximum 128 octets pour la variante raw `Bytes` de `memcmp`; les formes encodées restent laissées au runtime upstream comme sur la surface HTTP existante.
|
||||
|
||||
### 16.2 Checkpoint wrappers stables lot B `pre.010`
|
||||
|
||||
Le second lot stable conserve les formes wire restantes sans introduire les familles unstable :
|
||||
|
||||
```text
|
||||
signatureSubscribe
|
||||
signature opaque en première position
|
||||
commitment optionnel via le type SolanaCommitment partagé
|
||||
enableReceivedNotification omitted/false/true
|
||||
notification = RpcResponse<receivedSignature OU { err: null | transaction error }>
|
||||
receivedSignature = précoce, non terminal
|
||||
{ err: ... } = terminal, fermeture locale normale, jamais resubscribe
|
||||
|
||||
slotSubscribe
|
||||
aucun paramètre
|
||||
notification = { slot, parent, root }
|
||||
|
||||
rootSubscribe
|
||||
aucun paramètre
|
||||
notification = root u64
|
||||
```
|
||||
|
||||
Le moteur typed acquiert une classification interne `DeliveredTerminal` utilisée par `signatureSubscribe` uniquement lorsque la notification `Processed` a déjà été livrée au consumer. L'actor retire alors immédiatement la subscription du registry et du mapping remote/local, publie `Closed` sans code d'erreur et ne tente pas de `signatureUnsubscribe`, puisque le serveur Solana annule lui-même cette subscription one-shot après la notification terminale.
|
||||
|
||||
La variante précoce `receivedSignature` ne ferme pas la subscription. Une cancellation explicite avant la notification terminale continue d'utiliser le chemin générique `WsSubscription::unsubscribe()` et préserve le booléen `signatureUnsubscribe`. Les subscriptions `slot` et `root` restent continues et réutilisent sans branche spéciale le reconnect/resubscribe déterministe acquis en `pre.007`.
|
||||
|
||||
## 17. API générique provider-specific
|
||||
|
||||
Le moteur interne doit encoder une spec générique `subscribe_method + unsubscribe_method + params + decoder`, afin qu'une release provider-specific puisse réutiliser la session.
|
||||
@@ -918,7 +944,7 @@ pre.006 DONE — registry subscriptions + IDs locaux + generic subscribe/unsubs
|
||||
pre.007 DONE — reconnect borné + resubscribe déterministe + continuity gap + races unsubscribe/reconnect
|
||||
pre.008 DONE — backpressure per-sub + overflow/limits + causes terminales sûres + leak/lifecycle adversarial tests
|
||||
pre.009 DONE — wrappers stable lot A : account + program + logs, DTOs/options/KSP-TRANSPORT-007
|
||||
pre.010 wrappers stable lot B : signature + slot + root, terminaison signature/KSP-TRANSPORT-007
|
||||
pre.010 DONE — wrappers stable lot B : signature + slot + root, terminaison signature/KSP-TRANSPORT-007
|
||||
pre.011 unstable : block + slotsUpdates + vote, warnings + fallbacks wire/KSP-TRANSPORT-007
|
||||
pre.012 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
|
||||
|
||||
Reference in New Issue
Block a user