v0.2.8-pre.001
This commit is contained in:
268
deltas/0.2.8/pre.001.md
Normal file
268
deltas/0.2.8/pre.001.md
Normal file
@@ -0,0 +1,268 @@
|
||||
<!-- file: deltas/0.2.8/pre.001.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.2.8-pre.001` — audit/sizing Helius LaserStream WebSocket
|
||||
|
||||
## 1. Base requise et vérifiée
|
||||
|
||||
Archive autoritaire fournie :
|
||||
|
||||
```text
|
||||
khadhroony-solana-project-v0.2.7-full-from-gitea.zip
|
||||
```
|
||||
|
||||
État vérifié :
|
||||
|
||||
```text
|
||||
workspace.package.version = 0.2.7
|
||||
deltas/0.2.7/rel.001.md présent
|
||||
prompts/013-V0_2_8_START_PROMPT.md présent
|
||||
metadata .git absente de l'archive
|
||||
```
|
||||
|
||||
Cette livraison ouvre :
|
||||
|
||||
```text
|
||||
workspace.package.version = 0.2.8-pre.1
|
||||
commit attendu = v0.2.8-pre.001
|
||||
aucun tag prerelease
|
||||
```
|
||||
|
||||
## 2. Objet
|
||||
|
||||
`pre.001` est strictement le gate **audit + brainstorming + sizing** de `0.2.8 — Helius LaserStream WebSocket`.
|
||||
|
||||
Il ne modifie :
|
||||
|
||||
```text
|
||||
aucun fichier Rust
|
||||
aucun schema/config runtime
|
||||
aucune dependency
|
||||
aucun README/USAGE Transport
|
||||
aucun secret/environment runtime
|
||||
```
|
||||
|
||||
Il crée le plan durable, ouvre la matrice de validation, synchronise les index et recalcule la prévision souple.
|
||||
|
||||
## 3. Baseline acquise
|
||||
|
||||
Preuve opérateur jointe avant ouverture :
|
||||
|
||||
```text
|
||||
cargo fmt --all OK
|
||||
python3 scripts/audit_rust_workspace_rules.py OK / clean
|
||||
cargo check --workspace OK
|
||||
cargo clippy --workspace --all-targets OK
|
||||
cargo test --workspace OK
|
||||
```
|
||||
|
||||
Le sandbox de préparation a aussi exécuté :
|
||||
|
||||
```text
|
||||
python3 scripts/audit_rust_workspace_rules.py OK
|
||||
```
|
||||
|
||||
mais ne contient pas `cargo`; il ne déclare donc aucun gate Cargo local réussi.
|
||||
|
||||
Les graphes requis n'étaient pas présents dans le log opérateur et restent à exécuter avant commit :
|
||||
|
||||
```bash
|
||||
cargo tree -p ksp-onchain-transport-lib
|
||||
cargo tree -p ksp-onchain-transport-lib --duplicates
|
||||
```
|
||||
|
||||
## 4. Résultat de l'audit Helius du 2026-08-23
|
||||
|
||||
Terminologie/endpoints :
|
||||
|
||||
```text
|
||||
produit courant = LaserStream WebSocket
|
||||
Enhanced WebSockets = ancien nom intégré au produit courant
|
||||
mainnet = wss://mainnet.helius-rpc.com/?api-key=...
|
||||
devnet = wss://devnet.helius-rpc.com/?api-key=...
|
||||
api-key = Secret query credential
|
||||
LaserStream gRPC / Gatekeeper beta = hors scope
|
||||
```
|
||||
|
||||
Surface retenue :
|
||||
|
||||
```text
|
||||
Helius supporte les paires standard :
|
||||
account, logs, program, root, signature, slot
|
||||
|
||||
Helius ne supporte pas d'après l'index exhaustif :
|
||||
block, slotsUpdates, vote
|
||||
|
||||
Helius extension :
|
||||
transactionSubscribe
|
||||
transactionUnsubscribe
|
||||
notification = transactionNotification
|
||||
```
|
||||
|
||||
La documentation Helius diverge sur `slotsUpdates`; l'index exhaustif `LaserStream WebSocket Methods` le classe explicitement parmi les méthodes unstable non supportées, tandis que `websocket/llms.txt` le place aussi dans une section « stable ». Le gate retient **non supporté** et exige un rejet KSP avant I/O pour `HeliusLaserStream`.
|
||||
|
||||
`transactionSubscribe` expose actuellement :
|
||||
|
||||
```text
|
||||
vote
|
||||
failed
|
||||
signature
|
||||
accountInclude <= 50_000
|
||||
accountExclude <= 50_000
|
||||
accountRequired <= 50_000
|
||||
tokenAccounts = none | balanceChanged | all
|
||||
commitment
|
||||
encoding = base58 | base64 | jsonParsed
|
||||
transactionDetails = full | signatures | accounts | none
|
||||
showRewards
|
||||
maxSupportedTransactionVersion
|
||||
```
|
||||
|
||||
`maxSupportedTransactionVersion` est requis par la référence lorsque `transactionDetails` vaut `accounts` ou `full`.
|
||||
|
||||
`notifyOn` est toujours visible dans les références account/program mais est désormais **deprecated et no-op depuis Agave 4.2**. Il ne sera pas ajouté à KSP.
|
||||
|
||||
La documentation continue de parler d'« enhanced/filtered accountSubscribe » sans publier, dans les références courantes auditées, un wire provider supplémentaire assez exact pour une API typed. Cette capacité est reportée explicitement au lieu d'être inventée.
|
||||
|
||||
## 5. Décisions du gate
|
||||
|
||||
```text
|
||||
WsProtocolKind cible = HeliusLaserStream
|
||||
wire/config string = helius_laserstream
|
||||
provider metadata = helius
|
||||
session actor = WsSession existant, aucun second client
|
||||
new subscription kind = HeliusTransaction
|
||||
provider capability = validation déterministe avant I/O
|
||||
Helius standard support = Account Logs Program Root Signature Slot
|
||||
Helius standard reject = Block SlotsUpdates Vote
|
||||
notifyOn = non exposé
|
||||
tokenAccounts = enum provider typed
|
||||
heartbeat = actor Helius-only, cible 60 s
|
||||
Config = ajout kind V2, même ws_endpoints[]
|
||||
credential = URL résolue par Config derrière WsEndpointUrl
|
||||
new dependency = aucune
|
||||
WebSocket historical replay= aucune promesse
|
||||
```
|
||||
|
||||
## 6. Threat model retenu
|
||||
|
||||
Points couverts par le plan :
|
||||
|
||||
```text
|
||||
api-key dans query URL et erreurs handshake
|
||||
heartbeat concurrent avec reconnect/close
|
||||
late messages après transactionUnsubscribe
|
||||
remote ids transitoires
|
||||
provider capability mismatch
|
||||
provider RPC errors sans session death automatique
|
||||
transaction payload volumineux
|
||||
3 listes de filtres jusqu'à 50k chacune
|
||||
queue/frame/message bounds
|
||||
unknown provider fields/modes de notification
|
||||
continuity gaps après reconnect
|
||||
```
|
||||
|
||||
## 7. Forecast recalibré
|
||||
|
||||
Le forecast initial `pre.001 -> pre.011` est resserré car `notifyOn` n'est pas une capacité utile et aucun wire account/program provider additionnel précis n'est actuellement publiable.
|
||||
|
||||
Forecast courant :
|
||||
|
||||
```text
|
||||
pre.001 audit/sizing/matrice
|
||||
pre.002 protocol descriptor + subscription kind + capability/redaction
|
||||
pre.003 Config V2 helius_laserstream + secret strategy
|
||||
pre.004 transactionSubscribe/unsubscribe request/filter/options
|
||||
pre.005 transactionNotification + reconnect/resubscribe/unsubscribe races
|
||||
pre.006 heartbeat/idle lifecycle
|
||||
pre.007 adversarial provider/security/backpressure
|
||||
pre.008 compliance + WS 18/18 + HTTP 52/14 + Config canaries
|
||||
pre.009 live smoke opt-in si sûr + README/USAGE + cargo graphs
|
||||
pre.010 workspace final + docs/matrix + prompt 0.2.9
|
||||
rel.001 stable
|
||||
```
|
||||
|
||||
Chaque tranche vise ~15–20 minutes. Le forecast peut être scindé/étendu si une ambiguïté normative ou une difficulté de lifecycle le justifie. `pre.010` n'est pas une deadline.
|
||||
|
||||
## 8. Fichiers ajoutés
|
||||
|
||||
```text
|
||||
docs/plans/015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md
|
||||
docs/validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md
|
||||
deltas/0.2.8/pre.001.md
|
||||
```
|
||||
|
||||
## 9. Fichiers modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
docs/000-README.md
|
||||
docs/plans/000-README.md
|
||||
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
|
||||
docs/validation/000-README.md
|
||||
```
|
||||
|
||||
## 10. Fichiers volontairement inchangés
|
||||
|
||||
```text
|
||||
ROADMAP.md
|
||||
CHANGELOG.md
|
||||
.env.example
|
||||
config/**
|
||||
crates/**
|
||||
docs/architecture/**
|
||||
crates/ksp-onchain-transport-lib/README.md
|
||||
crates/ksp-onchain-transport-lib/USAGE.md
|
||||
```
|
||||
|
||||
`ROADMAP.md` possède déjà l'entrée globale `0.2.8`. Les documents/runtime Config/Transport ne changent pas avant le gate positif.
|
||||
|
||||
## 11. Validations réellement exécutées dans le sandbox de préparation
|
||||
|
||||
Avant modification :
|
||||
|
||||
```text
|
||||
inspection archive/version/rel/prompt OK
|
||||
lecture règles/architecture/plans/validation/code OK
|
||||
réaudit officiel Helius actuel OK
|
||||
inspection versions publiques dépendances OK
|
||||
python3 scripts/audit_rust_workspace_rules.py OK
|
||||
```
|
||||
|
||||
Après génération de l'overlay, l'audit Python a été réexécuté :
|
||||
|
||||
```text
|
||||
General Rust rule audit: clean
|
||||
Rust export completeness audit: 0 candidate(s)
|
||||
KSP workspace Rust rule audit: clean
|
||||
```
|
||||
|
||||
## 12. Validations impossibles dans le sandbox
|
||||
|
||||
```text
|
||||
cargo fmt --all
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets
|
||||
cargo test --workspace
|
||||
cargo tree -p ksp-onchain-transport-lib
|
||||
cargo tree -p ksp-onchain-transport-lib --duplicates
|
||||
```
|
||||
|
||||
Cause : binaire `cargo` absent.
|
||||
|
||||
## 13. Validation opérateur requise avant commit
|
||||
|
||||
Appliquer l'overlay puis exécuter :
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets
|
||||
cargo tree -p ksp-onchain-transport-lib
|
||||
cargo tree -p ksp-onchain-transport-lib --duplicates
|
||||
```
|
||||
|
||||
`cargo test --workspace` a déjà été fourni vert sur la base `v0.2.7`; `pre.001` ne change aucun code/runtime, mais il peut être rejoué si l'opérateur souhaite un checkpoint complet de la nouvelle version Cargo.
|
||||
|
||||
Le gate `pre.001` ne devient entièrement positif qu'après revue des deux graphes Cargo. Aucun `pre.002` runtime ne doit commencer avant cela.
|
||||
Reference in New Issue
Block a user