v0.2.8-rel.001
This commit is contained in:
@@ -1,10 +1,16 @@
|
|||||||
<!-- file: CHANGELOG.md -->
|
<!-- file: CHANGELOG.md -->
|
||||||
<!-- version: 11 -->
|
<!-- version: 12 -->
|
||||||
|
|
||||||
# Changelog KSP
|
# Changelog KSP
|
||||||
|
|
||||||
Ce changelog résume uniquement les releases KSP considérées comme stables, dans l'ordre chronologique décroissant. Les détails de chaque livraison restent dans `deltas/`.
|
Ce changelog résume uniquement les releases KSP considérées comme stables, dans l'ordre chronologique décroissant. Les détails de chaque livraison restent dans `deltas/`.
|
||||||
|
|
||||||
|
## 0.2.8 — Helius LaserStream WebSocket — 2026-08-23
|
||||||
|
|
||||||
|
`0.2.8` étend `ksp-onchain-transport-lib` avec une façade `HeliusLaserStreamWsSession` dédiée qui réutilise le même `WsSession` physique/actor que le WebSocket Solana standard, sans second client, socket, registry ou scheduler. La surface stable Helius réutilise les sept familles standard actuellement retenues (`account`, `logs`, `program`, `root`, `signature`, `slot`, `slotsUpdates`) et ajoute l’extension typée `transactionSubscribe` / `transactionUnsubscribe`; `block` et `vote` restent absents de la façade Helius et `slotsUpdates` conserve son statut unstable. Le heartbeat provider est possédé par l’actor partagé et émet un WebSocket Ping control frame toutes les 60 secondes uniquement pour `WsProtocolKind::HeliusLaserStream`.
|
||||||
|
|
||||||
|
La release ajoute le mapping Config V2 `helius_laserstream`, les profils Helius mainnet/devnet et le secret `KSP_SECRET_HELIUS_API_KEY` avec provenance/redaction segmentaire, sans dépendance inverse Transport -> Config ni lecture directe de l’environnement par Transport. Les canaris couvrent erreurs RPC provider, payload oversized, mismatch de notification, reconnect/remap/unsubscribe races, backpressure isolé et diagnostics sans payload brut. La compliance finale conserve simultanément **52 méthodes HTTP courantes + 14 historiques**, **9 familles / 18 opérations WebSocket Solana standard**, et la surface Helius `7 standard + transaction`. Le smoke Helius live cross-crates est volontairement reporté vers une future surface d’intégration/orchestration afin de préserver l’ownership Config du secret. Les graphes Cargo finaux n’introduisent aucun SDK Helius/gRPC ni nouvelle duplication bloquante. `prompts/014-V0_2_9_START_PROMPT.md` ouvre ensuite `0.2.9 — Yellowstone gRPC standard/provider-neutral` uniquement depuis le tag stable `v0.2.8`, avec audit service/proto/crates/licences/MSRV/features et sizing strict en `pre.001` avant toute implémentation lourde.
|
||||||
|
|
||||||
## 0.2.7 — WebSocket Solana standard — 2026-08-23
|
## 0.2.7 — WebSocket Solana standard — 2026-08-23
|
||||||
|
|
||||||
`0.2.7` stabilise dans `ksp-onchain-transport-lib` le moteur WebSocket Solana standard en complément de la surface HTTP déjà complète. La release couvre exactement les **9 familles subscribe + 9 unsubscribe** de l’inventaire officiel ciblé : `account`, `block`, `logs`, `program`, `root`, `signature`, `slot`, `slotsUpdates` et `vote`. Les wrappers sont typés, les IDs KSP de session/subscription restent locaux et stables, les IDs serveur restent internes/remappables, et plusieurs sessions physiques peuvent coexister explicitement sur la même URL sans introduire de pool/scheduler automatique. Les familles `block`, `slotsUpdates` et `vote` restent identifiées comme unstable selon l’audit normatif courant et utilisent le warning KSP centralisé.
|
`0.2.7` stabilise dans `ksp-onchain-transport-lib` le moteur WebSocket Solana standard en complément de la surface HTTP déjà complète. La release couvre exactement les **9 familles subscribe + 9 unsubscribe** de l’inventaire officiel ciblé : `account`, `block`, `logs`, `program`, `root`, `signature`, `slot`, `slotsUpdates` et `vote`. Les wrappers sont typés, les IDs KSP de session/subscription restent locaux et stables, les IDs serveur restent internes/remappables, et plusieurs sessions physiques peuvent coexister explicitement sur la même URL sans introduire de pool/scheduler automatique. Les familles `block`, `slotsUpdates` et `vote` restent identifiées comme unstable selon l’audit normatif courant et utilisent le warning KSP centralisé.
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
# file: Cargo.toml
|
# file: Cargo.toml
|
||||||
# version: 235
|
# version: 236
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "3"
|
resolver = "3"
|
||||||
members = ["crates/ksp-app-config-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-wallet-lib"]
|
members = ["crates/ksp-app-config-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-wallet-lib"]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.2.8-pre.11"
|
version = "0.2.8"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
||||||
@@ -24,7 +24,7 @@ fs2 = { version = "^0.4" }
|
|||||||
futures-util = { version = "^0.3", default-features = false }
|
futures-util = { version = "^0.3", default-features = false }
|
||||||
serde = { version = "^1.0" }
|
serde = { version = "^1.0" }
|
||||||
serde_json = { version = "^1.0" }
|
serde_json = { version = "^1.0" }
|
||||||
jsonschema = { version = "^0.50", default-features = false }
|
jsonschema = { version = "^0.51", default-features = false }
|
||||||
reqwest = { version = "^0.13", default-features = false }
|
reqwest = { version = "^0.13", default-features = false }
|
||||||
solana-keypair = { version = "^3.1", default-features = false }
|
solana-keypair = { version = "^3.1", default-features = false }
|
||||||
solana-pubkey = { version = "^4.3", default-features = false }
|
solana-pubkey = { version = "^4.3", default-features = false }
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: ROADMAP.md -->
|
<!-- file: ROADMAP.md -->
|
||||||
<!-- version: 82 -->
|
<!-- version: 83 -->
|
||||||
|
|
||||||
# Roadmap KSP
|
# Roadmap KSP
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ Le roadmap décrit les objectifs à atteindre et les grandes étapes prévues. U
|
|||||||
- [X] `0.2.5` — Wallet foundation stable : `.kspwallet` V1, VIEW/OWNER indépendants, Argon2id/XChaCha20-Poly1305, autorité Ed25519 OWNER, persistence no-clobber, signature, administration/rotations/révocation VIEW forte, import/export Solana CLI JSON + Base58, canaris adversariaux, interop externe et documentation durable publiés. La clôture `pre.010-fix.001`–`fix.003` ajoute `ed25519-dalek 3.0.0` direct, normalise le Rust workspace et installe l’audit structurel Python complémentaire à rustfmt/Clippy. `Pubkey` reste via `ksp-core-lib`, la keypair reste encapsulée dans Wallet et Config/Transport/ExecutionPolicy/Store/Tauri restent hors Wallet.
|
- [X] `0.2.5` — Wallet foundation stable : `.kspwallet` V1, VIEW/OWNER indépendants, Argon2id/XChaCha20-Poly1305, autorité Ed25519 OWNER, persistence no-clobber, signature, administration/rotations/révocation VIEW forte, import/export Solana CLI JSON + Base58, canaris adversariaux, interop externe et documentation durable publiés. La clôture `pre.010-fix.001`–`fix.003` ajoute `ed25519-dalek 3.0.0` direct, normalise le Rust workspace et installe l’audit structurel Python complémentaire à rustfmt/Clippy. `Pubkey` reste via `ksp-core-lib`, la keypair reste encapsulée dans Wallet et Config/Transport/ExecutionPolicy/Store/Tauri restent hors Wallet.
|
||||||
- [X] `0.2.6` — `ksp-app-wallet-desk` + `.kspwallet` V2 stables : composition Config/Wallet/HTTP/Logging, lifecycle VIEW/OWNER, balance, administration/import/export, wire binaire V2, APIs multi-version, migration V1 -> V2 explicite et runtime Tauri packagé user-writable validés ; bundles Linux `.deb`/`.rpm`/`.AppImage` produits avant publication. Plan clôturé : `docs/plans/013-V0_2_6_WALLET_DESK_PLAN.md`.
|
- [X] `0.2.6` — `ksp-app-wallet-desk` + `.kspwallet` V2 stables : composition Config/Wallet/HTTP/Logging, lifecycle VIEW/OWNER, balance, administration/import/export, wire binaire V2, APIs multi-version, migration V1 -> V2 explicite et runtime Tauri packagé user-writable validés ; bundles Linux `.deb`/`.rpm`/`.AppImage` produits avant publication. Plan clôturé : `docs/plans/013-V0_2_6_WALLET_DESK_PLAN.md`.
|
||||||
- [X] `0.2.7` — WebSocket Solana standard stable : 9 familles subscribe/unsubscribe typées (18/18 opérations), sessions physiques multiples explicites, subscriptions logiques typées, lifecycle/reconnect/resubscribe/backpressure/shutdown bornés, Config V2, non-régression HTTP 52+14, compliance finale, smoke WebSocket Devnet et audit de dépendances validés ; publication `rel.001` et prompt `0.2.8` prêts.
|
- [X] `0.2.7` — WebSocket Solana standard stable : 9 familles subscribe/unsubscribe typées (18/18 opérations), sessions physiques multiples explicites, subscriptions logiques typées, lifecycle/reconnect/resubscribe/backpressure/shutdown bornés, Config V2, non-régression HTTP 52+14, compliance finale, smoke WebSocket Devnet et audit de dépendances validés ; publication `rel.001` et prompt `0.2.8` prêts.
|
||||||
- [ ] `0.2.8` — Ajouter Helius LaserStream WebSocket comme extension du moteur WebSocket standard, sans duplication de client.
|
- [X] `0.2.8` — Helius LaserStream WebSocket stable : façade provider dédiée sur l’actor WebSocket partagé, sept familles standard réutilisées (`account/logs/program/root/signature/slot/slotsUpdates`) + `transactionSubscribe`/`transactionUnsubscribe`, `block/vote` absents, heartbeat Ping 60 s Helius-only, Config V2/secrets redacted, lifecycle adversarial, compliance HTTP 52+14 / Standard WS 18/18 et graphes Cargo finaux validés ; prompt `0.2.9` prêt.
|
||||||
- [ ] `0.2.9` — Ajouter une première fondation Yellowstone gRPC standard/provider-neutral ; dimensionner la surface exacte à `pre.001` selon la documentation normative actuelle.
|
- [ ] `0.2.9` — Ajouter une première fondation Yellowstone gRPC standard/provider-neutral ; dimensionner la surface exacte à `pre.001` selon la documentation normative actuelle.
|
||||||
- [ ] `0.2.10` — Introduire `ksp-offchain-transport-lib` avec un premier lecteur de prix, au minimum SOL/USD et SOL/EUR.
|
- [ ] `0.2.10` — Introduire `ksp-offchain-transport-lib` avec un premier lecteur de prix, au minimum SOL/USD et SOL/EUR.
|
||||||
- [ ] `0.2.11` — Introduire une petite application desk de visualisation/validation des prix offchain, puis intégrer cette capacité dans `ksp-app-wallet-desk` sans dupliquer la logique de récupération/normalisation possédée par le composant spécialisé.
|
- [ ] `0.2.11` — Introduire une petite application desk de visualisation/validation des prix offchain, puis intégrer cette capacité dans `ksp-app-wallet-desk` sans dupliquer la logique de récupération/normalisation possédée par le composant spécialisé.
|
||||||
|
|||||||
246
deltas/0.2.8/rel.001.md
Normal file
246
deltas/0.2.8/rel.001.md
Normal file
@@ -0,0 +1,246 @@
|
|||||||
|
<!-- file: deltas/0.2.8/rel.001.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Delta `0.2.8-rel.001` — publication stable Helius LaserStream WebSocket
|
||||||
|
|
||||||
|
## 1. Base requise
|
||||||
|
|
||||||
|
Base directe attendue :
|
||||||
|
|
||||||
|
```text
|
||||||
|
0.2.8-pre.011
|
||||||
|
workspace.package.version = 0.2.8-pre.11
|
||||||
|
```
|
||||||
|
|
||||||
|
Commit attendu pour cette livraison :
|
||||||
|
|
||||||
|
```text
|
||||||
|
v0.2.8-rel.001
|
||||||
|
```
|
||||||
|
|
||||||
|
Tag stable attendu après validation :
|
||||||
|
|
||||||
|
```text
|
||||||
|
v0.2.8
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2. Objectif
|
||||||
|
|
||||||
|
Publier `0.2.8 — Helius LaserStream WebSocket` sans ajouter de capacité fonctionnelle après la candidate.
|
||||||
|
|
||||||
|
`rel.001` :
|
||||||
|
|
||||||
|
- passe `workspace.package.version` de `0.2.8-pre.11` à `0.2.8` ;
|
||||||
|
- clôt `ROADMAP.md`, le plan `015` et la matrice `validation/011` ;
|
||||||
|
- ajoute l’entrée stable `0.2.8` au `CHANGELOG.md` ;
|
||||||
|
- passe `Helius WS` à `Stable` dans l’inventaire composants ;
|
||||||
|
- synchronise les index/documentation de séquence vers le statut publié ;
|
||||||
|
- conserve `prompts/014-V0_2_9_START_PROMPT.md` inchangé comme contrat actif pour `0.2.9`.
|
||||||
|
|
||||||
|
Aucun fichier Rust, aucune API publique, aucun schema/config runtime, aucune dépendance et aucune feature ne changent dans cette livraison.
|
||||||
|
|
||||||
|
## 3. Preuve candidate finale acquise
|
||||||
|
|
||||||
|
Le checkpoint opérateur fourni le **23 août 2026** après application de `0.2.8-pre.011` est intégralement vert :
|
||||||
|
|
||||||
|
```text
|
||||||
|
cargo fmt --all OK
|
||||||
|
python3 scripts/audit_rust_workspace_rules.py OK
|
||||||
|
General Rust rule audit clean
|
||||||
|
Rust export completeness audit 0 candidate(s)
|
||||||
|
KSP workspace Rust rule audit clean
|
||||||
|
cargo check --workspace OK
|
||||||
|
cargo clippy --workspace --all-targets OK
|
||||||
|
cargo test -p ksp-onchain-transport-lib OK
|
||||||
|
unit 335 passed
|
||||||
|
public API 41 passed
|
||||||
|
release completeness 34 passed
|
||||||
|
doctests compile-fail 4 passed
|
||||||
|
cargo test --workspace OK
|
||||||
|
```
|
||||||
|
|
||||||
|
Les suites Config/Core/Logging/Wallet/Desks passent également. Les smokes réseau, benchmarks et probes operator-only restent ignorés par défaut conformément à leur contrat.
|
||||||
|
|
||||||
|
Les trois audits Cargo ont été exécutés en `pre.010` puis conservés valides par `pre.011`, qui ne modifie aucune dépendance :
|
||||||
|
|
||||||
|
```text
|
||||||
|
cargo tree -p ksp-onchain-transport-lib
|
||||||
|
cargo tree -p ksp-onchain-transport-lib --duplicates
|
||||||
|
cargo tree --duplicates
|
||||||
|
```
|
||||||
|
|
||||||
|
Transport ne présente aucune nouvelle dépendance Helius/gRPC/Config ; les doublons ciblés `syn 2/3` et `webpki-roots 0.26/1.0` sont transitifs et non bloquants.
|
||||||
|
|
||||||
|
## 4. Surface stable publiée
|
||||||
|
|
||||||
|
### HTTP hérité
|
||||||
|
|
||||||
|
```text
|
||||||
|
52/52 méthodes HTTP courantes typées
|
||||||
|
14/14 méthodes historiques Deprecated/Removed conservées
|
||||||
|
KSP-TRANSPORT-007 appliqué à la surface typed
|
||||||
|
write submissions : aucun resend après dispatch ambigu
|
||||||
|
```
|
||||||
|
|
||||||
|
### WebSocket Solana standard hérité
|
||||||
|
|
||||||
|
```text
|
||||||
|
9 familles standard
|
||||||
|
18/18 opérations subscribe/unsubscribe
|
||||||
|
stable : account, logs, program, root, signature, slot
|
||||||
|
unstable : block, slotsUpdates, vote
|
||||||
|
```
|
||||||
|
|
||||||
|
### Helius LaserStream WebSocket
|
||||||
|
|
||||||
|
Surface standard réutilisée :
|
||||||
|
|
||||||
|
```text
|
||||||
|
account
|
||||||
|
logs
|
||||||
|
program
|
||||||
|
root
|
||||||
|
signature
|
||||||
|
slot
|
||||||
|
slotsUpdates # unstable
|
||||||
|
```
|
||||||
|
|
||||||
|
Extension Helius typée :
|
||||||
|
|
||||||
|
```text
|
||||||
|
transactionSubscribe
|
||||||
|
transactionUnsubscribe
|
||||||
|
transactionNotification
|
||||||
|
```
|
||||||
|
|
||||||
|
Absents de la façade Helius :
|
||||||
|
|
||||||
|
```text
|
||||||
|
block
|
||||||
|
vote
|
||||||
|
```
|
||||||
|
|
||||||
|
Contrats stabilisés :
|
||||||
|
|
||||||
|
```text
|
||||||
|
HeliusLaserStreamWsSession façade publique dédiée
|
||||||
|
WsSession actor physique unique partagé avec le standard
|
||||||
|
aucun second client/socket/registry/scheduler
|
||||||
|
capability guards avant I/O
|
||||||
|
heartbeat Helius-only = WebSocket Ping control frame / 60 s
|
||||||
|
reconnect/resubscribe/remap/unsubscribe races bornés
|
||||||
|
backpressure isolé par subscription
|
||||||
|
payload oversized borné avant decode métier
|
||||||
|
erreurs RPC provider n’abattent pas la session physique
|
||||||
|
Debug/snapshots Helius sans payload provider brut
|
||||||
|
```
|
||||||
|
|
||||||
|
### Config et secrets
|
||||||
|
|
||||||
|
```text
|
||||||
|
std.transport V2 comprend helius_laserstream
|
||||||
|
profiles Helius mainnet/devnet
|
||||||
|
KSP_SECRET_HELIUS_API_KEY appartient à Config
|
||||||
|
redaction segmentaire des URLs résolues
|
||||||
|
Config -> Transport autorisé
|
||||||
|
Transport -X-> Config / environnement
|
||||||
|
```
|
||||||
|
|
||||||
|
Le smoke Helius live cross-crates est reporté vers une future surface d’intégration/orchestration dédiée afin de ne pas faire de Config une destination générale de smoke et de ne pas faire lire le secret par Transport.
|
||||||
|
|
||||||
|
LaserStream gRPC / Yellowstone reste un backend distinct : aucune promesse gRPC/replay n’est attachée au contrat WebSocket `0.2.8`.
|
||||||
|
|
||||||
|
## 5. Fichiers ajoutés
|
||||||
|
|
||||||
|
```text
|
||||||
|
deltas/0.2.8/rel.001.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6. Fichiers modifiés
|
||||||
|
|
||||||
|
```text
|
||||||
|
Cargo.toml
|
||||||
|
ROADMAP.md
|
||||||
|
CHANGELOG.md
|
||||||
|
docs/000-README.md
|
||||||
|
docs/architecture/004-COMPONENT_INVENTORY.md
|
||||||
|
docs/plans/000-README.md
|
||||||
|
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
|
||||||
|
docs/plans/015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md
|
||||||
|
docs/validation/000-README.md
|
||||||
|
docs/validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md
|
||||||
|
prompts/000-README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
Volontairement inchangé :
|
||||||
|
|
||||||
|
```text
|
||||||
|
prompts/014-V0_2_9_START_PROMPT.md
|
||||||
|
crates/**
|
||||||
|
config/**
|
||||||
|
.env.example
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7. Décisions de clôture
|
||||||
|
|
||||||
|
Aucune nouvelle décision de protocole n’est introduite par `rel.001`. La publication confirme :
|
||||||
|
|
||||||
|
1. Helius LaserStream WebSocket reste une façade provider dédiée sur le moteur/actor WebSocket partagé ;
|
||||||
|
2. la surface publiée est `7 familles standard + transaction`, avec `block/vote` absents ;
|
||||||
|
3. `slotsUpdates` reste exposé comme unstable ;
|
||||||
|
4. le heartbeat Ping 60 s est provider-owned et Helius-only ;
|
||||||
|
5. Config reste l’unique propriétaire du secret Helius et Transport ne lit pas l’environnement ;
|
||||||
|
6. le smoke live cross-crates Helius attend une surface d’intégration/orchestration dédiée ;
|
||||||
|
7. HTTP 52+14 et Standard WS 18/18 restent des non-régressions obligatoires ;
|
||||||
|
8. `0.2.9` ouvre Yellowstone gRPC standard/provider-neutral par audit/sizing avant dépendances ou implémentation lourde.
|
||||||
|
|
||||||
|
## 8. Validation finale après application
|
||||||
|
|
||||||
|
Le passage du signal Cargo à la version stable doit être revalidé avant commit/tag :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo fmt --all
|
||||||
|
python3 scripts/audit_rust_workspace_rules.py
|
||||||
|
cargo check --workspace
|
||||||
|
cargo clippy --workspace --all-targets
|
||||||
|
cargo test -p ksp-onchain-transport-lib
|
||||||
|
cargo test --workspace
|
||||||
|
```
|
||||||
|
|
||||||
|
Les graphes Cargo n’ont pas besoin d’être rejoués si l’overlay appliqué est exactement `0.2.8-rel.001`, car cette livraison ne change aucune dépendance. Les smokes live n’ont pas besoin d’être rejoués non plus : aucune source runtime n’est modifiée.
|
||||||
|
|
||||||
|
Comptages Transport attendus :
|
||||||
|
|
||||||
|
```text
|
||||||
|
unit = 335
|
||||||
|
public API = 41
|
||||||
|
release completeness = 34
|
||||||
|
doctests compile-fail = 4
|
||||||
|
```
|
||||||
|
|
||||||
|
## 9. Commit et tag stable
|
||||||
|
|
||||||
|
Après succès du gate :
|
||||||
|
|
||||||
|
```text
|
||||||
|
commit : v0.2.8-rel.001
|
||||||
|
tag : v0.2.8
|
||||||
|
```
|
||||||
|
|
||||||
|
Aucun tag intermédiaire de prerelease/fix/rel n’est requis.
|
||||||
|
|
||||||
|
## 10. Suite
|
||||||
|
|
||||||
|
Après création du tag stable `v0.2.8`, ouvrir :
|
||||||
|
|
||||||
|
```text
|
||||||
|
0.2.9-pre.001
|
||||||
|
```
|
||||||
|
|
||||||
|
avec :
|
||||||
|
|
||||||
|
```text
|
||||||
|
prompts/014-V0_2_9_START_PROMPT.md
|
||||||
|
```
|
||||||
|
|
||||||
|
La première tranche est un gate strict de relecture, audit Yellowstone courant, architecture, threat model, dépendances/licences/MSRV/features et sizing. La prévision `pre.001 -> pre.013` du prompt est explicitement souple et doit être recalibrée avant toute implémentation gRPC lourde.
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/architecture/004-COMPONENT_INVENTORY.md -->
|
<!-- file: docs/architecture/004-COMPONENT_INVENTORY.md -->
|
||||||
<!-- version: 20 -->
|
<!-- version: 21 -->
|
||||||
|
|
||||||
# Inventaire initial des composants KSP
|
# Inventaire initial des composants KSP
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ Ce document maintient l'inventaire synthétique des composants retenus ou presse
|
|||||||
| Wallet Desk | `ksp-app-wallet-desk` | app | Stable | `0.2.6` | Wallet + Config composite + HTTP/balance |
|
| Wallet Desk | `ksp-app-wallet-desk` | app | Stable | `0.2.6` | Wallet + Config composite + HTTP/balance |
|
||||||
| Wallet V2 | `ksp-wallet-lib` | lib | Stable | `0.2.6` | wire/runtime V2 + API default/versionnée + migration explicite |
|
| Wallet V2 | `ksp-wallet-lib` | lib | Stable | `0.2.6` | wire/runtime V2 + API default/versionnée + migration explicite |
|
||||||
| Standard WS | `ksp-onchain-transport-lib` | lib | Stable | `0.2.7` | WebSocket Solana 18/18, sessions/subscriptions bornées |
|
| Standard WS | `ksp-onchain-transport-lib` | lib | Stable | `0.2.7` | WebSocket Solana 18/18, sessions/subscriptions bornées |
|
||||||
| Helius WS | `ksp-onchain-transport-lib` | lib | Retenu | `0.2.8` | LaserStream WebSocket comme extension du moteur standard |
|
| Helius WS | `ksp-onchain-transport-lib` | lib | Stable | `0.2.8` | LaserStream WS : 7 standard + transaction, actor partagé |
|
||||||
| Yellowstone | `ksp-onchain-transport-lib` | lib | Pressenti | `0.2.9` | client gRPC standard/provider-neutral |
|
| Yellowstone | `ksp-onchain-transport-lib` | lib | Pressenti | `0.2.9` | client gRPC standard/provider-neutral |
|
||||||
| Off-chain price | `ksp-offchain-transport-lib` | lib | Retenu | `0.2.10` | première abstraction/provider de prix SOL/USD, SOL/EUR |
|
| Off-chain price | `ksp-offchain-transport-lib` | lib | Retenu | `0.2.10` | première abstraction/provider de prix SOL/USD, SOL/EUR |
|
||||||
| Price Desk | nom à fixer | app | Retenu | `0.2.11` | visualisation/validation des prix + intégration Wallet Desk |
|
| Price Desk | nom à fixer | app | Retenu | `0.2.11` | visualisation/validation des prix + intégration Wallet Desk |
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/plans/000-README.md -->
|
<!-- file: docs/plans/000-README.md -->
|
||||||
<!-- version: 58 -->
|
<!-- version: 59 -->
|
||||||
|
|
||||||
# Plans KSP
|
# Plans KSP
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ Un plan décrit le périmètre, les décisions déjà acquises, les questions ou
|
|||||||
- [`012-V0_2_5_WALLET_FOUNDATION_PLAN.md`](012-V0_2_5_WALLET_FOUNDATION_PLAN.md) — plan historique clôturé de la release stable `0.2.5 — Wallet foundation`, ouvert par `pre.001`, livré jusqu’à `pre.010`, renforcé par `pre.010-fix.001`–`fix.003` pour Dalek 3 et la normalisation Rust/audit structurel, puis publié par `rel.001`; il couvre `.kspwallet` V1, VIEW/OWNER, crypto, persistence, administration, transfer et compliance.
|
- [`012-V0_2_5_WALLET_FOUNDATION_PLAN.md`](012-V0_2_5_WALLET_FOUNDATION_PLAN.md) — plan historique clôturé de la release stable `0.2.5 — Wallet foundation`, ouvert par `pre.001`, livré jusqu’à `pre.010`, renforcé par `pre.010-fix.001`–`fix.003` pour Dalek 3 et la normalisation Rust/audit structurel, puis publié par `rel.001`; il couvre `.kspwallet` V1, VIEW/OWNER, crypto, persistence, administration, transfer et compliance.
|
||||||
- [`013-V0_2_6_WALLET_DESK_PLAN.md`](013-V0_2_6_WALLET_DESK_PLAN.md) — plan historique clôturé de la release stable `0.2.6 — Wallet Desk`, ouvert par `pre.001`, étendu en `pre.015`–`pre.017` au wire binaire `.kspwallet` V2, aux APIs multi-version et à la migration V1 -> V2, puis fermé par `pre.018`/`fix.001` avec le runtime Tauri packagé et le build final vert avant publication `rel.001`.
|
- [`013-V0_2_6_WALLET_DESK_PLAN.md`](013-V0_2_6_WALLET_DESK_PLAN.md) — plan historique clôturé de la release stable `0.2.6 — Wallet Desk`, ouvert par `pre.001`, étendu en `pre.015`–`pre.017` au wire binaire `.kspwallet` V2, aux APIs multi-version et à la migration V1 -> V2, puis fermé par `pre.018`/`fix.001` avec le runtime Tauri packagé et le build final vert avant publication `rel.001`.
|
||||||
- [`014-V0_2_7_ONCHAIN_WEBSOCKET_PLAN.md`](014-V0_2_7_ONCHAIN_WEBSOCKET_PLAN.md) — plan historique clôturé de la release stable `0.2.7 — WebSocket Solana standard`, ouvert par `pre.001`, exécuté jusqu’à `pre.014`, corrigé documentairement par `pre.014-fix.001` puis publié par `rel.001`; il conserve l’inventaire officiel 18 méthodes, le modèle session/subscription, le threat model, les preuves de compliance/smoke/dépendances et la préparation de `0.2.8`.
|
- [`014-V0_2_7_ONCHAIN_WEBSOCKET_PLAN.md`](014-V0_2_7_ONCHAIN_WEBSOCKET_PLAN.md) — plan historique clôturé de la release stable `0.2.7 — WebSocket Solana standard`, ouvert par `pre.001`, exécuté jusqu’à `pre.014`, corrigé documentairement par `pre.014-fix.001` puis publié par `rel.001`; il conserve l’inventaire officiel 18 méthodes, le modèle session/subscription, le threat model, les preuves de compliance/smoke/dépendances et la préparation de `0.2.8`.
|
||||||
- [`015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md`](015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md) — plan candidat de `0.2.8 — Helius LaserStream WebSocket`, ouvert par `pre.001` et fermé techniquement/documentairement jusqu’à `pre.011`; il conserve la surface finale Helius `7 standard + transaction`, heartbeat/Config/secrets, l’historique des fixes heartbeat, la stratégie live architecture-safe, les graphes Cargo finaux et la préparation du prompt `0.2.9`.
|
- [`015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md`](015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md) — plan historique clôturé de la release stable `0.2.8 — Helius LaserStream WebSocket`, ouvert par `pre.001`, fermé techniquement/documentairement par `pre.011` puis publié par `rel.001`; il conserve la surface finale Helius `7 standard + transaction`, heartbeat/Config/secrets, l’historique des fixes heartbeat, la stratégie live architecture-safe, les graphes Cargo finaux et la préparation du prompt `0.2.9`.
|
||||||
|
|
||||||
Le `pre.001` de chaque release fonctionnelle peut introduire son propre plan détaillé lorsque la release s'ouvre.
|
Le `pre.001` de chaque release fonctionnelle peut introduire son propre plan détaillé lorsque la release s'ouvre.
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md -->
|
<!-- file: docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md -->
|
||||||
<!-- version: 84 -->
|
<!-- version: 85 -->
|
||||||
|
|
||||||
# Séquence des releases fonctionnelles KSP
|
# Séquence des releases fonctionnelles KSP
|
||||||
|
|
||||||
@@ -465,11 +465,11 @@ La candidate atteint `pre.014` après matérialisation des 9 familles standard,
|
|||||||
|
|
||||||
### `0.2.8` — Helius LaserStream WebSocket
|
### `0.2.8` — Helius LaserStream WebSocket
|
||||||
|
|
||||||
Mission candidate : étendre le moteur WebSocket standard avec la surface Helius LaserStream WebSocket actuelle sans copier le client/session actor. Le gate et l'historique complet sont conservés dans [`015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md`](015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md) et la matrice candidate dans [`../validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md`](../validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md).
|
Mission accomplie : étendre le moteur WebSocket standard avec la surface Helius LaserStream WebSocket actuelle sans copier le client/session actor. Le gate et l'historique complet sont conservés dans [`015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md`](015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md) et la matrice finale dans [`../validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md`](../validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md).
|
||||||
|
|
||||||
Le réaudit final Helius du 23 août 2026 retient `helius_laserstream` comme protocol kind WebSocket : les sept familles standard `account/logs/program/root/signature/slot/slotsUpdates` réutilisent les wrappers publiés, `block/vote` restent absents et `transactionSubscribe`/`transactionUnsubscribe` constitue l'extension provider-specific. `slotsUpdates` conserve son statut unstable, `notifyOn` deprecated/no-op n'est pas exposé et le heartbeat Helius-only envoie un WebSocket Ping control frame toutes les 60 secondes depuis l'actor partagé.
|
Le réaudit final Helius du 23 août 2026 retient `helius_laserstream` comme protocol kind WebSocket : les sept familles standard `account/logs/program/root/signature/slot/slotsUpdates` réutilisent les wrappers publiés, `block/vote` restent absents et `transactionSubscribe`/`transactionUnsubscribe` constitue l'extension provider-specific. `slotsUpdates` conserve son statut unstable, `notifyOn` deprecated/no-op n'est pas exposé et le heartbeat Helius-only envoie un WebSocket Ping control frame toutes les 60 secondes depuis l'actor partagé.
|
||||||
|
|
||||||
`pre.010` ferme README/USAGE, la stratégie smoke live architecture-safe et les graphes Cargo finaux ; `pre.011` prépare la candidate documentaire et [`../../prompts/014-V0_2_9_START_PROMPT.md`](../../prompts/014-V0_2_9_START_PROMPT.md). Aucun SDK Helius, aucune dépendance gRPC et aucun replay historique WebSocket ne sont introduits. La publication stable reste réservée à `rel.001`.
|
`pre.010` ferme README/USAGE, la stratégie smoke live architecture-safe et les graphes Cargo finaux ; `pre.011` ferme la candidate documentaire et prépare [`../../prompts/014-V0_2_9_START_PROMPT.md`](../../prompts/014-V0_2_9_START_PROMPT.md). `0.2.8-rel.001` publie ensuite cette surface stable sans nouvelle capacité runtime. Aucun SDK Helius, aucune dépendance gRPC et aucun replay historique WebSocket ne sont introduits.
|
||||||
|
|
||||||
### `0.2.9` — Yellowstone gRPC standard
|
### `0.2.9` — Yellowstone gRPC standard
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<!-- file: docs/plans/015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md -->
|
<!-- file: docs/plans/015-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET_PLAN.md -->
|
||||||
<!-- version: 25 -->
|
<!-- version: 26 -->
|
||||||
|
|
||||||
# Plan `0.2.8` — Helius LaserStream WebSocket
|
# Plan `0.2.8` — Helius LaserStream WebSocket
|
||||||
|
|
||||||
> **Statut : `0.2.8-pre.010` est validé intégralement par l’opérateur : fmt/audit/check/Clippy, 335 unit Transport, 41 API, 34 completeness, 4 doctests, workspace complet et trois audits `cargo tree` exécutés. `0.2.8-pre.011` prépare la candidate documentaire finale, ferme plan/matrice/indexes et crée le prompt autonome `0.2.9`.**
|
> **Statut : release stable `0.2.8 — Helius LaserStream WebSocket` publiée par `rel.001` après candidate `pre.011` entièrement verte : fmt/audit/check/Clippy, 335 unit Transport, 41 API, 34 completeness, 4 doctests et workspace complet. Les trois audits `cargo tree` finaux restent ceux de `pre.010`. Le prompt autonome `0.2.9` est prêt.**
|
||||||
|
|
||||||
## 1. Objet, base et état courant
|
## 1. Objet, base et état courant
|
||||||
|
|
||||||
@@ -42,14 +42,15 @@ pre.007-fix.004 alignement canari dependency-firewall Tokio dev validé
|
|||||||
pre.008 adversarial provider/capabilities/payload/security validé
|
pre.008 adversarial provider/capabilities/payload/security validé
|
||||||
pre.009 compliance provider/current + slotsUpdates Helius validé
|
pre.009 compliance provider/current + slotsUpdates Helius validé
|
||||||
pre.010 documentation/smoke policy/cargo tree final validé
|
pre.010 documentation/smoke policy/cargo tree final validé
|
||||||
pre.011 clôture candidate plan/matrice/indexes + prompt 0.2.9 — préparé
|
pre.011 clôture candidate plan/matrice/indexes + prompt 0.2.9 — validé
|
||||||
|
rel.001 publication stable
|
||||||
|
|
||||||
workspace.package.version courant = 0.2.8-pre.11
|
workspace.package.version courant = 0.2.8
|
||||||
commit attendu = v0.2.8-pre.011
|
commit attendu = v0.2.8-rel.001
|
||||||
aucun tag prerelease
|
tag stable attendu = v0.2.8
|
||||||
```
|
```
|
||||||
|
|
||||||
Le checkpoint opérateur de `pre.010` est intégralement vert, y compris les trois audits `cargo tree`. La candidate `pre.011` ne rouvre aucune capacité runtime : elle synchronise uniquement la documentation de clôture et le contrat de démarrage `0.2.9`.
|
Le checkpoint opérateur de `pre.011` est intégralement vert. Cette candidate n’a rouvert aucune capacité runtime : elle a synchronisé uniquement la documentation de clôture et le contrat de démarrage `0.2.9`. `rel.001` publie le même état fonctionnel avec le signal Cargo stable.
|
||||||
|
|
||||||
## 2. Forecast souple courant
|
## 2. Forecast souple courant
|
||||||
|
|
||||||
@@ -85,7 +86,7 @@ pre.009 DONE — compliance Helius WebSocket + réconciliation documentaire `sl
|
|||||||
+ non-régressions Solana standard 18/18 + HTTP 52/14 + Config/API/dependency-firewall canaries
|
+ non-régressions Solana standard 18/18 + HTTP 52/14 + Config/API/dependency-firewall canaries
|
||||||
pre.010 DONE — stratégie smoke Helius live fermée sans nouveau cross-crate owner + README/USAGE
|
pre.010 DONE — stratégie smoke Helius live fermée sans nouveau cross-crate owner + README/USAGE
|
||||||
+ cargo tree direct/duplicates final exécutés et inspectés
|
+ cargo tree direct/duplicates final exécutés et inspectés
|
||||||
pre.011 PREPARED — validation workspace finale + fermeture plan/matrice/indexes + prompt 0.2.9 autonome
|
pre.011 DONE — validation workspace finale + fermeture plan/matrice/indexes + prompt 0.2.9 autonome
|
||||||
rel.001 publication stable stricte
|
rel.001 publication stable stricte
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -1596,24 +1597,64 @@ Le réaudit préparatoire Yellowstone du 23 août 2026 confirme que l'upstream
|
|||||||
Critères `pre.011` :
|
Critères `pre.011` :
|
||||||
|
|
||||||
```text
|
```text
|
||||||
[ ] workspace.package.version = 0.2.8-pre.11
|
[x] workspace.package.version = 0.2.8-pre.11
|
||||||
[ ] aucun code runtime Helius modifié
|
[x] aucun code runtime Helius modifié
|
||||||
[ ] aucune nouvelle dépendance
|
[x] aucune nouvelle dépendance
|
||||||
[ ] prompt 0.2.9 autonome présent
|
[x] prompt 0.2.9 autonome présent
|
||||||
[ ] prompt suit les 16 rubriques normatives de PROMPT_STRUCTURE
|
[x] prompt suit les 16 rubriques normatives de PROMPT_STRUCTURE
|
||||||
[ ] forecast 0.2.9 visible, détaillé et explicitement souple
|
[x] forecast 0.2.9 visible, détaillé et explicitement souple
|
||||||
[ ] prompt impose audit licence/dependencies avant Yellowstone/Tonic/Prost
|
[x] prompt impose audit licence/dependencies avant Yellowstone/Tonic/Prost
|
||||||
[ ] prompt distingue Yellowstone standard des providers et de deshred/pré-exécution
|
[x] prompt distingue Yellowstone standard des providers et de deshred/pré-exécution
|
||||||
[ ] docs/000, plans/000, validation/000, prompts/000 et séquence fonctionnelle synchronisés
|
[x] docs/000, plans/000, validation/000, prompts/000 et séquence fonctionnelle synchronisés
|
||||||
[ ] ROADMAP non marqué stable avant rel.001
|
[x] ROADMAP non marqué stable avant rel.001
|
||||||
[ ] CHANGELOG non utilisé comme journal de prerelease
|
[x] CHANGELOG non utilisé comme journal de prerelease
|
||||||
[ ] cargo fmt --all
|
[x] cargo fmt --all
|
||||||
[ ] audit Rust workspace clean
|
[x] audit Rust workspace clean
|
||||||
[ ] cargo check --workspace sans warning
|
[x] cargo check --workspace sans warning
|
||||||
[ ] cargo clippy --workspace --all-targets sans warning
|
[x] cargo clippy --workspace --all-targets sans warning
|
||||||
[ ] cargo test -p ksp-onchain-transport-lib
|
[x] cargo test -p ksp-onchain-transport-lib
|
||||||
[ ] cargo test --workspace
|
[x] cargo test --workspace
|
||||||
```
|
```
|
||||||
|
|
||||||
Si ce gate est vert, la prochaine livraison est `0.2.8-rel.001`; aucune `pre.012` n'est nécessaire sauf défaut réel.
|
Si ce gate est vert, la prochaine livraison est `0.2.8-rel.001`; aucune `pre.012` n'est nécessaire sauf défaut réel.
|
||||||
|
|
||||||
|
## 24. Candidate `pre.011` validée et publication stable `rel.001`
|
||||||
|
|
||||||
|
Le checkpoint opérateur du 23 août 2026 ferme la candidate :
|
||||||
|
|
||||||
|
```text
|
||||||
|
[x] cargo fmt --all
|
||||||
|
[x] python3 scripts/audit_rust_workspace_rules.py
|
||||||
|
General Rust rule audit: clean
|
||||||
|
Rust export completeness audit: 0 candidate(s)
|
||||||
|
KSP workspace Rust rule audit: clean
|
||||||
|
[x] cargo check --workspace
|
||||||
|
[x] cargo clippy --workspace --all-targets
|
||||||
|
[x] Transport unit = 335/335
|
||||||
|
[x] Transport public API = 41/41
|
||||||
|
[x] release completeness = 34/34
|
||||||
|
[x] Transport doctests = 4/4
|
||||||
|
[x] cargo test --workspace
|
||||||
|
```
|
||||||
|
|
||||||
|
Les `cargo tree` finaux ont déjà été exécutés et enregistrés en `pre.010`; `pre.011` n’a modifié aucune dépendance. Aucun fichier sous `crates/` n’a été modifié par la candidate documentaire.
|
||||||
|
|
||||||
|
Verdict : **`pre.011` DONE ; aucune `pre.012` nécessaire.**
|
||||||
|
|
||||||
|
`0.2.8-rel.001` publie ensuite la surface candidate sans nouvelle capacité runtime :
|
||||||
|
|
||||||
|
```text
|
||||||
|
workspace.package.version = 0.2.8
|
||||||
|
Helius WS = Stable
|
||||||
|
HTTP = 52 current + 14 historical
|
||||||
|
Solana Standard WS = 9 familles / 18 opérations
|
||||||
|
Helius = 7 familles standard + transaction
|
||||||
|
block/vote Helius = absents
|
||||||
|
heartbeat = Ping control frame / 60 s / Helius only
|
||||||
|
Config = V2 helius_laserstream + secret redacted
|
||||||
|
smoke live provider = reporté vers intégration/orchestration
|
||||||
|
prochain prompt = prompts/014-V0_2_9_START_PROMPT.md
|
||||||
|
```
|
||||||
|
|
||||||
|
La publication stable ne change ni source Rust, ni Config runtime, ni dépendance. `ROADMAP.md`, `CHANGELOG.md`, les index et l’inventaire composants sont synchronisés uniquement au niveau stable.
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/validation/000-README.md -->
|
<!-- file: docs/validation/000-README.md -->
|
||||||
<!-- version: 22 -->
|
<!-- version: 23 -->
|
||||||
|
|
||||||
# Validations KSP
|
# Validations KSP
|
||||||
|
|
||||||
@@ -19,4 +19,4 @@ Documents :
|
|||||||
- [`008-V0_2_5_WALLET_SECURITY_COMPLIANCE.md`](008-V0_2_5_WALLET_SECURITY_COMPLIANCE.md) — matrice finale validée de la release stable `0.2.5`, threat model V1, canaris adversariaux, reproduction externe des vecteurs, audit de frontières, normalisation Rust/audit structurel, graphes Cargo et checkpoint final `pre.010-fix.003` vert.
|
- [`008-V0_2_5_WALLET_SECURITY_COMPLIANCE.md`](008-V0_2_5_WALLET_SECURITY_COMPLIANCE.md) — matrice finale validée de la release stable `0.2.5`, threat model V1, canaris adversariaux, reproduction externe des vecteurs, audit de frontières, normalisation Rust/audit structurel, graphes Cargo et checkpoint final `pre.010-fix.003` vert.
|
||||||
- [`009-V0_2_6_WALLET_DESK_COMPLIANCE.md`](009-V0_2_6_WALLET_DESK_COMPLIANCE.md) — matrice finale validée de la release stable `0.2.6`, couvrant Wallet Desk, les wires V1/V2, la migration explicite, le runtime Tauri packagé, les frontières sécurité/ownership et le gate opérateur `pre.018-fix.001` avec build final Linux vert.
|
- [`009-V0_2_6_WALLET_DESK_COMPLIANCE.md`](009-V0_2_6_WALLET_DESK_COMPLIANCE.md) — matrice finale validée de la release stable `0.2.6`, couvrant Wallet Desk, les wires V1/V2, la migration explicite, le runtime Tauri packagé, les frontières sécurité/ownership et le gate opérateur `pre.018-fix.001` avec build final Linux vert.
|
||||||
- [`010-V0_2_7_ONCHAIN_WEBSOCKET.md`](010-V0_2_7_ONCHAIN_WEBSOCKET.md) — matrice finale validée de la release stable `0.2.7`, ouverte par `pre.001`, fermée techniquement par `pre.014` puis publiée par `rel.001` : inventaire 9 subscribe + 9 unsubscribe, lifecycle borné, statuts unstable, compliance 18/18, non-régression HTTP 52+14, composition Config V2, smoke WebSocket Devnet et audit de dépendances.
|
- [`010-V0_2_7_ONCHAIN_WEBSOCKET.md`](010-V0_2_7_ONCHAIN_WEBSOCKET.md) — matrice finale validée de la release stable `0.2.7`, ouverte par `pre.001`, fermée techniquement par `pre.014` puis publiée par `rel.001` : inventaire 9 subscribe + 9 unsubscribe, lifecycle borné, statuts unstable, compliance 18/18, non-régression HTTP 52+14, composition Config V2, smoke WebSocket Devnet et audit de dépendances.
|
||||||
- [`011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md`](011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md) — matrice candidate finale de `0.2.8`, ouverte par `pre.001` et consolidée jusqu’à `pre.011` : Helius `account/logs/program/root/signature/slot/slotsUpdates + transaction`, `block/vote` absents, heartbeat provider, sécurité/redaction, lifecycle adversarial, non-régressions HTTP/WS, stratégie smoke live et graphes Cargo finaux.
|
- [`011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md`](011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md) — matrice finale validée de la release stable `0.2.8`, ouverte par `pre.001`, consolidée jusqu’à `pre.011` puis publiée par `rel.001` : Helius `account/logs/program/root/signature/slot/slotsUpdates + transaction`, `block/vote` absents, heartbeat provider, sécurité/redaction, lifecycle adversarial, non-régressions HTTP/WS, stratégie smoke live et graphes Cargo finaux.
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<!-- file: docs/validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md -->
|
<!-- file: docs/validation/011-V0_2_8_HELIUS_LASERSTREAM_WEBSOCKET.md -->
|
||||||
<!-- version: 24 -->
|
<!-- version: 25 -->
|
||||||
|
|
||||||
# Validation `0.2.8` — Helius LaserStream WebSocket
|
# Validation `0.2.8` — Helius LaserStream WebSocket
|
||||||
|
|
||||||
> **Statut : `pre.010` est entièrement vert : 335/335 unit Transport, 41/41 API, 34/34 completeness, 4/4 doctests, workspace complet et audits Cargo tree exécutés. `pre.011` est la candidate documentaire finale : matrice/indexes fermés et prompt `0.2.9` autonome préparé avant `rel.001`.**
|
> **Statut : matrice finale validée de la release stable `0.2.8`. `pre.011` est entièrement vert : 335/335 unit Transport, 41/41 API, 34/34 completeness, 4/4 doctests et workspace complet. Les audits Cargo tree finaux de `pre.010` restent valides ; `rel.001` ne change aucun runtime ni dépendance.**
|
||||||
|
|
||||||
## 1. Références
|
## 1. Références
|
||||||
|
|
||||||
@@ -33,6 +33,7 @@ pre.008 adversarial/compliance guard deltas/0.2.8/pre.008.md
|
|||||||
pre.009 compliance provider/current deltas/0.2.8/pre.009.md
|
pre.009 compliance provider/current deltas/0.2.8/pre.009.md
|
||||||
pre.010 docs/smoke/tree final deltas/0.2.8/pre.010.md
|
pre.010 docs/smoke/tree final deltas/0.2.8/pre.010.md
|
||||||
pre.011 candidate/prompt deltas/0.2.8/pre.011.md
|
pre.011 candidate/prompt deltas/0.2.8/pre.011.md
|
||||||
|
rel.001 publication stable deltas/0.2.8/rel.001.md
|
||||||
validation standard WS docs/validation/010-V0_2_7_ONCHAIN_WEBSOCKET.md
|
validation standard WS docs/validation/010-V0_2_7_ONCHAIN_WEBSOCKET.md
|
||||||
HTTP compliance docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md
|
HTTP compliance docs/validation/007-V0_2_4_HTTP_FINAL_COMPLIANCE.md
|
||||||
KSP-TRANSPORT-007 docs/validation/005-V0_2_3_KSP_TRANSPORT_007_RETRO_AUDIT.md
|
KSP-TRANSPORT-007 docs/validation/005-V0_2_3_KSP_TRANSPORT_007_RETRO_AUDIT.md
|
||||||
@@ -1092,20 +1093,20 @@ Verdict : **`pre.010` DONE.**
|
|||||||
La clôture candidate doit prouver :
|
La clôture candidate doit prouver :
|
||||||
|
|
||||||
```text
|
```text
|
||||||
[ ] version Cargo pre.11
|
[x] version Cargo pre.11
|
||||||
[ ] zéro changement runtime provider
|
[x] zéro changement runtime provider
|
||||||
[ ] matrice Helius finale cohérente : 7 standard + transaction ; block/vote absents
|
[x] matrice Helius finale cohérente : 7 standard + transaction ; block/vote absents
|
||||||
[ ] Standard WS 18/18 et HTTP 52+14 conservés
|
[x] Standard WS 18/18 et HTTP 52+14 conservés
|
||||||
[ ] stratégie smoke live différée vers intégration/orchestration conservée
|
[x] stratégie smoke live différée vers intégration/orchestration conservée
|
||||||
[ ] dependency graph final enregistré comme non bloquant
|
[x] dependency graph final enregistré comme non bloquant
|
||||||
[ ] prompts/014-V0_2_9_START_PROMPT.md présent
|
[x] prompts/014-V0_2_9_START_PROMPT.md présent
|
||||||
[ ] prompt 0.2.9 conforme PROMPT_STRUCTURE et autonome
|
[x] prompt 0.2.9 conforme PROMPT_STRUCTURE et autonome
|
||||||
[ ] prompt 0.2.9 contient un forecast souple détaillé
|
[x] prompt 0.2.9 contient un forecast souple détaillé
|
||||||
[ ] prompt 0.2.9 impose le gate audit/sizing avant client gRPC lourd
|
[x] prompt 0.2.9 impose le gate audit/sizing avant client gRPC lourd
|
||||||
[ ] prompt 0.2.9 impose audit licence/MSRV/features/transitifs
|
[x] prompt 0.2.9 impose audit licence/MSRV/features/transitifs
|
||||||
[ ] prompt distingue standard Yellowstone, provider adapters et deshred/pré-exécution
|
[x] prompt distingue standard Yellowstone, provider adapters et deshred/pré-exécution
|
||||||
[ ] index docs/plans/validation/prompts synchronisés
|
[x] index docs/plans/validation/prompts synchronisés
|
||||||
[ ] workspace complet vert
|
[x] workspace complet vert
|
||||||
```
|
```
|
||||||
|
|
||||||
État fonctionnel candidat `0.2.8` :
|
État fonctionnel candidat `0.2.8` :
|
||||||
@@ -1124,3 +1125,36 @@ smoke provider live reporté vers future intégration/orchestration
|
|||||||
|
|
||||||
Le prompt suivant vise `0.2.9 — Yellowstone gRPC standard/provider-neutral`. La release stable n'est pas encore publiée à `pre.011`; `ROADMAP.md` et `CHANGELOG.md` restent donc à finaliser dans `rel.001`.
|
Le prompt suivant vise `0.2.9 — Yellowstone gRPC standard/provider-neutral`. La release stable n'est pas encore publiée à `pre.011`; `ROADMAP.md` et `CHANGELOG.md` restent donc à finaliser dans `rel.001`.
|
||||||
|
|
||||||
|
## 26. Validation finale candidate et publication stable
|
||||||
|
|
||||||
|
Checkpoint opérateur `0.2.8-pre.11` :
|
||||||
|
|
||||||
|
```text
|
||||||
|
[x] cargo fmt --all
|
||||||
|
[x] audit Rust workspace = clean / 0 candidate
|
||||||
|
[x] cargo check --workspace = vert, sans warning
|
||||||
|
[x] cargo clippy --workspace --all-targets = vert, sans warning
|
||||||
|
[x] Transport unit = 335/335
|
||||||
|
[x] Transport public API = 41/41
|
||||||
|
[x] release completeness = 34/34
|
||||||
|
[x] Transport doctests = 4/4
|
||||||
|
[x] cargo test --workspace = vert
|
||||||
|
```
|
||||||
|
|
||||||
|
Les graphes Cargo de `pre.010` restent autoritaires pour la candidate, car `pre.011` n’a changé ni manifest de dépendances ni source runtime : Transport conserve seulement les duplications transitives ciblées `syn 2/3` et `webpki-roots 0.26/1.0`, sans SDK Helius/gRPC ni dépendance inverse Config.
|
||||||
|
|
||||||
|
Verdict final avant publication : **candidate `0.2.8` conforme**.
|
||||||
|
|
||||||
|
`rel.001` ne change que le signal Cargo stable et la documentation de publication. Après son application, le gate de publication doit confirmer les mêmes compteurs :
|
||||||
|
|
||||||
|
```text
|
||||||
|
Transport unit 335
|
||||||
|
Transport public API 41
|
||||||
|
release completeness 34
|
||||||
|
Transport doctests 4
|
||||||
|
workspace vert
|
||||||
|
warnings 0
|
||||||
|
```
|
||||||
|
|
||||||
|
Après validation de `rel.001`, le tag unique de la release est `v0.2.8` et `prompts/014-V0_2_9_START_PROMPT.md` devient le contrat actif pour `0.2.9-pre.001`.
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: prompts/000-README.md -->
|
<!-- file: prompts/000-README.md -->
|
||||||
<!-- version: 24 -->
|
<!-- version: 25 -->
|
||||||
|
|
||||||
# Prompts KSP
|
# Prompts KSP
|
||||||
|
|
||||||
@@ -33,5 +33,5 @@ Le prompt générique `0.1.x` a été affiné pendant `0.0.3` puis remplacé par
|
|||||||
- [`010-V0_2_5_START_PROMPT.md`](010-V0_2_5_START_PROMPT.md) — prompt préparé par `0.2.4-pre.009` puis finalisé en version 2 par `pre.009-fix.001`, destiné à ouvrir `0.2.5 — Wallet foundation` sur la base stable `v0.2.4`; il impose audit/threat-model/sizing avant choix cryptographiques et cadre `.kspwallet` interopérable, capacités indépendantes VIEW/OWNER, metadata protégées, key slots/rotations, signature, persistence atomique et import/export extensible sans `WalletPolicy`.
|
- [`010-V0_2_5_START_PROMPT.md`](010-V0_2_5_START_PROMPT.md) — prompt préparé par `0.2.4-pre.009` puis finalisé en version 2 par `pre.009-fix.001`, destiné à ouvrir `0.2.5 — Wallet foundation` sur la base stable `v0.2.4`; il impose audit/threat-model/sizing avant choix cryptographiques et cadre `.kspwallet` interopérable, capacités indépendantes VIEW/OWNER, metadata protégées, key slots/rotations, signature, persistence atomique et import/export extensible sans `WalletPolicy`.
|
||||||
- [`011-V0_2_6_START_PROMPT.md`](011-V0_2_6_START_PROMPT.md) — prompt préparé par `0.2.5-pre.010` puis renforcé pendant `pre.010-fix.001`–`fix.003`, prompt historique consommé pour ouvrir `0.2.6 — Wallet Desk` après le tag stable `v0.2.5`; il impose une première tranche audit/sizing, rappelle les règles Rust/audit structurel, cadre Config composite + Wallet + HTTP `getBalance`, lifecycle VIEW/OWNER, sécurité password/export, validation frontend/Tauri et conserve le TODO `0.2.11` d’intégration des prix offchain dans Wallet Desk après validation de la Price Desk spécialisée.
|
- [`011-V0_2_6_START_PROMPT.md`](011-V0_2_6_START_PROMPT.md) — prompt préparé par `0.2.5-pre.010` puis renforcé pendant `pre.010-fix.001`–`fix.003`, prompt historique consommé pour ouvrir `0.2.6 — Wallet Desk` après le tag stable `v0.2.5`; il impose une première tranche audit/sizing, rappelle les règles Rust/audit structurel, cadre Config composite + Wallet + HTTP `getBalance`, lifecycle VIEW/OWNER, sécurité password/export, validation frontend/Tauri et conserve le TODO `0.2.11` d’intégration des prix offchain dans Wallet Desk après validation de la Price Desk spécialisée.
|
||||||
- [`012-V0_2_7_START_PROMPT.md`](012-V0_2_7_START_PROMPT.md) — prompt réaligné par `0.2.6-pre.015` puis renforcé en contrat de reprise autonome par `0.2.6-pre.018-fix.002`; prompt historique consommé pour ouvrir `0.2.7 — WebSocket Solana standard` depuis `v0.2.6`, avec lectures/règles ordonnées, audit officiel et historique, threat-model session/subscription/reconnect/backpressure, matrice de compliance, gate `pre.001` strict et prévision souple de prereleases avant toute implémentation lourde.
|
- [`012-V0_2_7_START_PROMPT.md`](012-V0_2_7_START_PROMPT.md) — prompt réaligné par `0.2.6-pre.015` puis renforcé en contrat de reprise autonome par `0.2.6-pre.018-fix.002`; prompt historique consommé pour ouvrir `0.2.7 — WebSocket Solana standard` depuis `v0.2.6`, avec lectures/règles ordonnées, audit officiel et historique, threat-model session/subscription/reconnect/backpressure, matrice de compliance, gate `pre.001` strict et prévision souple de prereleases avant toute implémentation lourde.
|
||||||
- [`013-V0_2_8_START_PROMPT.md`](013-V0_2_8_START_PROMPT.md) — prompt actif après publication `0.2.7-rel.001` et tag stable `v0.2.7`, préparé par `0.2.7-pre.014` puis renforcé en version 2 par `pre.014-fix.001`; il ouvre `0.2.8 — Helius LaserStream WebSocket` avec relecture des règles et de la surface WebSocket finale, réaudit Helius actuel, gate `pre.001` strict audit/brainstorming/sizing, réutilisation du moteur actor standard sans second client, frontières provider/Config/secrets explicites et forecast souple recalibrable avant toute implémentation lourde.
|
- [`013-V0_2_8_START_PROMPT.md`](013-V0_2_8_START_PROMPT.md) — prompt historique consommé pour ouvrir puis conduire la release stable `0.2.8 — Helius LaserStream WebSocket` depuis `v0.2.7`; préparé par `0.2.7-pre.014` puis renforcé en version 2 par `pre.014-fix.001`, il imposait relecture des règles, réaudit Helius, gate `pre.001` strict audit/brainstorming/sizing, actor standard partagé, frontières provider/Config/secrets et forecast souple avant implémentation lourde.
|
||||||
- [`014-V0_2_9_START_PROMPT.md`](014-V0_2_9_START_PROMPT.md) — prompt préparé par `0.2.8-pre.011` pour ouvrir `0.2.9 — Yellowstone gRPC standard/provider-neutral` uniquement après publication stable `v0.2.8`; il impose la base stable autoritaire, la relecture ordonnée des règles/architectures/compliances Transport, un réaudit Yellowstone actuel (service/proto/releases/crates), un audit dépendances/licences/MSRV avant choix du client/proto, la séparation standard/provider/deshred, un gate `pre.001` strict audit/brainstorming/sizing et une prévision souple détaillée avant toute implémentation gRPC lourde.
|
- [`014-V0_2_9_START_PROMPT.md`](014-V0_2_9_START_PROMPT.md) — prompt actif après publication `0.2.8-rel.001` et tag stable `v0.2.8`, préparé par `0.2.8-pre.011`; il ouvre `0.2.9 — Yellowstone gRPC standard/provider-neutral` et impose la base stable autoritaire, la relecture ordonnée des règles/architectures/compliances Transport, un réaudit Yellowstone actuel (service/proto/releases/crates), un audit dépendances/licences/MSRV avant choix du client/proto, la séparation standard/provider/deshred, un gate `pre.001` strict audit/brainstorming/sizing et une prévision souple détaillée avant toute implémentation gRPC lourde.
|
||||||
|
|||||||
Reference in New Issue
Block a user