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.