v0.2.8-pre.004-fix.001
This commit is contained in:
182
deltas/0.2.8/pre.004-fix.001.md
Normal file
182
deltas/0.2.8/pre.004-fix.001.md
Normal file
@@ -0,0 +1,182 @@
|
||||
<!-- file: deltas/0.2.8/pre.004-fix.001.md -->
|
||||
<!-- version: 2 -->
|
||||
|
||||
# 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` :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
0.2.8-pre.4.fix.1
|
||||
```
|
||||
|
||||
Livraison / commit attendu :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
helius_laserstream_mainnet_and_devnet_api_key_map_to_protocol_and_safe_redaction
|
||||
```
|
||||
|
||||
Il vérifie pour **mainnet et devnet** :
|
||||
|
||||
```text
|
||||
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 à :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
deltas/0.2.8/pre.004-fix.001.md
|
||||
```
|
||||
|
||||
Modifiés :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
config/std.transport.json
|
||||
config/schemas/std.transport.schema.json
|
||||
.env.example
|
||||
Transport WebSocket runtime
|
||||
```
|
||||
|
||||
## 8. Validation à rejouer
|
||||
|
||||
```bash
|
||||
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.
|
||||
Reference in New Issue
Block a user