v0.2.8-pre.004-fix.002

This commit is contained in:
2026-08-23 14:27:25 +02:00
parent 38fd62c256
commit cbb4e7b0de
5 changed files with 216 additions and 24 deletions

View File

@@ -0,0 +1,139 @@
<!-- file: deltas/0.2.8/pre.004-fix.002.md -->
<!-- version: 1 -->
# Delta `0.2.8-pre.004-fix.002` — provenance Helius Config composée
## 1. Objet
Ce second fix de `pre.004` corrige uniquement une hypothèse erronée du canari Config Helius introduit par `pre.004-fix.001`.
Le checkpoint opérateur prouve que :
```text
fmt / audit / check / clippy verts
Transport vert
Config 109/110
échec provenance.len() observé = 2, attendu = 1
```
Le runtime Config, le schema, les profils Helius mainnet/devnet et le mapping Config -> Transport sont corrects et ne sont pas modifiés.
Version workspace :
```text
0.2.8-pre.4.fix.2
```
Livraison / commit attendu :
```text
0.2.8-pre.004-fix.002
v0.2.8-pre.004-fix.002
```
Aucun tag prerelease.
## 2. Cause exacte
L'URL Helius est une chaîne composée :
```text
wss://mainnet.helius-rpc.com/?api-key=${KSP_SECRET_HELIUS_API_KEY:-...}
wss://devnet.helius-rpc.com/?api-key=${KSP_SECRET_HELIUS_API_KEY:-...}
```
Le modèle de provenance Config distingue les segments littéraux et les substitutions d'environnement.
Avec une valeur fournie par le process, la provenance correcte est donc :
```text
0 = ConfigValueProvenance::DocumentLiteral
1 = ConfigValueProvenance::EnvironmentProcess {
variable_name = KSP_SECRET_HELIUS_API_KEY
}
```
Le test de `fix.001` attendait à tort un seul segment, comme pour une valeur constituée uniquement d'un placeholder.
## 3. Correction
Le canari :
```text
helius_laserstream_mainnet_and_devnet_api_key_map_to_protocol_and_safe_redaction
```
attend désormais, pour mainnet et devnet :
```text
provenance.len() = 2
provenance[0] = DocumentLiteral
provenance[1].environment_source() = Process
provenance[1].variable_name() = KSP_SECRET_HELIUS_API_KEY
```
Les assertions déjà présentes restent inchangées :
```text
provider = helius
cluster = mainnet-beta / devnet
protocol = WsProtocolKind::HeliusLaserStream
runtime URL = vraie clé résolue
safe_value = URL avec api-key=********
Debug = aucune clé réelle
```
## 4. Invariants non modifiés
Aucune modification n'est apportée à :
```text
ConfigEnvironment
ResolvedConfigJson / provenance implementation
sensitivity / redaction
config/schemas/std.transport.schema.json
config/std.transport.json
config/examples/std.transport.example.json
fixture std.transport.json
mapping helius_laserstream -> HeliusLaserStream
profils Helius mainnet/devnet
KSP_SECRET_HELIUS_API_KEY
WsEndpointUrl
WsSession / façades / actor
transactionSubscribe
heartbeat
dependencies
```
`pre.004-fix.001.md` reste immutable.
## 5. Fichiers de la livraison
Nouveau :
```text
deltas/0.2.8/pre.004-fix.002.md
```
Modifiés :
```text
Cargo.toml
crates/ksp-config-lib/unit_tests/transport.rs
docs/plans/015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md
docs/validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md
```
## 6. 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.005` reste fermé jusqu'à réception de ce checkpoint intégralement vert.