175 lines
6.6 KiB
Markdown
175 lines
6.6 KiB
Markdown
<!-- 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 15–20 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`.
|