Files
khadhroony-solana-project/deltas/0.2.8/pre.009.md
2026-08-23 18:16:03 +02:00

263 lines
7.3 KiB
Markdown

<!-- file: deltas/0.2.8/pre.009.md -->
<!-- version: 1 -->
# Delta `0.2.8-pre.009` — compliance Helius courant + `slotsUpdates` + non-régressions finales
## 1. Base et objet
Base appliquée :
```text
0.2.8-pre.8
```
Le checkpoint opérateur `pre.008` est intégralement vert :
```text
cargo fmt --all OK
python3 scripts/audit_rust_workspace_rules.py clean
cargo check --workspace OK
cargo clippy --workspace --all-targets OK
Transport unit 335/335
Transport public API 40/40
Transport release completeness 30/30
Transport doctests 5/5
cargo test --workspace OK
```
`pre.009` réalise la compliance finale Helius WebSocket prévue, mais le réaudit courant révèle une évolution de la documentation provider qui impose une petite extension fonctionnelle : `slotsUpdatesSubscribe`/`slotsUpdatesUnsubscribe` est désormais retenu comme disponible sur Helius.
## 2. Version technique
```text
workspace.package.version = 0.2.8-pre.9
commit attendu = v0.2.8-pre.009
Git tag = aucun tag prerelease
```
Le header root `Cargo.toml` passe en version `233`.
## 3. Réconciliation documentaire Helius du 2026-08-23
Sources officielles relues :
```text
https://www.helius.dev/docs/rpc/websocket
https://www.helius.dev/docs/api-reference/rpc/websocket/slotsupdatessubscribe
https://www.helius.dev/docs/api-reference/rpc/websocket/slotsupdatesunsubscribe
https://www.helius.dev/docs/api-reference/rpc/websocket/blocksubscribe
https://www.helius.dev/docs/api-reference/rpc/websocket/votesubscribe
https://www.helius.dev/docs/api-reference/rpc/websocket/accountsubscribe
https://www.helius.dev/docs/api-reference/rpc/websocket/transactionsubscribe
```
État courant :
```text
overview LaserStream WebSocket
-> annonce le support du jeu complet des méthodes standard
blockSubscribe
-> page spécifique : unstable + explicitement non supporté Helius
voteSubscribe
-> page spécifique : unstable + explicitement non supporté Helius
slotsUpdatesSubscribe
-> page spécifique : unstable
-> endpoints Helius mainnet/devnet
-> request, notification et subscription ID documentés
-> aucune mention de non-support Helius
slotsUpdatesUnsubscribe
-> subscriptionId entier
-> result bool
```
Arbitrage KSP : lorsqu'une formule globale et une page de méthode divergent, **la page spécifique prévaut**.
Surface Helius retenue après réaudit :
```text
standard : account, logs, program, root, signature, slot, slotsUpdates
extension: transaction
absent : block, vote
```
## 4. `slotsUpdates` rejoint la façade Helius
`HeliusLaserStreamWsSession` expose désormais :
```rust
pub async fn slots_updates_subscribe(
&self,
) -> ksp_core_lib::Result<crate::WsSubscription<crate::SolanaSlotUpdate>>
```
Aucun nouveau DTO ni nouveau wire n'est créé. La façade délègue au même chemin déjà stabilisé :
```text
HeliusLaserStreamWsSession
-> physical_session()
-> WsSession::slots_updates_subscribe()
-> WsSubscriptionKind::SlotsUpdates
-> slotsUpdatesSubscribe
-> slotsUpdatesNotification
-> slotsUpdatesUnsubscribe via handle
```
Le caractère unstable reste celui de la famille standard : le warning central `warn_if_unstable()` est donc conservé automatiquement.
## 5. Capability guards réconciliés
Le compile-fail historique :
```text
Helius -X-> slotsUpdatesSubscribe
```
est supprimé car il contredirait la surface courante.
Restent obligatoires :
```text
Helius -X-> blockSubscribe
Helius -X-> voteSubscribe
Helius -X-> into_inner
SolanaStandard -X-> transactionSubscribe
```
Aucun escape hatch vers le `WsSession` générique n'est ajouté.
## 6. `accountSubscribe` enhanced : pas de wire inventé
L'overview Helius mentionne désormais des « advanced filters » sur `accountSubscribe`, mais la page API spécifique ne publie actuellement que :
```text
pubkey
encoding
commitment
notifyOn deprecated/no-op
```
Aucun DTO provider-specific supplémentaire n'est ajouté tant qu'un wire exact n'est pas publié. `notifyOn` reste volontairement absent.
## 7. Canaris de compliance transversaux
Trois canaris sont ajoutés dans `tests/release_completeness.rs`.
### 7.1 HTTP + Standard WebSocket
Ils verrouillent :
```text
HTTP current 52
HTTP historical 14
Standard WS 9 familles
Standard operations 18 subscribe/unsubscribe
```
Les neuf méthodes typed de `SolanaStandardWsSession` restent adressables.
### 7.2 Helius courant
Ils verrouillent :
```text
7 familles standard :
account
logs
program
root
signature
slot
slotsUpdates
1 extension :
transaction
absentes :
block
vote
```
Le source canary vérifie également que le guard `unsupported_slots_updates` a disparu tandis que `unsupported_block` et `unsupported_vote` restent présents.
### 7.3 Config / secret / dependency firewall
La compliance finale vérifie durablement :
```text
Transport -X-> Config/Store/Program/tracing direct
Config -> Transport présent
Config mappe WsProtocolKind::HeliusLaserStream
example Transport contient kind = helius_laserstream
example Transport utilise ${KSP_SECRET_HELIUS_API_KEY...}
.env.example inventorie KSP_SECRET_HELIUS_API_KEY
```
Aucune nouvelle dépendance n'est introduite.
## 8. Public API et fixture Helius standard
Un public-API canary supplémentaire adresse `HeliusLaserStreamWsSession::slots_updates_subscribe` et le DTO partagé `SolanaSlotUpdate`.
Le fixture Helius standard existant passe de six à sept familles et vérifie la paire exacte :
```text
slotsUpdatesSubscribe params []
slotsUpdatesUnsubscribe params [remoteSubscriptionId]
```
Le lifecycle, le decoder, le remote-ID mapping et l'unsubscribe restent ceux du moteur commun.
## 9. Comptages attendus
```text
Transport unit 335
Transport public API 41
release completeness 33
doctests compile-fail 4
```
La diminution de 5 à 4 doctests est intentionnelle : le compile-fail Helius `slotsUpdatesSubscribe` est retiré parce que cette API devient supportée.
## 10. Fichiers modifiés
```text
Cargo.toml
crates/ksp-onchain-transport-lib/src/lib.rs
crates/ksp-onchain-transport-lib/src/ws_cluster.rs
crates/ksp-onchain-transport-lib/src/ws_protocol_session.rs
crates/ksp-onchain-transport-lib/tests/public_api.rs
crates/ksp-onchain-transport-lib/tests/release_completeness.rs
crates/ksp-onchain-transport-lib/unit_tests/ws_helius_standard.rs
docs/plans/015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md
docs/validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md
deltas/0.2.8/pre.009.md
```
## 11. Hors scope
Restent hors `pre.009` :
```text
smoke Helius live opt-in + README/USAGE + cargo tree final pre.010
fermeture workspace/docs/indexes + prompt 0.2.9 pre.011
LaserStream gRPC futur backend distinct
Gatekeeper beta / preconfirmations hors 0.2.8
```
## 12. Gate opérateur
```bash
cargo fmt --all
python3 scripts/audit_rust_workspace_rules.py
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-onchain-transport-lib
cargo test --workspace
```
Critère de fermeture : zéro warning, audit clean, **335 unit / 41 public API / 33 completeness / 4 doctests** et workspace vert.