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.