# Delta `0.2.8-rel.001` — publication stable Helius LaserStream WebSocket ## 1. Base requise Base directe attendue : ```text 0.2.8-pre.011 workspace.package.version = 0.2.8-pre.11 ``` Commit attendu pour cette livraison : ```text v0.2.8-rel.001 ``` Tag stable attendu après validation : ```text v0.2.8 ``` ## 2. Objectif Publier `0.2.8 — Helius LaserStream WebSocket` sans ajouter de capacité fonctionnelle après la candidate. `rel.001` : - passe `workspace.package.version` de `0.2.8-pre.11` à `0.2.8` ; - clôt `ROADMAP.md`, le plan `015` et la matrice `validation/011` ; - ajoute l’entrée stable `0.2.8` au `CHANGELOG.md` ; - passe `Helius WS` à `Stable` dans l’inventaire composants ; - synchronise les index/documentation de séquence vers le statut publié ; - conserve `prompts/014-V0_2_9_START_PROMPT.md` inchangé comme contrat actif pour `0.2.9`. Aucun fichier Rust, aucune API publique, aucun schema/config runtime, aucune dépendance et aucune feature ne changent dans cette livraison. ## 3. Preuve candidate finale acquise Le checkpoint opérateur fourni le **23 août 2026** après application de `0.2.8-pre.011` est intégralement vert : ```text cargo fmt --all OK python3 scripts/audit_rust_workspace_rules.py OK General Rust rule audit clean Rust export completeness audit 0 candidate(s) KSP workspace Rust rule audit clean cargo check --workspace OK cargo clippy --workspace --all-targets OK cargo test -p ksp-onchain-transport-lib OK unit 335 passed public API 41 passed release completeness 34 passed doctests compile-fail 4 passed cargo test --workspace OK ``` Les suites Config/Core/Logging/Wallet/Desks passent également. Les smokes réseau, benchmarks et probes operator-only restent ignorés par défaut conformément à leur contrat. Les trois audits Cargo ont été exécutés en `pre.010` puis conservés valides par `pre.011`, qui ne modifie aucune dépendance : ```text cargo tree -p ksp-onchain-transport-lib cargo tree -p ksp-onchain-transport-lib --duplicates cargo tree --duplicates ``` Transport ne présente aucune nouvelle dépendance Helius/gRPC/Config ; les doublons ciblés `syn 2/3` et `webpki-roots 0.26/1.0` sont transitifs et non bloquants. ## 4. Surface stable publiée ### HTTP hérité ```text 52/52 méthodes HTTP courantes typées 14/14 méthodes historiques Deprecated/Removed conservées KSP-TRANSPORT-007 appliqué à la surface typed write submissions : aucun resend après dispatch ambigu ``` ### WebSocket Solana standard hérité ```text 9 familles standard 18/18 opérations subscribe/unsubscribe stable : account, logs, program, root, signature, slot unstable : block, slotsUpdates, vote ``` ### Helius LaserStream WebSocket Surface standard réutilisée : ```text account logs program root signature slot slotsUpdates # unstable ``` Extension Helius typée : ```text transactionSubscribe transactionUnsubscribe transactionNotification ``` Absents de la façade Helius : ```text block vote ``` Contrats stabilisés : ```text HeliusLaserStreamWsSession façade publique dédiée WsSession actor physique unique partagé avec le standard aucun second client/socket/registry/scheduler capability guards avant I/O heartbeat Helius-only = WebSocket Ping control frame / 60 s reconnect/resubscribe/remap/unsubscribe races bornés backpressure isolé par subscription payload oversized borné avant decode métier erreurs RPC provider n’abattent pas la session physique Debug/snapshots Helius sans payload provider brut ``` ### Config et secrets ```text std.transport V2 comprend helius_laserstream profiles Helius mainnet/devnet KSP_SECRET_HELIUS_API_KEY appartient à Config redaction segmentaire des URLs résolues Config -> Transport autorisé Transport -X-> Config / environnement ``` Le smoke Helius live cross-crates est reporté vers une future surface d’intégration/orchestration dédiée afin de ne pas faire de Config une destination générale de smoke et de ne pas faire lire le secret par Transport. LaserStream gRPC / Yellowstone reste un backend distinct : aucune promesse gRPC/replay n’est attachée au contrat WebSocket `0.2.8`. ## 5. Fichiers ajoutés ```text deltas/0.2.8/rel.001.md ``` ## 6. Fichiers modifiés ```text Cargo.toml ROADMAP.md CHANGELOG.md docs/000-README.md docs/architecture/004-COMPONENT_INVENTORY.md docs/plans/000-README.md docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md docs/plans/015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md docs/validation/000-README.md docs/validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md prompts/000-README.md ``` Volontairement inchangé : ```text prompts/014-V0_2_9_START_PROMPT.md crates/** config/** .env.example ``` ## 7. Décisions de clôture Aucune nouvelle décision de protocole n’est introduite par `rel.001`. La publication confirme : 1. Helius LaserStream WebSocket reste une façade provider dédiée sur le moteur/actor WebSocket partagé ; 2. la surface publiée est `7 familles standard + transaction`, avec `block/vote` absents ; 3. `slotsUpdates` reste exposé comme unstable ; 4. le heartbeat Ping 60 s est provider-owned et Helius-only ; 5. Config reste l’unique propriétaire du secret Helius et Transport ne lit pas l’environnement ; 6. le smoke live cross-crates Helius attend une surface d’intégration/orchestration dédiée ; 7. HTTP 52+14 et Standard WS 18/18 restent des non-régressions obligatoires ; 8. `0.2.9` ouvre Yellowstone gRPC standard/provider-neutral par audit/sizing avant dépendances ou implémentation lourde. ## 8. Validation finale après application Le passage du signal Cargo à la version stable doit être revalidé avant commit/tag : ```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 ``` Les graphes Cargo n’ont pas besoin d’être rejoués si l’overlay appliqué est exactement `0.2.8-rel.001`, car cette livraison ne change aucune dépendance. Les smokes live n’ont pas besoin d’être rejoués non plus : aucune source runtime n’est modifiée. Comptages Transport attendus : ```text unit = 335 public API = 41 release completeness = 34 doctests compile-fail = 4 ``` ## 9. Commit et tag stable Après succès du gate : ```text commit : v0.2.8-rel.001 tag : v0.2.8 ``` Aucun tag intermédiaire de prerelease/fix/rel n’est requis. ## 10. Suite Après création du tag stable `v0.2.8`, ouvrir : ```text 0.2.9-pre.001 ``` avec : ```text prompts/014-V0_2_9_START_PROMPT.md ``` La première tranche est un gate strict de relecture, audit Yellowstone courant, architecture, threat model, dépendances/licences/MSRV/features et sizing. La prévision `pre.001 -> pre.013` du prompt est explicitement souple et doit être recalibrée avant toute implémentation gRPC lourde.