Files
2026-08-23 18:16:03 +02:00

7.3 KiB

Delta 0.2.8-pre.009 — compliance Helius courant + slotsUpdates + non-régressions finales

1. Base et objet

Base appliquée :

0.2.8-pre.8

Le checkpoint opérateur pre.008 est intégralement vert :

cargo fmt --all                                OK
python3 scripts/audit_rust_workspace_rules.py  clean
cargo check --workspace                        OK
cargo clippy --workspace --all-targets         OK
Transport unit                                 335/335
Transport public API                            40/40
Transport release completeness                  30/30
Transport doctests                               5/5
cargo test --workspace                         OK

pre.009 réalise la compliance finale Helius WebSocket prévue, mais le réaudit courant révèle une évolution de la documentation provider qui impose une petite extension fonctionnelle : slotsUpdatesSubscribe/slotsUpdatesUnsubscribe est désormais retenu comme disponible sur Helius.

2. Version technique

workspace.package.version = 0.2.8-pre.9
commit attendu            = v0.2.8-pre.009
Git tag                    = aucun tag prerelease

Le header root Cargo.toml passe en version 233.

3. Réconciliation documentaire Helius du 2026-08-23

Sources officielles relues :

https://www.helius.dev/docs/rpc/websocket
https://www.helius.dev/docs/api-reference/rpc/websocket/slotsupdatessubscribe
https://www.helius.dev/docs/api-reference/rpc/websocket/slotsupdatesunsubscribe
https://www.helius.dev/docs/api-reference/rpc/websocket/blocksubscribe
https://www.helius.dev/docs/api-reference/rpc/websocket/votesubscribe
https://www.helius.dev/docs/api-reference/rpc/websocket/accountsubscribe
https://www.helius.dev/docs/api-reference/rpc/websocket/transactionsubscribe

État courant :

overview LaserStream WebSocket
  -> annonce le support du jeu complet des méthodes standard

blockSubscribe
  -> page spécifique : unstable + explicitement non supporté Helius

voteSubscribe
  -> page spécifique : unstable + explicitement non supporté Helius

slotsUpdatesSubscribe
  -> page spécifique : unstable
  -> endpoints Helius mainnet/devnet
  -> request, notification et subscription ID documentés
  -> aucune mention de non-support Helius

slotsUpdatesUnsubscribe
  -> subscriptionId entier
  -> result bool

Arbitrage KSP : lorsqu'une formule globale et une page de méthode divergent, la page spécifique prévaut.

Surface Helius retenue après réaudit :

standard : account, logs, program, root, signature, slot, slotsUpdates
extension: transaction
absent   : block, vote

4. slotsUpdates rejoint la façade Helius

HeliusLaserStreamWsSession expose désormais :

pub async fn slots_updates_subscribe(
    &self,
) -> ksp_core_lib::Result<crate::WsSubscription<crate::SolanaSlotUpdate>>

Aucun nouveau DTO ni nouveau wire n'est créé. La façade délègue au même chemin déjà stabilisé :

HeliusLaserStreamWsSession
  -> physical_session()
  -> WsSession::slots_updates_subscribe()
  -> WsSubscriptionKind::SlotsUpdates
  -> slotsUpdatesSubscribe
  -> slotsUpdatesNotification
  -> slotsUpdatesUnsubscribe via handle

Le caractère unstable reste celui de la famille standard : le warning central warn_if_unstable() est donc conservé automatiquement.

5. Capability guards réconciliés

Le compile-fail historique :

Helius -X-> slotsUpdatesSubscribe

est supprimé car il contredirait la surface courante.

Restent obligatoires :

Helius -X-> blockSubscribe
Helius -X-> voteSubscribe
Helius -X-> into_inner
SolanaStandard -X-> transactionSubscribe

Aucun escape hatch vers le WsSession générique n'est ajouté.

6. accountSubscribe enhanced : pas de wire inventé

L'overview Helius mentionne désormais des « advanced filters » sur accountSubscribe, mais la page API spécifique ne publie actuellement que :

pubkey
encoding
commitment
notifyOn deprecated/no-op

Aucun DTO provider-specific supplémentaire n'est ajouté tant qu'un wire exact n'est pas publié. notifyOn reste volontairement absent.

7. Canaris de compliance transversaux

Trois canaris sont ajoutés dans tests/release_completeness.rs.

7.1 HTTP + Standard WebSocket

Ils verrouillent :

HTTP current        52
HTTP historical     14
Standard WS         9 familles
Standard operations 18 subscribe/unsubscribe

Les neuf méthodes typed de SolanaStandardWsSession restent adressables.

7.2 Helius courant

Ils verrouillent :

7 familles standard :
  account
  logs
  program
  root
  signature
  slot
  slotsUpdates

1 extension :
  transaction

absentes :
  block
  vote

Le source canary vérifie également que le guard unsupported_slots_updates a disparu tandis que unsupported_block et unsupported_vote restent présents.

7.3 Config / secret / dependency firewall

La compliance finale vérifie durablement :

Transport -X-> Config/Store/Program/tracing direct
Config -> Transport présent
Config mappe WsProtocolKind::HeliusLaserStream
example Transport contient kind = helius_laserstream
example Transport utilise ${KSP_SECRET_HELIUS_API_KEY...}
.env.example inventorie KSP_SECRET_HELIUS_API_KEY

Aucune nouvelle dépendance n'est introduite.

8. Public API et fixture Helius standard

Un public-API canary supplémentaire adresse HeliusLaserStreamWsSession::slots_updates_subscribe et le DTO partagé SolanaSlotUpdate.

Le fixture Helius standard existant passe de six à sept familles et vérifie la paire exacte :

slotsUpdatesSubscribe   params []
slotsUpdatesUnsubscribe params [remoteSubscriptionId]

Le lifecycle, le decoder, le remote-ID mapping et l'unsubscribe restent ceux du moteur commun.

9. Comptages attendus

Transport unit             335
Transport public API        41
release completeness        33
doctests compile-fail        4

La diminution de 5 à 4 doctests est intentionnelle : le compile-fail Helius slotsUpdatesSubscribe est retiré parce que cette API devient supportée.

10. Fichiers modifiés

Cargo.toml
crates/ksp-onchain-transport-lib/src/lib.rs
crates/ksp-onchain-transport-lib/src/ws_cluster.rs
crates/ksp-onchain-transport-lib/src/ws_protocol_session.rs
crates/ksp-onchain-transport-lib/tests/public_api.rs
crates/ksp-onchain-transport-lib/tests/release_completeness.rs
crates/ksp-onchain-transport-lib/unit_tests/ws_helius_standard.rs
docs/plans/015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md
docs/validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md
deltas/0.2.8/pre.009.md

11. Hors scope

Restent hors pre.009 :

smoke Helius live opt-in + README/USAGE + cargo tree final  pre.010
fermeture workspace/docs/indexes + prompt 0.2.9             pre.011
LaserStream gRPC                                             futur backend distinct
Gatekeeper beta / preconfirmations                           hors 0.2.8

12. Gate opérateur

cargo fmt --all
python3 scripts/audit_rust_workspace_rules.py
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-onchain-transport-lib
cargo test --workspace

Critère de fermeture : zéro warning, audit clean, 335 unit / 41 public API / 33 completeness / 4 doctests et workspace vert.