247 lines
7.1 KiB
Markdown
247 lines
7.1 KiB
Markdown
<!-- file: deltas/0.2.8/rel.001.md -->
|
||
<!-- version: 1 -->
|
||
|
||
# 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.
|