Files
khadhroony-solana-project/deltas/0.2.8/pre.003.md
2026-08-23 13:52:57 +02:00

6.8 KiB

Delta 0.2.8-pre.003 — Surface standard Helius WebSocket

1. Objet

Cette tranche expose sur HeliusLaserStreamWsSession uniquement les six familles WebSocket standard que l'audit Helius courant classe comme supportées, sans ajouter de wire provider parallèle et sans ouvrir encore Config Helius, transactionSubscribe ou le heartbeat.

Le checkpoint opérateur de pre.002-fix.001 est intégralement vert ; aucune dette de gate n'est reportée dans cette tranche.

Version workspace :

0.2.8-pre.3

Livraison / commit attendu :

0.2.8-pre.003
v0.2.8-pre.003

Aucun tag prerelease.

2. Surface Helius ajoutée

HeliusLaserStreamWsSession expose désormais :

account_subscribe
program_subscribe
logs_subscribe
signature_subscribe
slot_subscribe
root_subscribe

Chaque wrapper délègue au WsSession physique partagé et réutilise exactement les DTOs, encoders, decoders, WsSubscriptionKind et méthodes d'unsubscribe standard acquis en 0.2.7.

Aucun type suivant n'est créé :

HeliusAccountSubscribeConfig
HeliusAccountNotification
HeliusProgramSubscribeConfig
HeliusProgramNotification
HeliusLogsSubscribeFilter
HeliusLogsNotification
HeliusSignatureSubscribeConfig
HeliusSignatureNotification
HeliusSlotNotification
HeliusRootNotification

L'absence de ces copies est volontaire : aucun écart de wire Helius courant ne les justifie.

3. Surface Helius explicitement absente

La façade Helius continue de ne pas exposer :

block_subscribe
slots_updates_subscribe
vote_subscribe
transaction_subscribe

Les trois familles standard non supportées sont verrouillées par des rustdocs compile_fail :

blockSubscribe
slotsUpdatesSubscribe
voteSubscribe

transactionSubscribe reste réservé à la tranche provider-specific dédiée du forecast.

4. Organisation du code

ws_protocol_session.rs reste limité au lifecycle des façades et à l'accès crate-private au moteur partagé. Les wrappers sont rangés auprès du propriétaire de leur wire :

ws_accounts.rs
  SolanaStandardWsSession : account / program
  HeliusLaserStreamWsSession : account / program

ws_transactions.rs
  SolanaStandardWsSession : logs / signature
  HeliusLaserStreamWsSession : logs / signature

ws_cluster.rs
  SolanaStandardWsSession : root / slot / slotsUpdates / vote
  HeliusLaserStreamWsSession : root / slot

ws_blocks.rs
  SolanaStandardWsSession : block uniquement

ws_protocol_session.rs
  connect / id / snapshot / state / close
  physical_session() crate-private

Cette répartition évite de transformer le module de façade en fichier fourre-tout tout en conservant un seul actor/socket/registry.

Aucun accès public inner() / into_inner() / physical_session() n'est ajouté.

5. Fixture Helius standard

Une fixture locale dédiée couvre les six familles contre un peer WebSocket local Helius-typed.

Elle vérifie pour chaque paire :

nom subscribe exact
params exacts
remote subscription id
nom unsubscribe exact
params [remote_id]
result true

Couverture :

accountSubscribe / accountUnsubscribe
programSubscribe / programUnsubscribe
logsSubscribe / logsUnsubscribe
signatureSubscribe / signatureUnsubscribe
slotSubscribe / slotUnsubscribe
rootSubscribe / rootUnsubscribe

Les tests standard historiques restent propriétaires du décodage exact des notifications ; la nouvelle fixture prouve que la façade Helius traverse le même wire plutôt que de créer une seconde pile de décodage.

6. Canaries publiques et release completeness

Ajouts :

public API : les six wrappers Helius sont accessibles depuis le crate-root
public API : les types de paramètres/résultats restent les types Solana partagés
release completeness : surface Helius courante = six familles standard, avant extension transaction
source canary : ws_protocol_session.rs ne redevient pas propriétaire des wrappers métier

Les neuf familles de SolanaStandardWsSession et les 18 opérations standard acquises restent inchangées.

7. Hors périmètre préservé

Cette tranche ne modifie pas :

ksp-config-lib
config/std.transport.json
config/schemas/std.transport.schema.json
.env.example
WsSubscriptionKind
transactionSubscribe / transactionUnsubscribe
notification transaction Helius
heartbeat/idle timer
HTTP 52/14
Store / Program / Wallet

Aucune dépendance Rust n'est ajoutée.

8. Preuve opérateur héritée avant ouverture

Le checkpoint fourni après pre.002-fix.001 est :

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

pre.002 + pre.002-fix.001 sont donc considérés DONE avant ce delta.

9. Fichiers de la livraison

Nouveau :

crates/ksp-onchain-transport-lib/unit_tests/ws_helius_standard.rs
deltas/0.2.8/pre.003.md

Modifiés :

Cargo.toml
crates/ksp-onchain-transport-lib/src/ws_protocol_session.rs
crates/ksp-onchain-transport-lib/src/ws_accounts.rs
crates/ksp-onchain-transport-lib/src/ws_blocks.rs
crates/ksp-onchain-transport-lib/src/ws_cluster.rs
crates/ksp-onchain-transport-lib/src/ws_transactions.rs
crates/ksp-onchain-transport-lib/unit_tests/ws_protocol_session.rs
crates/ksp-onchain-transport-lib/tests/public_api.rs
crates/ksp-onchain-transport-lib/tests/release_completeness.rs
docs/plans/015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md
docs/validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md

10. Validation exécutée dans le sandbox de préparation

Exécuté après modification :

python3 scripts/audit_rust_workspace_rules.py
General Rust rule audit: clean
Rust export completeness audit: 0 candidate(s)
KSP workspace Rust rule audit: clean

Le sandbox ne fournit pas Cargo/rustfmt ; les nouvelles fixtures et doctests ne sont donc pas déclarés compilés avant le checkpoint opérateur.

11. Gate opérateur

Après application :

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

Attendu :

nouvelle fixture Helius six familles verte
4 doctests compile_fail de HeliusLaserStreamWsSession verts
public API pre.003 verte
release completeness pre.003 verte
aucun warning/clippy
standard WebSocket 9/9 non régressé
workspace complet vert

12. Suite

Si le checkpoint est vert, pre.004 ouvre uniquement :

Config V2 kind = helius_laserstream
schema / fixtures
mapping Config -> Transport
secret Helius dans URL résolue par Config
redaction api-key

transactionSubscribe reste hors pre.004 conformément au forecast courant.