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.