Files
khadhroony-solana-project/deltas/0.2.8/pre.004.md
2026-08-23 14:08:12 +02:00

4.9 KiB

Delta 0.2.8-pre.004 — Config V2 Helius LaserStream WebSocket

1. Objet

Cette tranche ouvre Config V2 au protocole WebSocket helius_laserstream, matérialise son mapping vers WsProtocolKind::HeliusLaserStream et prouve la résolution/redaction de la clé Helius sans modifier le moteur WebSocket ni commencer transactionSubscribe.

Le checkpoint opérateur de pre.003 est intégralement vert.

Version workspace :

0.2.8-pre.4

Livraison / commit attendu :

0.2.8-pre.004
v0.2.8-pre.004

Aucun tag prerelease.

2. Discriminateur Config WebSocket

Le JSON Schema V2 accepte désormais exactement :

solana_standard
helius_laserstream

L'adapter ksp-config-lib mappe :

solana_standard     -> WsProtocolKind::SolanaStandard
helius_laserstream  -> WsProtocolKind::HeliusLaserStream

Le discriminateur reste possédé par profiles[].ws_endpoints[].kind; aucun alias ou contrat gRPC n'est introduit.

3. Fixture et exemple Helius

La fixture ksp-config-lib ajoute un second endpoint WebSocket :

name      = fixture_helius_ws
provider  = helius
cluster   = mainnet-beta
kind      = helius_laserstream
url       = wss://mainnet.helius-rpc.com/?api-key=${KSP_SECRET_HELIUS_API_KEY:-fixture-helius-key}

config/examples/std.transport.example.json remplace l'ancien second endpoint WebSocket provider générique par un exemple Helius explicite :

name      = mainnet_helius_ws
provider  = helius
kind      = helius_laserstream
url       = wss://mainnet.helius-rpc.com/?api-key=${KSP_SECRET_HELIUS_API_KEY:-replace-me}

Le document canonique config/std.transport.json reste volontairement inchangé et standard-only : la configuration par défaut ne doit pas embarquer un endpoint provider nécessitant une credential factice.

4. Secret Helius et redaction

.env.example inventorie :

KSP_SECRET_HELIUS_API_KEY

sous forme commentée avec placeholder non secret.

Un nouveau test Config injecte une clé canari et prouve :

l'URL runtime contient la clé résolue
le protocol runtime vaut HeliusLaserStream
la projection safe_value redige /ws_endpoints/1/url
ResolvedTransportConfig Debug ne contient pas la clé

Config reste l'unique propriétaire de l'environnement. Transport ne lit pas std::env.

5. Composition Config -> Transport

La fixture principale vérifie maintenant deux endpoints WebSocket :

fixture_private_ws  -> SolanaStandard
fixture_helius_ws   -> HeliusLaserStream

Le second endpoint est également passé au constructeur public HeliusLaserStreamWsSession::connect sans polling afin de verrouiller la compatibilité de types Config -> Transport. Les guards runtime du protocole restent propriétaires de Transport.

6. Documentation ciblée

ksp-config-lib/USAGE.md documente les deux valeurs kind, le namespace WebSocket du discriminateur Helius et l'ownership/redaction de KSP_SECRET_HELIUS_API_KEY.

Le plan reste propriétaire du forecast ; la validation reste propriétaire des critères et preuves. Aucun nouveau document/fichier fourre-tout n'est créé.

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

Cette tranche ne modifie pas :

config/std.transport.json
WsSession / actor / reconnect / queues
les six wrappers Helius standard acquis en pre.003
WsSubscriptionKind
transactionSubscribe / transactionUnsubscribe
transactionNotification
heartbeat provider
HTTP 52/14
Wallet / Store / Program

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

8. Preuve opérateur héritée

Le checkpoint pre.003 fourni le 2026-08-23 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

Les preuves spécifiques Helius standard sont également vertes : 314 tests unitaires Transport, 38 public API, 26 release-completeness et 4 doctests compile-fail.

9. Fichiers de la livraison

Nouveau :

deltas/0.2.8/pre.004.md

Modifiés :

Cargo.toml
.env.example
config/examples/std.transport.example.json
config/schemas/std.transport.schema.json
crates/ksp-config-lib/src/transport.rs
crates/ksp-config-lib/unit_tests/fixtures/std.transport.json
crates/ksp-config-lib/unit_tests/transport.rs
crates/ksp-config-lib/USAGE.md
docs/plans/015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md
docs/validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md

10. Validation à exécuter

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

pre.004 reste PREPARED jusqu'à réception de ce checkpoint.