v0.2.8-pre.007

This commit is contained in:
2026-08-23 16:05:41 +02:00
parent 1c8d69778b
commit 56b9ce6abc
8 changed files with 654 additions and 23 deletions

View File

@@ -3,7 +3,7 @@
# Validation `0.2.8` — Helius LaserStream WebSocket
> **Statut : `pre.005` + ses deux fixes sont validés sans warning. `pre.006` est préparé avec `transactionNotification`, handle live, remap reconnect, late-notification handling et backpressure ciblée sur l'actor WebSocket unique.**
> **Statut : `pre.006` est validé intégralement. `pre.007` est préparé pour le heartbeat Helius LaserStream WebSocket provider-owned : Ping control frame à 60 s uniquement en `Active`, réarmé après reconnect et interrompu par close/shutdown.**
## 1. Références
@@ -137,7 +137,7 @@ Verdict : **gate `0.2.8-pre.001` positif ; `pre.002` + `fix.001` et `pre.003` so
### 4.2 Invariants architecture
| Critère | Décision | Preuve cible | État |
| Critère | Décision | Preuve cible | État |
|-------------------------------------|------------------------------------------------------------------|---------------------------------|--------------------|
| actor physique | un seul `WsSession` actor partagé | source/runtime canary | pre.002 implémenté |
| façade standard | `SolanaStandardWsSession` | public API canary | pre.002 implémenté |
@@ -212,19 +212,19 @@ aucun payload brut dans logs/snapshots
[x] 6 familles standard Helius utilisent le wire standard exact — fixture `pre.003` opérateur verte
[x] transaction subscribe/ack exact — fixture `pre.005` validée puis consommée par le handle live `pre.006`
[x] transaction unsubscribe/result exact — fixture `pre.005` validée puis registry actor `pre.006`
[ ] transaction notification dispatch exact — canari `pre.006` préparé
[x] transaction notification dispatch exact — canari `pre.006` opérateur vert
[ ] notification decode failure isole la logical subscription
[ ] provider RPC application error ne tue pas la session
[ ] late notification après unsubscribe ne réactive rien — canari `pre.006` préparé
[ ] reconnect invalide/remappe remote ids — canari `pre.006` 41 -> 99 préparé
[ ] resubscribe garde local id — canari `pre.006` préparé
[x] late notification après unsubscribe ne réactive rien — canari `pre.006` opérateur vert
[x] reconnect invalide/remappe remote ids — canari `pre.006` 41 -> 99 opérateur vert
[x] resubscribe garde local id — canari `pre.006` opérateur vert
[ ] unsubscribe pendant reconnect gagne
[ ] heartbeat n'écrit qu'en Active
[ ] heartbeat est annulé au close
[ ] heartbeat write failure suit reconnect borné
[ ] shutdown interrompt heartbeat/backoff
[ ] oversized inbound frame reste borné
[ ] queue overflow d'une transaction subscription n'affecte pas les autres — canari transaction + root `pre.006` préparé
[x] queue overflow d'une transaction subscription n'affecte pas les autres — canari transaction + root `pre.006` opérateur vert
[ ] payload/filters/api-key absents de Debug/snapshots sûrs
```
@@ -571,3 +571,61 @@ Gate opérateur `pre.006` :
Comptages attendus si les nouveaux canaris passent : **325 tests unitaires Transport**, **40 public API**, **28 release-completeness**, **4 doctests compile-fail**.
Verdict courant : **`pre.006` PREPARED.**
## 17. Gate `pre.006` fermé et préparation `pre.007`
Checkpoint opérateur `pre.006` :
```text
[x] cargo fmt --all
[x] python3 scripts/audit_rust_workspace_rules.py = clean
[x] cargo check --workspace = sans warning
[x] cargo clippy --workspace --all-targets = sans warning
[x] cargo test -p ksp-onchain-transport-lib = 325 unit + 40 public API + 28 completeness + 4 doctests
[x] cargo test --workspace = vert
```
Preuves lifecycle désormais acquises :
```text
[x] WsSubscriptionKind::HeliusTransaction possède le triplet exact
[x] HeliusLaserStreamWsSession::transaction_subscribe retourne le handle live typed
[x] notification Full / Signature / Unknown décodées
[x] local WsSubscriptionId stable après reconnect
[x] remote id remappé
[x] late notification après unsubscribe ignorée
[x] overflow transaction isole uniquement le handle lent
[x] cleanup overflow utilise transactionUnsubscribe
[x] une souscription Helius root saine reste active
[x] aucun second actor/socket/registry
[x] quatre compile-fail Helius restent verts
```
Gate préparé pour `pre.007` :
```text
[ ] heartbeat activé uniquement pour WsProtocolKind::HeliusLaserStream
[ ] intervalle provider-owned exactement 60 s
[ ] heartbeat utilise WebSocket Ping control frame, pas un JSON-RPC provider method
[ ] aucun heartbeat provider sur SolanaStandard
[ ] heartbeat n'écrit qu'en état Active
[ ] succès réarme le prochain deadline à now + 60 s
[ ] reconnect réussi réarme le deadline depuis la nouvelle connexion
[ ] write timeout/failure suit le chemin Failed -> reconnect existant
[ ] close avant deadline annule le heartbeat
[ ] shutdown reste prioritaire sur le heartbeat
[ ] aucun champ heartbeat public ajouté à WsSessionSettings
[ ] aucune configuration/env supplémentaire
[ ] aucune régression transactionSubscribe/transactionNotification de pre.006
[ ] cargo fmt --all
[ ] python3 scripts/audit_rust_workspace_rules.py = clean
[ ] cargo check --workspace = sans warning
[ ] cargo clippy --workspace --all-targets = sans warning
[ ] cargo test -p ksp-onchain-transport-lib = 331 unit + 40 public API + 29 completeness + 4 doctests attendus
[ ] cargo test --workspace = vert
```
Le `test-util` Tokio ajouté côté dev sert uniquement à avancer l'horloge des canaris déterministes ; la cadence runtime reste 60 s et aucune nouvelle dépendance de production n'est introduite.
Verdict courant : **`pre.006` DONE ; `pre.007` PREPARED.**