# 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`.