v0.2.8-pre.003
This commit is contained in:
259
deltas/0.2.8/pre.003.md
Normal file
259
deltas/0.2.8/pre.003.md
Normal file
@@ -0,0 +1,259 @@
|
||||
<!-- file: deltas/0.2.8/pre.003.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.2.8-pre.003` — Surface standard Helius WebSocket
|
||||
|
||||
## 1. Objet
|
||||
|
||||
Cette tranche expose sur `HeliusLaserStreamWsSession` uniquement les six familles WebSocket standard que l'audit Helius courant classe comme supportées, sans ajouter de wire provider parallèle et sans ouvrir encore Config Helius, `transactionSubscribe` ou le heartbeat.
|
||||
|
||||
Le checkpoint opérateur de `pre.002-fix.001` est intégralement vert ; aucune dette de gate n'est reportée dans cette tranche.
|
||||
|
||||
Version workspace :
|
||||
|
||||
```text
|
||||
0.2.8-pre.3
|
||||
```
|
||||
|
||||
Livraison / commit attendu :
|
||||
|
||||
```text
|
||||
0.2.8-pre.003
|
||||
v0.2.8-pre.003
|
||||
```
|
||||
|
||||
Aucun tag prerelease.
|
||||
|
||||
## 2. Surface Helius ajoutée
|
||||
|
||||
`HeliusLaserStreamWsSession` expose désormais :
|
||||
|
||||
```text
|
||||
account_subscribe
|
||||
program_subscribe
|
||||
logs_subscribe
|
||||
signature_subscribe
|
||||
slot_subscribe
|
||||
root_subscribe
|
||||
```
|
||||
|
||||
Chaque wrapper délègue au `WsSession` physique partagé et réutilise exactement les DTOs, encoders, decoders, `WsSubscriptionKind` et méthodes d'unsubscribe standard acquis en `0.2.7`.
|
||||
|
||||
Aucun type suivant n'est créé :
|
||||
|
||||
```text
|
||||
HeliusAccountSubscribeConfig
|
||||
HeliusAccountNotification
|
||||
HeliusProgramSubscribeConfig
|
||||
HeliusProgramNotification
|
||||
HeliusLogsSubscribeFilter
|
||||
HeliusLogsNotification
|
||||
HeliusSignatureSubscribeConfig
|
||||
HeliusSignatureNotification
|
||||
HeliusSlotNotification
|
||||
HeliusRootNotification
|
||||
```
|
||||
|
||||
L'absence de ces copies est volontaire : aucun écart de wire Helius courant ne les justifie.
|
||||
|
||||
## 3. Surface Helius explicitement absente
|
||||
|
||||
La façade Helius continue de ne pas exposer :
|
||||
|
||||
```text
|
||||
block_subscribe
|
||||
slots_updates_subscribe
|
||||
vote_subscribe
|
||||
transaction_subscribe
|
||||
```
|
||||
|
||||
Les trois familles standard non supportées sont verrouillées par des rustdocs `compile_fail` :
|
||||
|
||||
```text
|
||||
blockSubscribe
|
||||
slotsUpdatesSubscribe
|
||||
voteSubscribe
|
||||
```
|
||||
|
||||
`transactionSubscribe` reste réservé à la tranche provider-specific dédiée du forecast.
|
||||
|
||||
## 4. Organisation du code
|
||||
|
||||
`ws_protocol_session.rs` reste limité au lifecycle des façades et à l'accès crate-private au moteur partagé. Les wrappers sont rangés auprès du propriétaire de leur wire :
|
||||
|
||||
```text
|
||||
ws_accounts.rs
|
||||
SolanaStandardWsSession : account / program
|
||||
HeliusLaserStreamWsSession : account / program
|
||||
|
||||
ws_transactions.rs
|
||||
SolanaStandardWsSession : logs / signature
|
||||
HeliusLaserStreamWsSession : logs / signature
|
||||
|
||||
ws_cluster.rs
|
||||
SolanaStandardWsSession : root / slot / slotsUpdates / vote
|
||||
HeliusLaserStreamWsSession : root / slot
|
||||
|
||||
ws_blocks.rs
|
||||
SolanaStandardWsSession : block uniquement
|
||||
|
||||
ws_protocol_session.rs
|
||||
connect / id / snapshot / state / close
|
||||
physical_session() crate-private
|
||||
```
|
||||
|
||||
Cette répartition évite de transformer le module de façade en fichier fourre-tout tout en conservant un seul actor/socket/registry.
|
||||
|
||||
Aucun accès public `inner()` / `into_inner()` / `physical_session()` n'est ajouté.
|
||||
|
||||
## 5. Fixture Helius standard
|
||||
|
||||
Une fixture locale dédiée couvre les six familles contre un peer WebSocket local Helius-typed.
|
||||
|
||||
Elle vérifie pour chaque paire :
|
||||
|
||||
```text
|
||||
nom subscribe exact
|
||||
params exacts
|
||||
remote subscription id
|
||||
nom unsubscribe exact
|
||||
params [remote_id]
|
||||
result true
|
||||
```
|
||||
|
||||
Couverture :
|
||||
|
||||
```text
|
||||
accountSubscribe / accountUnsubscribe
|
||||
programSubscribe / programUnsubscribe
|
||||
logsSubscribe / logsUnsubscribe
|
||||
signatureSubscribe / signatureUnsubscribe
|
||||
slotSubscribe / slotUnsubscribe
|
||||
rootSubscribe / rootUnsubscribe
|
||||
```
|
||||
|
||||
Les tests standard historiques restent propriétaires du décodage exact des notifications ; la nouvelle fixture prouve que la façade Helius traverse le même wire plutôt que de créer une seconde pile de décodage.
|
||||
|
||||
## 6. Canaries publiques et release completeness
|
||||
|
||||
Ajouts :
|
||||
|
||||
```text
|
||||
public API : les six wrappers Helius sont accessibles depuis le crate-root
|
||||
public API : les types de paramètres/résultats restent les types Solana partagés
|
||||
release completeness : surface Helius courante = six familles standard, avant extension transaction
|
||||
source canary : ws_protocol_session.rs ne redevient pas propriétaire des wrappers métier
|
||||
```
|
||||
|
||||
Les neuf familles de `SolanaStandardWsSession` et les 18 opérations standard acquises restent inchangées.
|
||||
|
||||
## 7. Hors périmètre préservé
|
||||
|
||||
Cette tranche ne modifie pas :
|
||||
|
||||
```text
|
||||
ksp-config-lib
|
||||
config/std.transport.json
|
||||
config/schemas/std.transport.schema.json
|
||||
.env.example
|
||||
WsSubscriptionKind
|
||||
transactionSubscribe / transactionUnsubscribe
|
||||
notification transaction Helius
|
||||
heartbeat/idle timer
|
||||
HTTP 52/14
|
||||
Store / Program / Wallet
|
||||
```
|
||||
|
||||
Aucune dépendance Rust n'est ajoutée.
|
||||
|
||||
## 8. Preuve opérateur héritée avant ouverture
|
||||
|
||||
Le checkpoint fourni après `pre.002-fix.001` est :
|
||||
|
||||
```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-onchain-transport-lib OK
|
||||
cargo test --workspace OK
|
||||
```
|
||||
|
||||
`pre.002` + `pre.002-fix.001` sont donc considérés `DONE` avant ce delta.
|
||||
|
||||
## 9. Fichiers de la livraison
|
||||
|
||||
Nouveau :
|
||||
|
||||
```text
|
||||
crates/ksp-onchain-transport-lib/unit_tests/ws_helius_standard.rs
|
||||
deltas/0.2.8/pre.003.md
|
||||
```
|
||||
|
||||
Modifiés :
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
crates/ksp-onchain-transport-lib/src/ws_protocol_session.rs
|
||||
crates/ksp-onchain-transport-lib/src/ws_accounts.rs
|
||||
crates/ksp-onchain-transport-lib/src/ws_blocks.rs
|
||||
crates/ksp-onchain-transport-lib/src/ws_cluster.rs
|
||||
crates/ksp-onchain-transport-lib/src/ws_transactions.rs
|
||||
crates/ksp-onchain-transport-lib/unit_tests/ws_protocol_session.rs
|
||||
crates/ksp-onchain-transport-lib/tests/public_api.rs
|
||||
crates/ksp-onchain-transport-lib/tests/release_completeness.rs
|
||||
docs/plans/015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md
|
||||
docs/validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md
|
||||
```
|
||||
|
||||
## 10. Validation exécutée dans le sandbox de préparation
|
||||
|
||||
Exécuté après modification :
|
||||
|
||||
```text
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
General Rust rule audit: clean
|
||||
Rust export completeness audit: 0 candidate(s)
|
||||
KSP workspace Rust rule audit: clean
|
||||
```
|
||||
|
||||
Le sandbox ne fournit pas Cargo/rustfmt ; les nouvelles fixtures et doctests ne sont donc pas déclarés compilés avant le checkpoint opérateur.
|
||||
|
||||
## 11. Gate opérateur
|
||||
|
||||
Après application :
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Attendu :
|
||||
|
||||
```text
|
||||
nouvelle fixture Helius six familles verte
|
||||
4 doctests compile_fail de HeliusLaserStreamWsSession verts
|
||||
public API pre.003 verte
|
||||
release completeness pre.003 verte
|
||||
aucun warning/clippy
|
||||
standard WebSocket 9/9 non régressé
|
||||
workspace complet vert
|
||||
```
|
||||
|
||||
## 12. Suite
|
||||
|
||||
Si le checkpoint est vert, `pre.004` ouvre uniquement :
|
||||
|
||||
```text
|
||||
Config V2 kind = helius_laserstream
|
||||
schema / fixtures
|
||||
mapping Config -> Transport
|
||||
secret Helius dans URL résolue par Config
|
||||
redaction api-key
|
||||
```
|
||||
|
||||
`transactionSubscribe` reste hors `pre.004` conformément au forecast courant.
|
||||
Reference in New Issue
Block a user