v0.2.8-pre.009
This commit is contained in:
262
deltas/0.2.8/pre.009.md
Normal file
262
deltas/0.2.8/pre.009.md
Normal file
@@ -0,0 +1,262 @@
|
||||
<!-- 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.
|
||||
Reference in New Issue
Block a user