v0.2.1-pre.001-fix.001
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/000-README.md -->
|
||||
<!-- version: 21 -->
|
||||
<!-- version: 22 -->
|
||||
|
||||
# Documentation KSP
|
||||
|
||||
@@ -61,7 +61,7 @@ D'autres sous-répertoires seront ajoutés uniquement lorsque leur rôle aura é
|
||||
|
||||
## Documents de planification
|
||||
|
||||
Le plan historique de la phase fondatrice clôturée est conservé dans [`plans/001-V0_0_3_PLAN.md`](plans/001-V0_0_3_PLAN.md). La séquence active des premières releases fonctionnelles est définie dans [`plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md`](plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md). Le plan détaillé de la release stable `0.1.1` est conservé comme historique clôturé dans [`plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md`](plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md). Le plan détaillé de la release stable `0.1.2` est conservé comme historique clôturé dans [`plans/004-V0_1_2_LOGGING_FOUNDATION_PLAN.md`](plans/004-V0_1_2_LOGGING_FOUNDATION_PLAN.md). Le plan détaillé de la release stable `0.1.3 — Configuration foundation` est conservé comme historique clôturé dans [`plans/005-V0_1_3_CONFIG_FOUNDATION_PLAN.md`](plans/005-V0_1_3_CONFIG_FOUNDATION_PLAN.md). Le plan détaillé de la release stable `0.1.4 — ksp-app-config-desk` est conservé comme historique clôturé dans [`plans/006-V0_1_4_CONFIG_DESKTOP_PLAN.md`](plans/006-V0_1_4_CONFIG_DESKTOP_PLAN.md), avec sa matrice finale [`validation/001-V0_1_4_CONFIG_DESKTOP.md`](validation/001-V0_1_4_CONFIG_DESKTOP.md). Son prompt d'ouverture historique reste [`../prompts/004-V0_1_4_START_PROMPT.md`](../prompts/004-V0_1_4_START_PROMPT.md). La release stable `0.2.0` clôt l'audit de bot3 et le découpage de la série. Son plan directeur est conservé comme historique clôturé dans [`plans/007-V0_2_0_SERIES_PLANNING.md`](plans/007-V0_2_0_SERIES_PLANNING.md), avec sa matrice finale [`validation/002-V0_2_0_SERIES_PLANNING.md`](validation/002-V0_2_0_SERIES_PLANNING.md). `0.2.1` a été ouverte par [`../prompts/006-V0_2_1_START_PROMPT.md`](../prompts/006-V0_2_1_START_PROMPT.md). Son `pre.001` applique le gate de sizing et crée le plan actif [`plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md`](plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md) : l'inventaire HTTP exhaustif est conservé, mais la couverture typée est répartie sur `0.2.1`–`0.2.6` afin de respecter la règle de clôture d'une release dans une seule session.
|
||||
Le plan historique de la phase fondatrice clôturée est conservé dans [`plans/001-V0_0_3_PLAN.md`](plans/001-V0_0_3_PLAN.md). La séquence active des premières releases fonctionnelles est définie dans [`plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md`](plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md). Le plan détaillé de la release stable `0.1.1` est conservé comme historique clôturé dans [`plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md`](plans/003-V0_1_1_CORE_FOUNDATION_PLAN.md). Le plan détaillé de la release stable `0.1.2` est conservé comme historique clôturé dans [`plans/004-V0_1_2_LOGGING_FOUNDATION_PLAN.md`](plans/004-V0_1_2_LOGGING_FOUNDATION_PLAN.md). Le plan détaillé de la release stable `0.1.3 — Configuration foundation` est conservé comme historique clôturé dans [`plans/005-V0_1_3_CONFIG_FOUNDATION_PLAN.md`](plans/005-V0_1_3_CONFIG_FOUNDATION_PLAN.md). Le plan détaillé de la release stable `0.1.4 — ksp-app-config-desk` est conservé comme historique clôturé dans [`plans/006-V0_1_4_CONFIG_DESKTOP_PLAN.md`](plans/006-V0_1_4_CONFIG_DESKTOP_PLAN.md), avec sa matrice finale [`validation/001-V0_1_4_CONFIG_DESKTOP.md`](validation/001-V0_1_4_CONFIG_DESKTOP.md). Son prompt d'ouverture historique reste [`../prompts/004-V0_1_4_START_PROMPT.md`](../prompts/004-V0_1_4_START_PROMPT.md). La release stable `0.2.0` clôt l'audit de bot3 et le découpage de la série. Son plan directeur est conservé comme historique clôturé dans [`plans/007-V0_2_0_SERIES_PLANNING.md`](plans/007-V0_2_0_SERIES_PLANNING.md), avec sa matrice finale [`validation/002-V0_2_0_SERIES_PLANNING.md`](validation/002-V0_2_0_SERIES_PLANNING.md). `0.2.1` a été ouverte par [`../prompts/006-V0_2_1_START_PROMPT.md`](../prompts/006-V0_2_1_START_PROMPT.md). Son `pre.001` applique le gate de sizing, crée le plan actif [`plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md`](plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md) et produit d'abord un split HTTP sur `0.2.1`–`0.2.6`. `0.2.1-pre.001-fix.001` recalibre ensuite ce split sur `0.2.1`–`0.2.4` sans perdre l'inventaire exhaustif, et précise que plusieurs releases peuvent être enchaînées dans un même chat si chacune est clôturée séparément et si le sizing de la suivante reste positif.
|
||||
|
||||
`IDEAS.md` conserve les pistes et questions qui ne sont pas encore des engagements du roadmap ni des décisions architecturales.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/IDEAS.md -->
|
||||
<!-- version: 17 -->
|
||||
<!-- version: 18 -->
|
||||
|
||||
# Idées à explorer
|
||||
|
||||
@@ -104,7 +104,7 @@ Réévaluer seulement si les premières implémentations montrent une duplicatio
|
||||
|
||||
### Pool automatique de sessions WebSocket
|
||||
|
||||
**Status :** À explorer après `0.2.4`
|
||||
**Status :** À explorer après `0.2.7`
|
||||
|
||||
Le contrat WebSocket doit autoriser plusieurs sessions physiques sur une même URL, chaque session portant plusieurs subscriptions.
|
||||
|
||||
@@ -182,7 +182,7 @@ Un wallet web/online utilisant les contrats KSP est envisagé. La gestion des se
|
||||
|
||||
### Formats Wallet import/export supplémentaires
|
||||
|
||||
**Status :** À explorer avec `0.2.2` et après
|
||||
**Status :** À explorer avec `0.2.5` et après
|
||||
|
||||
Le format natif KSP est `.kspwallet`. L'architecture d'import/export doit rester extensible, mais seules les conversions réellement nécessaires sont implémentées immédiatement.
|
||||
|
||||
@@ -395,6 +395,6 @@ Si cette capacité devient utile, l’intégration doit être conçue dans la pi
|
||||
|
||||
**Status :** Transférée au roadmap pour le début de `0.2.x`
|
||||
|
||||
`0.2.0-pre.002` fixe désormais le début concret `0.2.1 -> 0.2.10` sous réserve du gate de dimensionnement de chaque `pre.001`.
|
||||
`0.2.0-pre.002` avait fixé le premier séquencement concret. `0.2.1-pre.001-fix.001` le recalibre désormais sur `0.2.1 -> 0.2.13`, sous réserve du gate de dimensionnement de chaque `pre.001` et avec possibilité d'enchaîner plusieurs releases complètement clôturées dans une même session lorsque le sizing le permet.
|
||||
|
||||
Les séries après RAW/CORE ne sont volontairement pas numérotées programme par programme à ce stade : la règle est de redécouper chaque vertical slice selon sa taille réelle et de ne jamais ouvrir une release qui ne peut pas être clôturée dans sa session.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/architecture/004-COMPONENT_INVENTORY.md -->
|
||||
<!-- version: 6 -->
|
||||
<!-- version: 7 -->
|
||||
|
||||
# Inventaire initial des composants KSP
|
||||
|
||||
@@ -24,15 +24,15 @@ Ce document maintient l'inventaire synthétique des composants retenus ou presse
|
||||
| Config | `ksp-config-lib` | lib | Stable | `0.1.3` | documents, profils, env et persistence Config |
|
||||
| Config Desk | `ksp-app-config-desk` | app | Stable | `0.1.4` | validation/management Config |
|
||||
| On-chain HTTP | `ksp-onchain-transport-lib` | lib | Retenu | `0.2.1` | JSON-RPC HTTP complet, settings, pools, rôles |
|
||||
| Wallet | `ksp-wallet-lib` | lib | Retenu | `0.2.2` | `.kspwallet`, secrets, signature, import/export |
|
||||
| Wallet Desk | `ksp-app-wallet-desk` | app | Retenu | `0.2.3` | Wallet + Config composite + HTTP/balance |
|
||||
| Standard WS | `ksp-onchain-transport-lib` | lib | Retenu | `0.2.4` | WebSocket Solana complet, sessions/subscriptions |
|
||||
| Helius WS | `ksp-onchain-transport-lib` | lib | Retenu | `0.2.5` | LaserStream WebSocket comme extension du moteur standard |
|
||||
| Yellowstone | `ksp-onchain-transport-lib` | lib | Pressenti | `0.2.6` | client gRPC standard/provider-neutral |
|
||||
| Off-chain price | `ksp-offchain-transport-lib` | lib | Retenu | `0.2.7` | première abstraction/provider de prix SOL/USD, SOL/EUR |
|
||||
| Price Desk | nom à fixer | app | Retenu | `0.2.8` | visualisation/validation des prix |
|
||||
| Wire | `ksp-interface-lib` | lib | Retenu | `0.2.9` | façade wire officielle + API publique wire |
|
||||
| Program API | `ksp-program-api` | API | Retenu | `0.2.10` | contrats extensibles Program |
|
||||
| Wallet | `ksp-wallet-lib` | lib | Retenu | `0.2.5` | `.kspwallet`, secrets, signature, import/export |
|
||||
| Wallet Desk | `ksp-app-wallet-desk` | app | Retenu | `0.2.6` | Wallet + Config composite + HTTP/balance |
|
||||
| Standard WS | `ksp-onchain-transport-lib` | lib | Retenu | `0.2.7` | WebSocket Solana complet, sessions/subscriptions |
|
||||
| Helius WS | `ksp-onchain-transport-lib` | lib | Retenu | `0.2.8` | LaserStream WebSocket comme extension du moteur standard |
|
||||
| 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 |
|
||||
| Price Desk | nom à fixer | app | Retenu | `0.2.11` | visualisation/validation des prix |
|
||||
| Wire | `ksp-interface-lib` | lib | Retenu | `0.2.12` | façade wire officielle + API publique wire |
|
||||
| Program API | `ksp-program-api` | API | Retenu | `0.2.13` | contrats extensibles Program |
|
||||
| Program impl. | `ksp-program-lib` | lib | Retenu | vertical slices ultérieurs | implementations Program officielles |
|
||||
| Program extension | `ksp-program-<name>-lib` | lib externe | À la demande | dès besoin | implementation externe de `ksp-program-api` |
|
||||
| Store API | `ksp-store-api` | API | Retenu | `0.3.1` | contrats persistence backend-agnostic, RAW d'abord |
|
||||
@@ -146,7 +146,7 @@ Market Desk est progressive : V1 après les DEX prioritaires, puis enrichissemen
|
||||
## Questions restantes
|
||||
|
||||
- noms exacts de Price Desk et Backfill Desk ;
|
||||
- surface exacte Yellowstone après audit normatif de `0.2.6-pre.001` ;
|
||||
- surface exacte Yellowstone après audit normatif de `0.2.9-pre.001` ;
|
||||
- nécessité future d'un pool automatique WS ;
|
||||
- types exacts `ksp-program-api`/`ksp-materializer-api`/`ksp-store-api` ;
|
||||
- nom/packaging précis du premier RAW worker et du CORE normalizer ;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/000-README.md -->
|
||||
<!-- version: 29 -->
|
||||
<!-- version: 30 -->
|
||||
|
||||
# Plans KSP
|
||||
|
||||
@@ -16,7 +16,7 @@ Un plan décrit le périmètre, les décisions déjà acquises, les questions ou
|
||||
- [`005-V0_1_3_CONFIG_FOUNDATION_PLAN.md`](005-V0_1_3_CONFIG_FOUNDATION_PLAN.md) — plan historique clôturé de la release stable `0.1.3 — Configuration foundation`, établi par `0.1.3-pre.001`, exécuté jusqu'à `pre.015` puis publié par `0.1.3-rel.001`.
|
||||
- [`006-V0_1_4_CONFIG_DESKTOP_PLAN.md`](006-V0_1_4_CONFIG_DESKTOP_PLAN.md) — plan historique clôturé de la release stable `0.1.4 — ksp-app-config-desk`, établi par `0.1.4-pre.001` puis consolidé jusqu'à `0.1.4-rel.001`.
|
||||
- [`007-V0_2_0_SERIES_PLANNING.md`](007-V0_2_0_SERIES_PLANNING.md) — plan historique clôturé de la release stable `0.2.0`, ouvert par `pre.001`, consolidé par `pre.002`, audité par `pre.003` puis publié par `rel.001`; il fixe l'ordre `0.2.1+`, la stratégie RAW/CORE/DECODE/SPECIALIZED, les vertical slices Program et le prompt `0.2.1`.
|
||||
- [`008-V0_2_1_ONCHAIN_HTTP_PLAN.md`](008-V0_2_1_ONCHAIN_HTTP_PLAN.md) — plan actif de `0.2.1`, établi par `0.2.1-pre.001`; il contient l'inventaire officiel 52 méthodes HTTP courantes + 14 Deprecated historiques, l'audit bot3, le design Transport/Config et le split obligatoire de la couverture HTTP sur `0.2.1`–`0.2.6`.
|
||||
- [`008-V0_2_1_ONCHAIN_HTTP_PLAN.md`](008-V0_2_1_ONCHAIN_HTTP_PLAN.md) — plan actif de `0.2.1`, établi par `0.2.1-pre.001` puis recalibré par `0.2.1-pre.001-fix.001`; il contient l'inventaire officiel 52 méthodes HTTP courantes + 14 Deprecated historiques, l'audit bot3, le design Transport/Config et le split courant de la couverture HTTP sur `0.2.1`–`0.2.4`, avec enchaînement possible de releases dans une même session sous gate de sizing.
|
||||
|
||||
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 -->
|
||||
<!-- version: 30 -->
|
||||
<!-- version: 31 -->
|
||||
|
||||
# Séquence des releases fonctionnelles KSP
|
||||
|
||||
@@ -15,6 +15,7 @@ Principes :
|
||||
- une release concrète `X.Y.Z` est une unité de travail/session dimensionnée ;
|
||||
- chaque release concrète possède ses propres prereleases ;
|
||||
- une release trop grosse est scindée au lieu d'être forcée dans une session ;
|
||||
- une session de chat peut enchaîner plusieurs releases si chacune est entièrement clôturée avant l'ouverture de la suivante et si le sizing de la suivante reste raisonnablement positif ; cette possibilité ne fusionne ni les numéros, ni les deltas, ni les validations ;
|
||||
- les numéros futurs sont confirmés lorsque leur série approche et que les dépendances réelles sont connues.
|
||||
|
||||
# Première série fonctionnelle : `0.1.x`
|
||||
@@ -355,23 +356,21 @@ Par défaut :
|
||||
|
||||
```text
|
||||
0.2.1 HTTP transport foundation + 4 méthodes canari
|
||||
0.2.2 HTTP Accounts + Tokens
|
||||
0.2.2 HTTP Accounts + Tokens + Cluster
|
||||
0.2.3 HTTP Transactions
|
||||
0.2.4 HTTP Blocks
|
||||
0.2.5 HTTP Cluster
|
||||
0.2.6 HTTP Economics + compliance complète
|
||||
0.2.7 wallet foundation (.kspwallet)
|
||||
0.2.8 Wallet Desk
|
||||
0.2.9 standard Solana WebSocket
|
||||
0.2.10 Helius LaserStream WebSocket
|
||||
0.2.11 Yellowstone gRPC standard foundation
|
||||
0.2.12 off-chain price transport
|
||||
0.2.13 price visualization desk
|
||||
0.2.14 interface/wire foundation
|
||||
0.2.15 program-api foundation
|
||||
0.2.4 HTTP Blocks + Economics + compliance complète
|
||||
0.2.5 wallet foundation (.kspwallet)
|
||||
0.2.6 Wallet Desk
|
||||
0.2.7 standard Solana WebSocket
|
||||
0.2.8 Helius LaserStream WebSocket
|
||||
0.2.9 Yellowstone gRPC standard foundation
|
||||
0.2.10 off-chain price transport
|
||||
0.2.11 price visualization desk
|
||||
0.2.12 interface/wire foundation
|
||||
0.2.13 program-api foundation
|
||||
```
|
||||
|
||||
`0.2.1-pre.001` a appliqué le gate de sizing et refusé le scope HTTP monolithique initial : l'inventaire du 2026-08-17 contient 52 méthodes courantes et 14 méthodes Deprecated historiques. La couverture typée exhaustive reste verrouillée mais est répartie sur `0.2.1`–`0.2.6`. Un Wallet Desk utile doit pouvoir lire le solde du wallet : `getBalance` fait donc partie des quatre canaris de la foundation `0.2.1`, avant Wallet. Les transports live arrivent ensuite ; Interface/Program restent préparés avant les couches de données décodées.
|
||||
`0.2.1-pre.001` a appliqué le gate de sizing et refusé le scope HTTP monolithique initial : l'inventaire du 2026-08-17 contient 52 méthodes courantes et 14 méthodes Deprecated historiques. Ce premier delta avait réparti la couverture typée sur `0.2.1`–`0.2.6`. `0.2.1-pre.001-fix.001` recalibre ensuite les 48 méthodes restantes sur trois releases complémentaires `0.2.2`–`0.2.4`, soit trois sessions nominales au maximum si chaque release utilise sa session complète. Si une release se clôt plus vite que prévu, la même session peut enchaîner la suivante après clôture complète de la précédente et nouveau gate de sizing positif. Un Wallet Desk utile doit pouvoir lire le solde du wallet : `getBalance` fait donc partie des quatre canaris de la foundation `0.2.1`, avant Wallet. Les transports live arrivent ensuite ; Interface/Program restent préparés avant les couches de données décodées.
|
||||
|
||||
## `0.2.1` — HTTP transport foundation réduite
|
||||
|
||||
@@ -381,17 +380,17 @@ Inclure : settings publics ; endpoint/provider/cluster ; pool logique ; rôles/c
|
||||
|
||||
Le plan détaillé actif est `docs/plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md`. Un appel raw/générique ne compte pas comme couverture typée des méthodes reportées.
|
||||
|
||||
## `0.2.2` à `0.2.6` — complétude HTTP Solana
|
||||
## `0.2.2` à `0.2.4` — complétude HTTP Solana
|
||||
|
||||
- `0.2.2` : Accounts restants + Tokens ;
|
||||
- `0.2.3` : Transactions, y compris write/submission technique et no-resend ambigu ;
|
||||
- `0.2.4` : Blocks ;
|
||||
- `0.2.5` : Cluster restant ;
|
||||
- `0.2.6` : Economics + compliance finale des 52 méthodes courantes et 14 historiques Deprecated.
|
||||
- `0.2.2` : 5 Accounts restants + 5 Tokens + 12 Cluster restants = 22 méthodes ;
|
||||
- `0.2.3` : 11 Transactions, y compris write/submission technique et no-resend ambigu ;
|
||||
- `0.2.4` : 10 Blocks + 5 Economics = 15 méthodes, puis compliance finale des 52 méthodes courantes et 14 historiques Deprecated.
|
||||
|
||||
Ces trois releases constituent le découpage nominal, pas une obligation de trois chats distincts. Une session qui clôture complètement une release plus vite que prévu peut ouvrir immédiatement la suivante si son sizing permet encore raisonnablement de la clôturer dans cette même session. Les releases restent séparées : version, prereleases, delta, validations et clôture stable propres à chacune.
|
||||
|
||||
Chaque `pre.001` réaudite la documentation officielle actuelle. Les méthodes Deprecated réellement retirées restent tracées comme historiques/runtime removed au lieu d'être simulées.
|
||||
|
||||
## `0.2.7` — Wallet foundation
|
||||
## `0.2.5` — Wallet foundation
|
||||
|
||||
Mission : créer `ksp-wallet-lib` et le format `.kspwallet`.
|
||||
|
||||
@@ -399,23 +398,23 @@ Inclure protection du secret, pubkey/identity, signature, import/export extensib
|
||||
|
||||
Exclure : temporary wallet JSON historique et `WalletPolicy`.
|
||||
|
||||
## `0.2.8` — Wallet Desk
|
||||
## `0.2.6` — Wallet Desk
|
||||
|
||||
Mission : valider Config composite + `.kspwallet` + transport HTTP dans une application Tauri mince.
|
||||
|
||||
Le solde d'un wallet constitue un premier cas de validation réseau obligatoire.
|
||||
|
||||
## `0.2.9` — WebSocket Solana standard
|
||||
## `0.2.7` — WebSocket Solana standard
|
||||
|
||||
Mission : couvrir la surface WebSocket standard officielle ciblée.
|
||||
|
||||
Une URL peut avoir plusieurs sessions physiques ; une session peut avoir plusieurs subscriptions. Un pool automatique de sessions est reporté jusqu'à besoin concret.
|
||||
|
||||
## `0.2.10` — Helius LaserStream WebSocket
|
||||
## `0.2.8` — Helius LaserStream WebSocket
|
||||
|
||||
Mission : étendre le moteur WebSocket standard avec les opérations/filtres/capabilities Helius ciblés sans copier le client.
|
||||
|
||||
## `0.2.11` — Yellowstone gRPC standard
|
||||
## `0.2.9` — Yellowstone gRPC standard
|
||||
|
||||
Mission : introduire un backend Yellowstone standard/provider-neutral.
|
||||
|
||||
@@ -423,21 +422,21 @@ Le `pre.001` est un gate de sizing : inventorier toute la surface normative cibl
|
||||
|
||||
Les profiles/adapters Helius/Triton/ERPC/Chainstack/Shyft sont reportés après les priorités fondatrices.
|
||||
|
||||
## `0.2.12` / `0.2.13` — Off-chain price + app
|
||||
## `0.2.10` / `0.2.11` — Off-chain price + app
|
||||
|
||||
`0.2.12` introduit `ksp-offchain-transport-lib` avec au minimum SOL/USD et SOL/EUR via une abstraction indépendante du premier provider.
|
||||
`0.2.10` introduit `ksp-offchain-transport-lib` avec au minimum SOL/USD et SOL/EUR via une abstraction indépendante du premier provider.
|
||||
|
||||
`0.2.13` ajoute une petite application desk de visualisation/validation.
|
||||
`0.2.11` ajoute une petite application desk de visualisation/validation.
|
||||
|
||||
Metadata HTTP/IPFS/Arweave viendra au premier besoin Metadata réel.
|
||||
|
||||
## `0.2.14` — Interface foundation
|
||||
## `0.2.12` — Interface foundation
|
||||
|
||||
`ksp-interface-lib` devient la façade wire officielle et expose une API publique wire utilisable par les implementations officielles et externes.
|
||||
|
||||
Aucune `ksp-interface-api` séparée n'est retenue pour l'instant.
|
||||
|
||||
## `0.2.15` — Program API foundation
|
||||
## `0.2.13` — Program API foundation
|
||||
|
||||
Introduire `ksp-program-api`, sans suffixe `-lib`, comme contrat d'extension Program.
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<!-- file: docs/plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md -->
|
||||
<!-- version: 1 -->
|
||||
<!-- version: 2 -->
|
||||
|
||||
# `0.2.1-pre.001` — plan `ksp-onchain-transport-lib` HTTP Solana foundation
|
||||
|
||||
## 1. Statut et conclusion exécutive
|
||||
|
||||
Ce document ouvre `0.2.1` à partir de la base stable fournie `0.2.0` et exécute le gate de sizing imposé par le prompt `006` avant toute grosse implémentation.
|
||||
Ce document ouvre `0.2.1` à partir de la base stable fournie `0.2.0` et exécute le gate de sizing imposé par le prompt `006` avant toute grosse implémentation. Sa version initiale appartient à `0.2.1-pre.001`; le split de releases présenté dans cette version du plan est le recalibrage documentaire de `0.2.1-pre.001-fix.001`.
|
||||
|
||||
Conclusion du gate :
|
||||
|
||||
@@ -260,26 +260,26 @@ Colonnes : nom, catégorie, paramètres/config à préserver, forme de résultat
|
||||
| `getFirstAvailableBlock` | Blocks | aucun | u64 | Stable | Supporté | typed_adapter | `0.2.4` | empty params ; u64 | [Solana](https://solana.com/docs/rpc/http/getfirstavailableblock) |
|
||||
| `getRecentPerformanceSamples` | Blocks | limit? <= 720 | [PerformanceSample] | Stable | Supporté | typed_adapter | `0.2.4` | no params/limit ; nullable numNonVoteTransactions | [Solana](https://solana.com/docs/rpc/http/getrecentperformancesamples) |
|
||||
| `minimumLedgerSlot` | Blocks | aucun | u64 | Stable | Supporté | typed_adapter | `0.2.4` | empty params ; u64 | [Solana](https://solana.com/docs/rpc/http/minimumledgerslot) |
|
||||
| `getClusterNodes` | Cluster | aucun | [ClusterNode] | Stable | Supporté | typed_adapter | `0.2.5` | nullable endpoints/features ; array | [Solana](https://solana.com/docs/rpc/http/getclusternodes) |
|
||||
| `getEpochInfo` | Cluster | config? {commitment,minContextSlot} | EpochInfo | Stable | Supporté | typed_adapter | `0.2.5` | config ; transactionCount null | [Solana](https://solana.com/docs/rpc/http/getepochinfo) |
|
||||
| `getEpochSchedule` | Cluster | aucun | EpochSchedule | Stable | Supporté | typed_adapter | `0.2.5` | empty params ; object | [Solana](https://solana.com/docs/rpc/http/getepochschedule) |
|
||||
| `getClusterNodes` | Cluster | aucun | [ClusterNode] | Stable | Supporté | typed_adapter | `0.2.2` | nullable endpoints/features ; array | [Solana](https://solana.com/docs/rpc/http/getclusternodes) |
|
||||
| `getEpochInfo` | Cluster | config? {commitment,minContextSlot} | EpochInfo | Stable | Supporté | typed_adapter | `0.2.2` | config ; transactionCount null | [Solana](https://solana.com/docs/rpc/http/getepochinfo) |
|
||||
| `getEpochSchedule` | Cluster | aucun | EpochSchedule | Stable | Supporté | typed_adapter | `0.2.2` | empty params ; object | [Solana](https://solana.com/docs/rpc/http/getepochschedule) |
|
||||
| `getGenesisHash` | Cluster | aucun | string base58 | Stable | Supporté | typed_adapter | `0.2.1` | empty params ; hash string ; error | [Solana](https://solana.com/docs/rpc/http/getgenesishash) |
|
||||
| `getHealth` | Cluster | aucun | "ok" ou RPC unhealthy error | Stable | Supporté | typed_adapter | `0.2.1` | healthy ; unhealthy RPC error | [Solana](https://solana.com/docs/rpc/http/gethealth) |
|
||||
| `getHighestSnapshotSlot` | Cluster | aucun | {full:u64,incremental:u64\|null} | Stable | Supporté | typed_adapter | `0.2.5` | incremental null ; no snapshot/error | [Solana](https://solana.com/docs/rpc/http/gethighestsnapshotslot) |
|
||||
| `getIdentity` | Cluster | aucun | {identity:string} | Stable | Supporté | typed_adapter | `0.2.5` | empty params ; identity | [Solana](https://solana.com/docs/rpc/http/getidentity) |
|
||||
| `getLeaderSchedule` | Cluster | slot? \| config? \| null ; config? {commitment,identity} | map identity->[slot_index] \| null | Stable | Supporté | typed_adapter | `0.2.5` | all overloads ; filter ; null | [Solana](https://solana.com/docs/rpc/http/getleaderschedule) |
|
||||
| `getMaxRetransmitSlot` | Cluster | aucun | u64 | Stable | Supporté | typed_adapter | `0.2.5` | empty params ; u64 | [Solana](https://solana.com/docs/rpc/http/getmaxretransmitslot) |
|
||||
| `getMaxShredInsertSlot` | Cluster | aucun | u64 | Stable | Supporté | typed_adapter | `0.2.5` | empty params ; u64 | [Solana](https://solana.com/docs/rpc/http/getmaxshredinsertslot) |
|
||||
| `getSlot` | Cluster | config? {commitment,minContextSlot} | u64 | Stable | Supporté | typed_adapter | `0.2.5` | config ; u64 | [Solana](https://solana.com/docs/rpc/http/getslot) |
|
||||
| `getSlotLeader` | Cluster | config? {commitment,minContextSlot} | string pubkey | Stable | Supporté | typed_adapter | `0.2.5` | config ; pubkey | [Solana](https://solana.com/docs/rpc/http/getslotleader) |
|
||||
| `getSlotLeaders` | Cluster | startSlot ; limit 1..5000 | [string pubkey] | Stable | Supporté | typed_adapter | `0.2.5` | limit boundaries ; array | [Solana](https://solana.com/docs/rpc/http/getslotleaders) |
|
||||
| `getHighestSnapshotSlot` | Cluster | aucun | {full:u64,incremental:u64\|null} | Stable | Supporté | typed_adapter | `0.2.2` | incremental null ; no snapshot/error | [Solana](https://solana.com/docs/rpc/http/gethighestsnapshotslot) |
|
||||
| `getIdentity` | Cluster | aucun | {identity:string} | Stable | Supporté | typed_adapter | `0.2.2` | empty params ; identity | [Solana](https://solana.com/docs/rpc/http/getidentity) |
|
||||
| `getLeaderSchedule` | Cluster | slot? \| config? \| null ; config? {commitment,identity} | map identity->[slot_index] \| null | Stable | Supporté | typed_adapter | `0.2.2` | all overloads ; filter ; null | [Solana](https://solana.com/docs/rpc/http/getleaderschedule) |
|
||||
| `getMaxRetransmitSlot` | Cluster | aucun | u64 | Stable | Supporté | typed_adapter | `0.2.2` | empty params ; u64 | [Solana](https://solana.com/docs/rpc/http/getmaxretransmitslot) |
|
||||
| `getMaxShredInsertSlot` | Cluster | aucun | u64 | Stable | Supporté | typed_adapter | `0.2.2` | empty params ; u64 | [Solana](https://solana.com/docs/rpc/http/getmaxshredinsertslot) |
|
||||
| `getSlot` | Cluster | config? {commitment,minContextSlot} | u64 | Stable | Supporté | typed_adapter | `0.2.2` | config ; u64 | [Solana](https://solana.com/docs/rpc/http/getslot) |
|
||||
| `getSlotLeader` | Cluster | config? {commitment,minContextSlot} | string pubkey | Stable | Supporté | typed_adapter | `0.2.2` | config ; pubkey | [Solana](https://solana.com/docs/rpc/http/getslotleader) |
|
||||
| `getSlotLeaders` | Cluster | startSlot ; limit 1..5000 | [string pubkey] | Stable | Supporté | typed_adapter | `0.2.2` | limit boundaries ; array | [Solana](https://solana.com/docs/rpc/http/getslotleaders) |
|
||||
| `getVersion` | Cluster | aucun | {solana-core:string,feature-set:u32\|null} | Stable | Supporté | typed_adapter | `0.2.1` | empty params ; feature-set present/null | [Solana](https://solana.com/docs/rpc/http/getversion) |
|
||||
| `getVoteAccounts` | Cluster | config? {commitment,votePubkey,keepUnstakedDelinquents,delinquentSlotDistance} | {current:[VoteAccount],delinquent:[VoteAccount]} | Stable | Supporté | typed_adapter | `0.2.5` | filters/config ; both sets | [Solana](https://solana.com/docs/rpc/http/getvoteaccounts) |
|
||||
| `getInflationGovernor` | Economics | config? {commitment} | InflationGovernor | Stable | Supporté | typed_adapter | `0.2.6` | config ; f64 fields | [Solana](https://solana.com/docs/rpc/http/getinflationgovernor) |
|
||||
| `getInflationRate` | Economics | aucun | {total,validator,foundation:f64,epoch:u64} | Stable | Supporté | typed_adapter | `0.2.6` | empty params ; object | [Solana](https://solana.com/docs/rpc/http/getinflationrate) |
|
||||
| `getInflationReward` | Economics | addresses ; config? {commitment,epoch,minContextSlot} | [InflationReward\|null] | Stable | Supporté | typed_adapter | `0.2.6` | addresses/config ; reward/null ; commission null | [Solana](https://solana.com/docs/rpc/http/getinflationreward) |
|
||||
| `getStakeMinimumDelegation` | Economics | config? {commitment,minContextSlot} | RpcResponse<u64> | Stable | Supporté | typed_adapter | `0.2.6` | config ; value | [Solana](https://solana.com/docs/rpc/http/getstakeminimumdelegation) |
|
||||
| `getSupply` | Economics | config? {commitment,excludeNonCirculatingAccountsList} | RpcResponse<Supply> | Stable | Supporté | typed_adapter | `0.2.6` | config true/false ; list semantics | [Solana](https://solana.com/docs/rpc/http/getsupply) |
|
||||
| `getVoteAccounts` | Cluster | config? {commitment,votePubkey,keepUnstakedDelinquents,delinquentSlotDistance} | {current:[VoteAccount],delinquent:[VoteAccount]} | Stable | Supporté | typed_adapter | `0.2.2` | filters/config ; both sets | [Solana](https://solana.com/docs/rpc/http/getvoteaccounts) |
|
||||
| `getInflationGovernor` | Economics | config? {commitment} | InflationGovernor | Stable | Supporté | typed_adapter | `0.2.4` | config ; f64 fields | [Solana](https://solana.com/docs/rpc/http/getinflationgovernor) |
|
||||
| `getInflationRate` | Economics | aucun | {total,validator,foundation:f64,epoch:u64} | Stable | Supporté | typed_adapter | `0.2.4` | empty params ; object | [Solana](https://solana.com/docs/rpc/http/getinflationrate) |
|
||||
| `getInflationReward` | Economics | addresses ; config? {commitment,epoch,minContextSlot} | [InflationReward\|null] | Stable | Supporté | typed_adapter | `0.2.4` | addresses/config ; reward/null ; commission null | [Solana](https://solana.com/docs/rpc/http/getinflationreward) |
|
||||
| `getStakeMinimumDelegation` | Economics | config? {commitment,minContextSlot} | RpcResponse<u64> | Stable | Supporté | typed_adapter | `0.2.4` | config ; value | [Solana](https://solana.com/docs/rpc/http/getstakeminimumdelegation) |
|
||||
| `getSupply` | Economics | config? {commitment,excludeNonCirculatingAccountsList} | RpcResponse<Supply> | Stable | Supporté | typed_adapter | `0.2.4` | config true/false ; list semantics | [Solana](https://solana.com/docs/rpc/http/getsupply) |
|
||||
|
||||
## 6. Matrice exhaustive — 14 méthodes Deprecated historiques
|
||||
|
||||
@@ -315,18 +315,18 @@ Résumé nom par nom :
|
||||
|
||||
Le split retenu est :
|
||||
|
||||
| Release | Mission | Surface courante assignée |
|
||||
|---------|------------------------------------|-----------------------------------------------------------------------------------------------------------------------------|
|
||||
| `0.2.1` | **HTTP transport foundation** | 4 canaris : `getBalance`, `getGenesisHash`, `getHealth`, `getVersion` + registre 52/14 + infrastructure complète foundation |
|
||||
| `0.2.2` | HTTP Accounts + Tokens | 5 Accounts restants + 5 Tokens = 10 |
|
||||
| `0.2.3` | HTTP Transactions | 11 |
|
||||
| `0.2.4` | HTTP Blocks | 10 |
|
||||
| `0.2.5` | HTTP Cluster | 12 Cluster restants |
|
||||
| `0.2.6` | HTTP Economics + compliance finale | 5 + gate exhaustif 52 courantes / 14 historiques |
|
||||
| Release | Mission | Surface courante assignée |
|
||||
|---------|---------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------|
|
||||
| `0.2.1` | **HTTP transport foundation** | 4 canaris : `getBalance`, `getGenesisHash`, `getHealth`, `getVersion` + registre 52/14 + infrastructure complète foundation |
|
||||
| `0.2.2` | HTTP Accounts + Tokens + Cluster | 5 Accounts restants + 5 Tokens + 12 Cluster restants = 22 |
|
||||
| `0.2.3` | HTTP Transactions | 11 |
|
||||
| `0.2.4` | HTTP Blocks + Economics + compliance finale | 10 Blocks + 5 Economics = 15 + gate exhaustif 52 courantes / 14 historiques |
|
||||
|
||||
La présence d'un appel JSON-RPC raw/générique dans `0.2.1` **ne comptera pas** comme couverture typée des méthodes affectées à `0.2.2`–`0.2.6`.
|
||||
La présence d'un appel JSON-RPC raw/générique dans `0.2.1` **ne comptera pas** comme couverture typée des méthodes affectées à `0.2.2`–`0.2.4`.
|
||||
|
||||
Wallet est décalé à `0.2.7` et Wallet Desk à `0.2.8`. Le premier `getBalance` reste volontairement dans `0.2.1`, donc ce split ne retire pas la capacité réseau minimale dont Wallet Desk aura besoin.
|
||||
Ces trois releases HTTP complémentaires représentent **trois sessions nominales au maximum**, pas trois chats obligatoires. Si une release est entièrement clôturée plus vite que prévu, la même session peut ouvrir puis clôturer la suivante après un nouveau gate de sizing positif. Les frontières restent strictement séparées : numéro de release, prereleases, version, delta, validations et clôture stable.
|
||||
|
||||
Wallet est décalé à `0.2.5` et Wallet Desk à `0.2.6`. Le premier `getBalance` reste volontairement dans `0.2.1`, donc ce split ne retire pas la capacité réseau minimale dont Wallet Desk aura besoin.
|
||||
|
||||
## 8. Périmètre exact de la `0.2.1` réduite
|
||||
|
||||
@@ -488,7 +488,7 @@ Invariants :
|
||||
- une réponse invalide devient `invalid_response`/`json_rpc_protocol`, jamais un faux résultat ;
|
||||
- le `data` d'une erreur RPC peut être préservé comme `serde_json::Value`, mais n'est pas loggué massivement par défaut.
|
||||
|
||||
Une API raw/générique peut exister pour l'extensibilité/provider interop. Elle ne remplace pas la surface typée normative et n'est pas une preuve de couverture des releases `0.2.2`–`0.2.6`.
|
||||
Une API raw/générique peut exister pour l'extensibilité/provider interop. Elle ne remplace pas la surface typée normative et n'est pas une preuve de couverture des releases `0.2.2`–`0.2.4`.
|
||||
|
||||
Pour la surface standard connue, l'exécuteur consulte le registry. Une méthode `runtime = Removed` est refusée comme méthode standard au lieu d'être envoyée en prétendant qu'elle est supportée.
|
||||
|
||||
@@ -820,7 +820,7 @@ La canary de méthode utilise un inventaire statique versionné/audité ; elle n
|
||||
|
||||
Explicitement reportés :
|
||||
|
||||
- les 48 méthodes courantes non canari selon la matrice `0.2.2`–`0.2.6` ;
|
||||
- les 48 méthodes courantes non canari selon la matrice `0.2.2`–`0.2.4` ;
|
||||
- WebSocket Solana ;
|
||||
- LaserStream ;
|
||||
- Yellowstone gRPC ;
|
||||
@@ -851,7 +851,7 @@ La release peut devenir stable seulement si :
|
||||
- Config standard + schema + example + adapter fonctionnent dans le bon sens ;
|
||||
- README/USAGE expliquent API raw vs typed et limites de couverture de `0.2.1` ;
|
||||
- tests ciblés/workspace et cargo tree passent sur le poste de développement ;
|
||||
- prompt `0.2.2 — HTTP Accounts + Tokens` prêt dans la dernière prerelease ;
|
||||
- prompt `0.2.2 — HTTP Accounts + Tokens + Cluster` prêt dans la dernière prerelease ;
|
||||
- aucune méthode de la matrice n'est perdue du planning HTTP global.
|
||||
|
||||
## 22. Prévision souple des prereleases de la `0.2.1` réduite
|
||||
@@ -872,23 +872,23 @@ Ce découpage est révisable si une tranche dépasse le budget ; la release réd
|
||||
|
||||
```text
|
||||
0.2.1 HTTP transport foundation + 4 canaris
|
||||
0.2.2 HTTP Accounts + Tokens
|
||||
0.2.2 HTTP Accounts + Tokens + Cluster
|
||||
0.2.3 HTTP Transactions
|
||||
0.2.4 HTTP Blocks
|
||||
0.2.5 HTTP Cluster
|
||||
0.2.6 HTTP Economics + compliance HTTP finale
|
||||
0.2.7 wallet foundation (.kspwallet)
|
||||
0.2.8 Wallet Desk
|
||||
0.2.9 standard Solana WebSocket
|
||||
0.2.10 Helius LaserStream WebSocket
|
||||
0.2.11 Yellowstone gRPC standard foundation
|
||||
0.2.12 off-chain price transport
|
||||
0.2.13 price visualization desk
|
||||
0.2.14 interface/wire foundation
|
||||
0.2.15 program-api foundation
|
||||
0.2.4 HTTP Blocks + Economics + compliance HTTP finale
|
||||
0.2.5 wallet foundation (.kspwallet)
|
||||
0.2.6 Wallet Desk
|
||||
0.2.7 standard Solana WebSocket
|
||||
0.2.8 Helius LaserStream WebSocket
|
||||
0.2.9 Yellowstone gRPC standard foundation
|
||||
0.2.10 off-chain price transport
|
||||
0.2.11 price visualization desk
|
||||
0.2.12 interface/wire foundation
|
||||
0.2.13 program-api foundation
|
||||
```
|
||||
|
||||
Chaque release HTTP `0.2.2`–`0.2.6` commence par une **revérification officielle temporelle** de sa famille et de l'index global. Si Solana ajoute/supprime/change une méthode entre-temps, la matrice est mise à jour explicitement plutôt que de conserver aveuglément l'état du 2026-08-17.
|
||||
Le découpage `0.2.2`–`0.2.4` est un **maximum nominal de trois sessions**. Une session peut clôturer plusieurs releases successives si, après la clôture complète de chacune, le sizing de la suivante reste positif. Cette optimisation de session ne fusionne jamais les releases elles-mêmes.
|
||||
|
||||
Chaque release HTTP `0.2.2`–`0.2.4` commence par une **revérification officielle temporelle** de sa famille et de l'index global. Si Solana ajoute/supprime/change une méthode entre-temps, la matrice est mise à jour explicitement plutôt que de conserver aveuglément l'état du 2026-08-17.
|
||||
|
||||
## 24. Gate de sizing — réponse obligatoire
|
||||
|
||||
|
||||
Reference in New Issue
Block a user