v0.2.8-pre.001-fix.002

This commit is contained in:
2026-08-23 12:53:13 +02:00
parent df95f2f558
commit 315e7e67e5
3 changed files with 274 additions and 71 deletions

View File

@@ -0,0 +1,174 @@
<!-- file: deltas/0.2.8/pre.001-fix.002.md -->
<!-- version: 1 -->
# Delta `0.2.8-pre.001-fix.002` — forecast KSP compact et namespace LaserStream WebSocket
## 1. Base requise
Ce correctif s'applique exclusivement après :
```text
0.2.8-pre.001-fix.001
workspace.package.version = 0.2.8-pre.1
```
Il reste **documentaire uniquement** : aucun code, Config runtime, schema, manifest ou dépendance n'est modifié.
```text
livraison = 0.2.8-pre.001-fix.002
workspace.package.version = 0.2.8-pre.1 # inchangé
commit attendu = v0.2.8-pre.001-fix.002
aucun tag prerelease
```
## 2. Motifs du fix
Deux corrections de lisibilité/contrat sont nécessaires avant `pre.002`.
### 2.1 Forecast
Le tableau introduit par `pre.001-fix.001` ne correspond pas au format employé par les plans KSP récents :
```text
0.2.5 -> bloc "Prévision souple révisée", fixes regroupés avec la candidate concernée
0.2.7 -> bloc "Forecast recalibré", une ligne compacte par prerelease avec état DONE
```
Le forecast `0.2.8` revient donc à cette forme compacte. Les `fix.*` sont rattachés visuellement à leur `pre.NNN` et peuvent porter leur propre changement d'état sans être présentés comme de nouvelles tranches planifiées.
### 2.2 Nom LaserStream
`Helius LaserStream` désigne chez Helius plusieurs surfaces produit. `0.2.8` ne couvre que **LaserStream WebSocket** ; le futur LaserStream gRPC reste distinct et hors scope.
Le code court suivant est conservé :
```text
WsProtocolKind::HeliusLaserStream
as_str() = "helius_laserstream"
```
mais uniquement parce qu'il est possédé par un namespace explicitement WebSocket :
```text
WsProtocolKind
profiles[].ws_endpoints[].kind
HeliusLaserStreamWsSession
```
Dans tout contexte où cet ownership n'est pas visible, la désignation durable est **Helius LaserStream WebSocket**.
Le futur gRPC devra utiliser son propre backend/type/Config et ne pourra jamais être un alias du contrat WS. Son nom exact n'est pas anticipé dans `0.2.8` et sera choisi pendant son audit normatif.
## 3. Forecast souple corrigé
```text
pre.001 DONE — audit Helius actuel + matrice + architecture + threat model + dependencies + sizing
fix.001 DONE — séparation des façades standard/Helius + moteur unique + gate Cargo fermé
fix.002 DONE — forecast normalisé + namespace LaserStream WebSocket/gRPC clarifié
pre.002 socle protocolaire : WsProtocolKind::HeliusLaserStream + façades standard/Helius
+ connexion physique partagée + guards, sans duplication de l'actor
pre.003 surface Helius standard supportée : account/logs/program/root/signature/slot
+ absence typée de block/slotsUpdates/vote sur Helius + non-régression standard 9/9
pre.004 Config V2 helius_laserstream + schema/fixtures + mapping Config -> Transport
+ stratégie de secret Helius et redaction URL
pre.005 transactionSubscribe request typed + filters/options/tokenAccounts + transactionUnsubscribe
+ bounds 50k + maxSupportedTransactionVersion conditionnel
pre.006 transactionNotification + actor integration + reconnect/resubscribe/unsubscribe races
+ late notifications + backpressure ciblée
pre.007 heartbeat Helius WebSocket/idle + timers + interaction reconnect/control frames/shutdown
pre.008 provider adversarial lifecycle + capability guards + payload/backpressure + security/redaction
pre.009 compliance Helius WebSocket + non-régressions Solana standard 18/18 + HTTP 52/14
+ Config/API/dependency-firewall canaries
pre.010 smoke Helius WebSocket live opt-in si stratégie sûre + README/USAGE
+ cargo tree direct/duplicates final
pre.011 validation workspace finale + fermeture plan/matrice/indexes + prompt 0.2.9
rel.001 publication stable stricte
```
Règles : budget nominal d'environ 1520 minutes par nouvelle prerelease ; fixes insérables sans changer artificiellement le forecast ; split dès qu'une tranche masque plusieurs problèmes indépendants ; `pre.011` n'est pas une deadline.
## 4. Nomenclature durable WebSocket / gRPC
Règle adoptée :
```text
contexte typé/config WS visible : HeliusLaserStream / helius_laserstream autorisé
prose ou metadata ambiguë : "Helius LaserStream WebSocket" obligatoire
future surface gRPC : backend/type/Config distincts ; jamais WsProtocolKind/WsEndpointSettings
```
Conséquences :
- `HeliusLaserStreamWsSession` reste le nom de façade visé en `0.2.8` ;
- `helius_laserstream` reste acceptable comme `kind` sous `ws_endpoints[]` ;
- aucune dépendance, protobuf, SDK ou Config gRPC n'est introduite ;
- le futur audit gRPC choisira son propre discriminateur sans être contraint par le code court WS ;
- la documentation doit toujours qualifier explicitement WebSocket ou gRPC lorsqu'un lecteur pourrait confondre les deux.
## 5. Fichiers ajoutés
```text
deltas/0.2.8/pre.001-fix.002.md
```
## 6. Fichiers modifiés
```text
docs/plans/015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md
docs/validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md
```
## 7. Fichiers volontairement inchangés
```text
Cargo.toml
ROADMAP.md
CHANGELOG.md
.env.example
config/**
crates/**
docs/000-README.md
docs/plans/000-README.md
docs/validation/000-README.md
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
deltas/0.2.8/pre.001.md
deltas/0.2.8/pre.001-fix.001.md
prompts/013-V0_2_8_START_PROMPT.md
```
Les deltas déjà publiés restent immutables.
## 8. Validations
Preuves opérateur déjà acquises et inchangées :
```text
baseline v0.2.7 fmt/audit/check/clippy/test workspace = OK
cargo tree transport = exécuté/inspecté
cargo tree transport --duplicates = exécuté/inspecté
```
Validations du fix documentaire :
```text
comparaison forecast avec plans 0.2.5 / 0.2.7 = effectuée
cohérence plan / validation / delta = contrôlée
audit Rust workspace après overlay = à exécuter si script disponible
```
Aucun gate Cargo supplémentaire n'est créé par ce fix puisque le runtime, le build, la Config et les dépendances restent inchangés.
## 9. Verdict et prochaine tranche
```text
gate pre.001 = positif
Cargo = 0.2.8-pre.1 inchangé
architecture = façades séparées, moteur unique
forecast = compact, fixes groupés, pre.001 -> pre.011
nom WS = HeliusLaserStream / helius_laserstream sous ownership WebSocket
futur gRPC = explicitement distinct, hors 0.2.8
prochaine tranche = 0.2.8-pre.002
```
`pre.002` peut matérialiser le socle protocolaire/façades. Il ne doit pas commencer Config Helius ni `transactionSubscribe`.