Files
khadhroony-solana-project/deltas/0.2.8/pre.004-fix.001.md

5.0 KiB

Delta 0.2.8-pre.004-fix.001 — redaction Helius Config + couverture Devnet

1. Objet

Ce fix corrige deux défauts circonscrits de 0.2.8-pre.004 :

1. faux négatif du nouveau canari de redaction `safe_value` Helius ;
2. représentation déterministe incomplète : mainnet était matérialisé, Devnet ne l'était pas encore.

Le résolveur Config, le mapping Config -> Transport et le moteur WebSocket restent inchangés.

Version workspace :

0.2.8-pre.4.fix.1

Livraison / commit attendu :

0.2.8-pre.004-fix.001
v0.2.8-pre.004-fix.001

Aucun tag prerelease.

2. Preuve opérateur ayant déclenché le fix

Le checkpoint pre.004 reçu le 2026-08-23 donne :

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-config-lib                   FAIL 109/110
cargo test -p ksp-onchain-transport-lib        OK
cargo test --workspace                         FAIL sur le même test Config

L'échec exact est :

observé = wss://mainnet.helius-rpc.com/?api-key=********
attendu = ********

Le test avait déjà prouvé avant cette assertion que le schema accepte helius_laserstream, que l'adapter produit WsProtocolKind::HeliusLaserStream et que l'URL runtime contient la clé Helius résolue.

3. Redaction Config confirmée

Le contrat historique Config est segmentaire pour une chaîne composée :

source composée                         safe_value
https://rpc.example/?token=${SECRET} -> https://rpc.example/?token=********
token=${SECRET}                      -> token=********

La projection sûre conserve donc les littéraux non sensibles et masque uniquement le segment secret.

Pour Helius :

mainnet runtime    = wss://mainnet.helius-rpc.com/?api-key=<clé réelle>
mainnet safe_value = wss://mainnet.helius-rpc.com/?api-key=********

devnet runtime     = wss://devnet.helius-rpc.com/?api-key=<clé réelle>
devnet safe_value  = wss://devnet.helius-rpc.com/?api-key=********

La clé réelle doit rester absente de safe_value et de toutes les représentations Debug.

4. Couverture Helius Devnet ajoutée

La documentation Helius WebSocket actuelle expose un endpoint unifié par réseau :

mainnet  wss://mainnet.helius-rpc.com/?api-key=<api-key>
devnet   wss://devnet.helius-rpc.com/?api-key=<api-key>

pre.004 avait documenté les deux réseaux dans le plan mais n'avait matérialisé que mainnet dans l'exemple et la fixture Config. Le fix complète ce manque.

Décision de structure :

mainnet et devnet vivent dans des profils Config distincts ;
un même profil logique ne mélange pas les deux clusters ;
la même variable KSP_SECRET_HELIUS_API_KEY peut alimenter les deux URLs ;
config/std.transport.json reste standard-only.

L'exemple versionné ajoute un profil devnet_helius. La fixture Config ajoute un profil helius_devnet et le test charge explicitement ce profil en plus du profil mainnet par défaut.

5. Correction du test

Le canari devient :

helius_laserstream_mainnet_and_devnet_api_key_map_to_protocol_and_safe_redaction

Il vérifie pour mainnet et devnet :

provider = helius
cluster exact
protocol = WsProtocolKind::HeliusLaserStream
URL runtime exacte avec la clé résolue
safe_value exact avec segment ********
provenance = KSP_SECRET_HELIUS_API_KEY / Process
Debug sans la clé réelle
composition avec HeliusLaserStreamWsSession au moins sur le profil Devnet dédié

6. Invariants non modifiés

Aucune modification n'est apportée à :

ConfigEnvironment / moteur de résolution
sensitivity / provenance semantics
JSON Schema Transport V2
mapping helius_laserstream -> HeliusLaserStream
WsEndpointUrl
WsSession / façades / actor
config/std.transport.json canonique
transactionSubscribe
heartbeat
new dependency

.env.example conserve une seule variable KSP_SECRET_HELIUS_API_KEY, suffisante pour les deux endpoints Helius.

7. Fichiers de la livraison

Nouveau :

deltas/0.2.8/pre.004-fix.001.md

Modifiés :

Cargo.toml
config/examples/std.transport.example.json
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

Inchangés volontairement :

config/std.transport.json
config/schemas/std.transport.schema.json
.env.example
Transport WebSocket runtime

8. Validation à rejouer

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 + fix.001 restent non fermés jusqu'à réception de ce checkpoint intégralement vert.