v0.2.2-rel.001

This commit is contained in:
2026-08-18 10:14:43 +02:00
parent c93a833bac
commit fff69ead9c
13 changed files with 293 additions and 90 deletions

View File

@@ -1,10 +1,14 @@
<!-- file: CHANGELOG.md --> <!-- file: CHANGELOG.md -->
<!-- version: 5 --> <!-- version: 6 -->
# 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.2 — HTTP Accounts + Tokens + Cluster — 2026-08-18
`0.2.2` complète la surface HTTP typée de `ksp-onchain-transport-lib` avec 22 wrappers supplémentaires : 5 Accounts, 5 Tokens et 12 Cluster, portant la couverture typée totale à 26 méthodes avec les quatre canaris foundation de `0.2.1`. La release stabilise les DTOs/configs wire communs, préserve les formes Account encodées/`jsonParsed`, les `null` et champs optionnels, les selectors Token exclusifs, les contextes RPC, les structures Cluster/leader/vote et les limites locales auditées (`getMultipleAccounts <= 100`, `getProgramAccounts <= 4` filtres, `memcmp` raw <= 128 octets, `getSlotLeaders` entre 1 et 5000). Les 22 descriptors restent `Read / RetrySafe` et passent exclusivement par le flux central `descriptor -> execute_standard_rpc -> pool/admission -> executor HTTP`. La release n'ajoute aucune dépendance externe, ne crée aucun client HTTP parallèle et conserve le firewall Transport -> Config/Store/Program. Elle ajoute un smoke Devnet pur à Transport avec settings programmatiques couvrant Accounts/Tokens/Cluster, conserve séparément le smoke historique Config -> Transport comme exception transitoire, et valide les deux explicitement avant publication. Les canaries figent toujours 52 méthodes HTTP courantes, 14 historiques Deprecated/Removed et la partition typed `4 / 22 / 11 / 15`. Le prompt `prompts/008-V0_2_3_START_PROMPT.md` ouvre `0.2.3 — HTTP Transactions`.
## 0.2.1 — HTTP Solana foundation — 2026-08-17 ## 0.2.1 — HTTP Solana foundation — 2026-08-17
`0.2.1` stabilise `ksp-onchain-transport-lib` comme foundation HTTP JSON-RPC Solana provider-neutral : settings publics, endpoints/pool/rôles, priorités et fairness, RPS/burst/concurrence/cooldown, deadline commune, retry/backoff, classification no-resend après dispatch ambigu, snapshots sûrs et exécution HTTP réelle via `reqwest`/rustls. La release fige un registre audité de 52 méthodes HTTP courantes et 14 méthodes historiques Deprecated/Removed, avec quatre wrappers typés canari (`getBalance`, `getGenesisHash`, `getHealth`, `getVersion`) et une partition explicite des 48 méthodes restantes sur `0.2.2``0.2.4`. Elle ajoute `std.transport`, son schema/exemple et l'adapter `ksp-config-lib -> ksp-onchain-transport-lib`, sans dépendance inverse, ainsi que la redaction des URLs/provider credentials, la neutralisation des URLs contenues dans les `reqwest::Error`, un sink Logging Transport dédié à `info`, des fixtures HTTP déterministes, des canaries de complétude et un smoke Devnet opt-in validant la composition Config -> Transport. Le smoke cross-crates reste temporairement hébergé dans Config et doit migrer vers une future surface d'intégration/orchestration ; ce placement n'est pas un modèle pour les futurs smokes `Config + autre crate`. Le prompt `prompts/007-V0_2_2_START_PROMPT.md` ouvre `0.2.2 — HTTP Accounts + Tokens + Cluster`. `0.2.1` stabilise `ksp-onchain-transport-lib` comme foundation HTTP JSON-RPC Solana provider-neutral : settings publics, endpoints/pool/rôles, priorités et fairness, RPS/burst/concurrence/cooldown, deadline commune, retry/backoff, classification no-resend après dispatch ambigu, snapshots sûrs et exécution HTTP réelle via `reqwest`/rustls. La release fige un registre audité de 52 méthodes HTTP courantes et 14 méthodes historiques Deprecated/Removed, avec quatre wrappers typés canari (`getBalance`, `getGenesisHash`, `getHealth`, `getVersion`) et une partition explicite des 48 méthodes restantes sur `0.2.2``0.2.4`. Elle ajoute `std.transport`, son schema/exemple et l'adapter `ksp-config-lib -> ksp-onchain-transport-lib`, sans dépendance inverse, ainsi que la redaction des URLs/provider credentials, la neutralisation des URLs contenues dans les `reqwest::Error`, un sink Logging Transport dédié à `info`, des fixtures HTTP déterministes, des canaries de complétude et un smoke Devnet opt-in validant la composition Config -> Transport. Le smoke cross-crates reste temporairement hébergé dans Config et doit migrer vers une future surface d'intégration/orchestration ; ce placement n'est pas un modèle pour les futurs smokes `Config + autre crate`. Le prompt `prompts/007-V0_2_2_START_PROMPT.md` ouvre `0.2.2 — HTTP Accounts + Tokens + Cluster`.

View File

@@ -1,12 +1,12 @@
# file: Cargo.toml # file: Cargo.toml
# version: 118 # version: 119
[workspace] [workspace]
resolver = "3" resolver = "3"
members = ["crates/ksp-app-config-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib", "crates/ksp-onchain-transport-lib"] members = ["crates/ksp-app-config-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib", "crates/ksp-onchain-transport-lib"]
[workspace.package] [workspace.package]
version = "0.2.2-pre.7.fix.2" version = "0.2.2"
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"

View File

@@ -1,5 +1,5 @@
<!-- file: ROADMAP.md --> <!-- file: ROADMAP.md -->
<!-- version: 36 --> <!-- version: 37 -->
# Roadmap KSP # Roadmap KSP
@@ -46,7 +46,7 @@ Le roadmap décrit les objectifs à atteindre et les grandes étapes prévues. U
### Releases fonctionnelles décidées/pressenties ### Releases fonctionnelles décidées/pressenties
- [X] `0.2.1`**HTTP transport foundation réduite par le gate `pre.001`** : crate/settings/JSON-RPC/registry 52 current + 14 deprecated historiques, pool/rôles/limites/retry, Config adapter, documentation et 4 méthodes typées canari (`getBalance`, `getGenesisHash`, `getHealth`, `getVersion`) publiés stables. - [X] `0.2.1`**HTTP transport foundation réduite par le gate `pre.001`** : crate/settings/JSON-RPC/registry 52 current + 14 deprecated historiques, pool/rôles/limites/retry, Config adapter, documentation et 4 méthodes typées canari (`getBalance`, `getGenesisHash`, `getHealth`, `getVersion`) publiés stables.
- [/] `0.2.2` — HTTP Accounts + Tokens + Cluster : candidate `pre.007` avec 22 wrappers typés (5 Accounts + 5 Tokens + 12 Cluster), canaries de complétude, smoke Devnet Transport opt-in et documentation de clôture ; publication stable encore requise. - [X] `0.2.2` — HTTP Accounts + Tokens + Cluster : 22 wrappers typés (5 Accounts + 5 Tokens + 12 Cluster), canaries de complétude 52+14, smoke Devnet Transport pur et smoke historique Config -> Transport validés, documentation durable et prompt `0.2.3` publiés stables.
- [ ] `0.2.3` — Compléter les 11 méthodes HTTP Transactions, y compris write/submission technique avec politique no-resend ambigu. - [ ] `0.2.3` — Compléter les 11 méthodes HTTP Transactions, y compris write/submission technique avec politique no-resend ambigu.
- [ ] `0.2.4` — Compléter les 10 méthodes HTTP Blocks + 5 Economics et exécuter la compliance finale de toute la surface HTTP 52 current + 14 deprecated historiques. - [ ] `0.2.4` — Compléter les 10 méthodes HTTP Blocks + 5 Economics et exécuter la compliance finale de toute la surface HTTP 52 current + 14 deprecated historiques.
- [ ] `0.2.5` — Introduire `ksp-wallet-lib`, le format `.kspwallet`, la gestion sûre des secrets et une architecture d'import/export extensible ; exclure `WalletPolicy`. - [ ] `0.2.5` — Introduire `ksp-wallet-lib`, le format `.kspwallet`, la gestion sûre des secrets et une architecture d'import/export extensible ; exclure `WalletPolicy`.

View File

@@ -1,5 +1,5 @@
<!-- file: crates/ksp-onchain-transport-lib/README.md --> <!-- file: crates/ksp-onchain-transport-lib/README.md -->
<!-- version: 4 --> <!-- version: 5 -->
# `ksp-onchain-transport-lib` # `ksp-onchain-transport-lib`
@@ -69,7 +69,7 @@ Le registre porte notamment :
- remplacement historique éventuel ; - remplacement historique éventuel ;
- release de couverture typée KSP. - release de couverture typée KSP.
La surface typée candidate après `0.2.2-pre.007` contient **26 méthodes** : La surface typée stable après `0.2.2` contient **26 méthodes** :
```text ```text
0.2.1 foundation : 4 0.2.1 foundation : 4
@@ -137,5 +137,5 @@ Les deux sont `ignored` par défaut. Le smoke Transport appartient durablement
- [`USAGE.md`](USAGE.md) — consommation directe, Config -> Transport, API typed/raw, smokes et inspection runtime ; - [`USAGE.md`](USAGE.md) — consommation directe, Config -> Transport, API typed/raw, smokes et inspection runtime ;
- [`../../docs/plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md`](../../docs/plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md) — foundation HTTP stable ; - [`../../docs/plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md`](../../docs/plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md) — foundation HTTP stable ;
- [`../../docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md`](../../docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md) — extension typed Accounts/Tokens/Cluster ; - [`../../docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md`](../../docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md) — extension typed Accounts/Tokens/Cluster ;
- [`../../docs/validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md`](../../docs/validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md) — matrice de clôture candidate `0.2.2` ; - [`../../docs/validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md`](../../docs/validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md) — matrice finale validée `0.2.2` ;
- [`../../config/std.transport.json`](../../config/std.transport.json) — configuration standard HTTP. - [`../../config/std.transport.json`](../../config/std.transport.json) — configuration standard HTTP.

View File

@@ -1,5 +1,5 @@
<!-- file: crates/ksp-onchain-transport-lib/USAGE.md --> <!-- file: crates/ksp-onchain-transport-lib/USAGE.md -->
<!-- version: 4 --> <!-- version: 5 -->
# Utilisation de `ksp-onchain-transport-lib` # Utilisation de `ksp-onchain-transport-lib`
@@ -96,7 +96,7 @@ let epoch = pool.get_epoch_info(&role, None).await;
let vote_accounts = pool.get_vote_accounts(&role, None).await; let vote_accounts = pool.get_vote_accounts(&role, None).await;
``` ```
La surface candidate contient 26 wrappers typés au total : 4 foundation + 5 Accounts + 5 Tokens + 12 Cluster. Les DTOs Transport conservent les `null`, options et formes wire : données Account encodées/`jsonParsed`, `TokenAmount.uiAmount`, contexte RPC, nodes, epoch, leader schedule et vote accounts. Aucun décodage Program/SPL métier n'est effectué ici. La surface stable `0.2.2` contient 26 wrappers typés au total : 4 foundation + 5 Accounts + 5 Tokens + 12 Cluster. Les DTOs Transport conservent les `null`, options et formes wire : données Account encodées/`jsonParsed`, `TokenAmount.uiAmount`, contexte RPC, nodes, epoch, leader schedule et vote accounts. Aucun décodage Program/SPL métier n'est effectué ici.
## 4. Exécution JSON-RPC standard générique ## 4. Exécution JSON-RPC standard générique

154
deltas/0.2.2/rel.001.md Normal file
View File

@@ -0,0 +1,154 @@
<!-- file: deltas/0.2.2/rel.001.md -->
<!-- version: 1 -->
# Delta `v0.2.2-rel.001`
## Base
Base attendue :
```text
v0.2.2-pre.007-fix.002
```
Version Cargo cible :
```text
0.2.2
```
La candidate corrigée a été validée localement par l'opérateur le 2026-08-18 avec `cargo fmt --all`, `cargo check --workspace`, `cargo clippy --workspace --all-targets`, `cargo test -p ksp-onchain-transport-lib`, `cargo test --workspace` et les deux smokes Devnet opt-in.
## Objectif
Publier `0.2.2 — HTTP Accounts + Tokens + Cluster` sans ajouter de capacité fonctionnelle après `pre.007-fix.002`.
`rel.001` est strictement publicationnelle :
- passage du workspace à la version stable `0.2.2` ;
- clôture `[X]` de `0.2.2` dans le ROADMAP ;
- ajout de l'entrée stable `0.2.2` au CHANGELOG ;
- clôture du plan `009` et de la matrice `validation/004` avec les preuves opérateur ;
- synchronisation des index, de l'inventaire composant et des README/USAGE Transport vers le statut stable ;
- conservation du prompt `prompts/008-V0_2_3_START_PROMPT.md` comme point d'ouverture de `0.2.3`.
Aucun fichier Rust de production, aucune API publique, aucune configuration runtime, aucune dépendance et aucune feature Cargo ne changent dans cette livraison.
## Surface stable publiée
`0.2.2` ajoute exactement 22 wrappers typés :
```text
Accounts : 5
Tokens : 5
Cluster : 12
```
Avec les quatre wrappers foundation de `0.2.1`, la surface typée HTTP atteint :
```text
26 wrappers typed
52 méthodes HTTP courantes enregistrées
14 méthodes historiques Deprecated / Removed
partition restante : 11 Transactions + 15 Blocks/Economics
```
Les 22 descriptors `0.2.2` restent `Read / RetrySafe` et utilisent tous le flux central `descriptor -> execute_standard_rpc -> pool/admission -> executor HTTP`.
Contrats stabilisés notamment : Account legacy/encoded/`jsonParsed`, comptes absents `null`, Program Accounts bare/contextualisés, Token selector `Mint | ProgramId`, `TokenAmount.uiAmount` nullable, `ClusterNode.clientId` optionnel, epoch/snapshot nullable, leader schedule nullable et Vote Accounts avec `inflationRewardsCommissionBps` optionnel.
Limites locales publiées :
```text
getMultipleAccounts <= 100
getProgramAccounts <= 4 filtres
memcmp raw <= 128 octets
getSlotLeaders 1..=5000
```
## Validation de la candidate
La candidate `0.2.2-pre.007-fix.002` a confirmé :
```text
cargo fmt --all OK
cargo check --workspace OK
cargo clippy --workspace --all-targets OK, sans warning
cargo test -p ksp-onchain-transport-lib OK
cargo test --workspace OK
```
Transport :
```text
127 unit
13 public API
7 release completeness
1 smoke live ignored par défaut
```
Les deux smokes ont ensuite été exécutés explicitement :
```text
Transport pur : settings programmatiques -> Accounts/Tokens/Cluster 1 passed
Config -> Transport -> foundation 1 passed
```
Le smoke Transport utilise `getAccountInfo`, `getTokenAccountsByOwner` sous sa forme Devnet documentée complète, `getEpochInfo` et `getVoteAccounts`. Il appartient à Transport parce qu'il construit ses settings programmatiquement. Le smoke Config -> Transport reste une exception transitoire cross-crates et doit migrer vers une future surface d'intégration/orchestration/demo lorsqu'elle existera.
Les graphes Cargo Transport/Config ont été inspectés pendant la candidate. Les fixes du smoke n'ont ajouté ni dépendance ni feature. La frontière reste :
```text
ksp-config-lib -> ksp-onchain-transport-lib
ksp-onchain-transport-lib -X-> ksp-config-lib
Transport -X-> Store/Program/tracing direct
```
Les doublons observés restent limités à `syn` 2.x/3.x dans les chaînes transitive/proc-macro ; aucune seconde stack HTTP/Tokio KSP n'est introduite.
## Documentation de clôture
Mises à jour :
```text
CHANGELOG.md
ROADMAP.md
crates/ksp-onchain-transport-lib/README.md
crates/ksp-onchain-transport-lib/USAGE.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/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md
docs/validation/000-README.md
docs/validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md
```
Le prompt `prompts/008-V0_2_3_START_PROMPT.md` était déjà livré en `pre.007` et reste inchangé ; il attend comme base le tag stable `v0.2.2`.
## Commit et tag
Identifiant de commit attendu :
```text
v0.2.2-rel.001
```
Le tag stable ne doit être créé qu'après application et validation de ce delta :
```text
v0.2.2
```
## Validation finale après application
Comme `rel.001` ne modifie aucun code de production et ne change que le signal de version et la documentation, la gate finale reste :
```bash
cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test --workspace
```
Après succès : commit `v0.2.2-rel.001`, puis création du tag `v0.2.2`.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/000-README.md --> <!-- file: docs/000-README.md -->
<!-- version: 26 --> <!-- version: 27 -->
# Documentation KSP # Documentation KSP
@@ -63,7 +63,7 @@ D'autres sous-répertoires seront ajoutés uniquement lorsque leur rôle aura é
## Documents de planification ## 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). La release stable `0.2.1 — HTTP Solana foundation` a été ouverte par [`../prompts/006-V0_2_1_START_PROMPT.md`](../prompts/006-V0_2_1_START_PROMPT.md). Son gate de sizing et sa matrice exhaustive sont conservés dans [`plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md`](plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md), avec la validation finale [`validation/003-V0_2_1_ONCHAIN_HTTP.md`](validation/003-V0_2_1_ONCHAIN_HTTP.md), README/USAGE Transport et le smoke Devnet opt-in de composition Config -> Transport. Le prompt [`../prompts/007-V0_2_2_START_PROMPT.md`](../prompts/007-V0_2_2_START_PROMPT.md) a ouvert `0.2.2`. Le plan [`plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md`](plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md) est amené en clôture candidate par `pre.007` avec les 22 wrappers typés Accounts/Tokens/Cluster, un smoke Devnet Transport pur et la matrice [`validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md`](validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md). Le prompt [`../prompts/008-V0_2_3_START_PROMPT.md`](../prompts/008-V0_2_3_START_PROMPT.md) prépare la release suivante `0.2.3 — HTTP Transactions`. 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). La release stable `0.2.1 — HTTP Solana foundation` a été ouverte par [`../prompts/006-V0_2_1_START_PROMPT.md`](../prompts/006-V0_2_1_START_PROMPT.md). Son gate de sizing et sa matrice exhaustive sont conservés dans [`plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md`](plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md), avec la validation finale [`validation/003-V0_2_1_ONCHAIN_HTTP.md`](validation/003-V0_2_1_ONCHAIN_HTTP.md), README/USAGE Transport et le smoke Devnet opt-in de composition Config -> Transport. Le prompt [`../prompts/007-V0_2_2_START_PROMPT.md`](../prompts/007-V0_2_2_START_PROMPT.md) a ouvert la release stable `0.2.2 — HTTP Accounts + Tokens + Cluster`. Son plan clôturé [`plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md`](plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md) conserve l'audit et l'implémentation des 22 wrappers typés, tandis que [`validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md`](validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md) enregistre les validations déterministes, les graphes Cargo et les deux smokes Devnet passés avant publication. Le prompt [`../prompts/008-V0_2_3_START_PROMPT.md`](../prompts/008-V0_2_3_START_PROMPT.md) ouvre la release suivante `0.2.3 — HTTP Transactions`.
`IDEAS.md` conserve les pistes et questions qui ne sont pas encore des engagements du roadmap ni des décisions architecturales. `IDEAS.md` conserve les pistes et questions qui ne sont pas encore des engagements du roadmap ni des décisions architecturales.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/architecture/004-COMPONENT_INVENTORY.md --> <!-- file: docs/architecture/004-COMPONENT_INVENTORY.md -->
<!-- version: 9 --> <!-- version: 10 -->
# Inventaire initial des composants KSP # Inventaire initial des composants KSP
@@ -17,41 +17,41 @@ Ce document maintient l'inventaire synthétique des composants retenus ou presse
## Inventaire synthétique ## Inventaire synthétique
| Domaine | Composant | Type | Statut | Première cible actuelle | Mission | | Domaine | Composant | Type | Statut | Première cible actuelle | Mission |
|-------------------------|------------------------------------------|--------------------|--------------|---------------------------------|-----------------------------------------------------------| |-------------------------|------------------------------------------|--------------------|--------------|---------------------------------|----------------------------------------------------------|
| Core | `ksp-core-lib` | lib | Stable | `0.1.1` | Error/Result, Program IDs et primitives fondamentales | | Core | `ksp-core-lib` | lib | Stable | `0.1.1` | Error/Result, Program IDs et primitives fondamentales |
| Logging | `ksp-logging-lib` | lib | Stable | `0.1.2` | façade unique tracing KSP | | Logging | `ksp-logging-lib` | lib | Stable | `0.1.2` | façade unique tracing KSP |
| Config | `ksp-config-lib` | lib | Stable | `0.1.3` | documents, profils, env et persistence Config | | 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 | | 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` | foundation HTTP + 26 wrappers typés après candidate 0.2.2 | | On-chain HTTP | `ksp-onchain-transport-lib` | lib | Stable | `0.2.1` | foundation HTTP + 26 wrappers typés stables après 0.2.2 |
| Wallet | `ksp-wallet-lib` | lib | Retenu | `0.2.5` | `.kspwallet`, secrets, signature, import/export | | 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 | | 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 | | 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 | | 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 | | 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 | | 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 | | 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 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 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` | | 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 | | Store API | `ksp-store-api` | API | Retenu | `0.3.1` | contrats persistence backend-agnostic, RAW d'abord |
| Store PostgreSQL | `ksp-store-lib` | lib | Retenu | `0.3.1` | backend PostgreSQL officiel, RAW d'abord | | Store PostgreSQL | `ksp-store-lib` | lib | Retenu | `0.3.1` | backend PostgreSQL officiel, RAW d'abord |
| Job lifecycle | `ksp-job-api` | API | Retenu | `0.3.3` | lifecycle des jobs terminables | | Job lifecycle | `ksp-job-api` | API | Retenu | `0.3.3` | lifecycle des jobs terminables |
| Backfill | `ksp-job-backfill` | job/lib à préciser | Retenu | `0.3.3` | acquisition historique vers RAW | | Backfill | `ksp-job-backfill` | job/lib à préciser | Retenu | `0.3.3` | acquisition historique vers RAW |
| Backfill Desk | nom à fixer | app | Retenu | `0.3.4` | contrôle/inspection du backfill RAW | | Backfill Desk | nom à fixer | app | Retenu | `0.3.4` | contrôle/inspection du backfill RAW |
| Worker lifecycle | `ksp-worker-api` | API | Retenu | fin couche RAW | lifecycle des services continus | | Worker lifecycle | `ksp-worker-api` | API | Retenu | fin couche RAW | lifecycle des services continus |
| RAW worker | `ksp-worker-raw-retriever` ou nom révisé | worker | Retenu | fin couche RAW | acquisition live vers RAW | | RAW worker | `ksp-worker-raw-retriever` ou nom révisé | worker | Retenu | fin couche RAW | acquisition live vers RAW |
| CORE processor | nom à fixer | processor/lib | Retenu | couche CORE | normalisation Solana générique RAW -> CORE | | CORE processor | nom à fixer | processor/lib | Retenu | couche CORE | normalisation Solana générique RAW -> CORE |
| CORE worker | nom à fixer | worker | Retenu | fin couche CORE | backlog RAW -> CORE continu | | CORE worker | nom à fixer | worker | Retenu | fin couche CORE | backlog RAW -> CORE continu |
| Materializer API | `ksp-materializer-api` | API | Retenu | premier groupe DECODE | contrats extensibles matérialisation | | Materializer API | `ksp-materializer-api` | API | Retenu | premier groupe DECODE | contrats extensibles matérialisation |
| Materializer impl. | `ksp-materializer-lib` | lib | Retenu | premier groupe DECODE | implementations officielles communes | | Materializer impl. | `ksp-materializer-lib` | lib | Retenu | premier groupe DECODE | implementations officielles communes |
| Execution policy | `ksp-execution-policy-api` | API | Retenu | premier vrai besoin execution | décision/safety multi-contexte | | Execution policy | `ksp-execution-policy-api` | API | Retenu | premier vrai besoin execution | décision/safety multi-contexte |
| Execution orchestration | `ksp-execution-lib` | lib | Retenu | premier vrai cycle execution | Program + policy + Wallet + transport | | Execution orchestration | `ksp-execution-lib` | lib | Retenu | premier vrai cycle execution | Program + policy + Wallet + transport |
| Scenarios | `ksp-scenario-<domain>-lib` | lib | Retenu | vertical slices | validation métier/devnet par groupe | | Scenarios | `ksp-scenario-<domain>-lib` | lib | Retenu | vertical slices | validation métier/devnet par groupe |
| Scenario API | `ksp-scenario-api` | API | Non retenu | — | norme souple avant trait commun | | Scenario API | `ksp-scenario-api` | API | Non retenu | — | norme souple avant trait commun |
| Market Desk | `ksp-app-market-desk` | app | Pressenti | après Meteora/Raydium/Pump/Orca | tokens, pools, trades, liquidity, price, OHLC | | Market Desk | `ksp-app-market-desk` | app | Pressenti | après Meteora/Raydium/Pump/Orca | tokens, pools, trades, liquidity, price, OHLC |
| Trading Intelligence | noms à définir | libs/jobs | Futur | après données stables | features/signaux/anomalies/ML | | Trading Intelligence | noms à définir | libs/jobs | Futur | après données stables | features/signaux/anomalies/ML |
## Contrats séparés retenus ## Contrats séparés retenus
@@ -78,7 +78,7 @@ ksp-data-api
## Transport ## Transport
`ksp-onchain-transport-lib` doit couvrir l'intégralité des opérations documentées de la surface ciblée par chaque release. `0.2.1` stabilise la foundation HTTP et quatre wrappers typés canari. La candidate `0.2.2-pre.007` ajoute les 22 wrappers Accounts/Tokens/Cluster, soit 26 wrappers typés au total ; les 26 méthodes Transactions/Blocks/Economics restantes restent affectées à `0.2.3``0.2.4`. Les statuts deprecated/obsolete encore fonctionnels et unstable/experimental restent exposés avec warning runtime KSP. `ksp-onchain-transport-lib` doit couvrir l'intégralité des opérations documentées de la surface ciblée par chaque release. `0.2.1` stabilise la foundation HTTP et quatre wrappers typés canari. `0.2.2` stabilise 22 wrappers Accounts/Tokens/Cluster supplémentaires, soit 26 wrappers typés au total ; les 26 méthodes Transactions/Blocks/Economics restantes restent affectées à `0.2.3``0.2.4`. Les statuts deprecated/obsolete encore fonctionnels et unstable/experimental restent exposés avec warning runtime KSP.
La Config standard Transport appartient à `ksp-config-lib`, qui adapte vers les settings publics du transport ; le transport ne dépend jamais de Config. La Config standard Transport appartient à `ksp-config-lib`, qui adapte vers les settings publics du transport ; le transport ne dépend jamais de Config.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/000-README.md --> <!-- file: docs/plans/000-README.md -->
<!-- version: 33 --> <!-- version: 34 -->
# Plans KSP # Plans KSP
@@ -17,7 +17,7 @@ Un plan décrit le périmètre, les décisions déjà acquises, les questions ou
- [`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`. - [`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`. - [`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 de `0.2.1`, établi par `0.2.1-pre.001`, recalibré par `pre.001-fix.001` et amené en clôture candidate par `pre.007`; il conserve l'inventaire 52 méthodes HTTP courantes + 14 Deprecated historiques, le design Transport/Config et le split de couverture typée sur `0.2.1``0.2.4`. - [`008-V0_2_1_ONCHAIN_HTTP_PLAN.md`](008-V0_2_1_ONCHAIN_HTTP_PLAN.md) — plan de `0.2.1`, établi par `0.2.1-pre.001`, recalibré par `pre.001-fix.001` et amené en clôture candidate par `pre.007`; il conserve l'inventaire 52 méthodes HTTP courantes + 14 Deprecated historiques, le design Transport/Config et le split de couverture typée sur `0.2.1``0.2.4`.
- [`009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md`](009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md) — plan de `0.2.2`, établi par `pre.001`, corrigé par `pre.001-fix.001` après réaudit Agave v4.2.1 puis amené en clôture candidate par `pre.007`; il couvre les 22 wrappers Accounts/Tokens/Cluster, le smoke Transport opt-in et la préparation de `0.2.3`. - [`009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md`](009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md) — plan clôturé de la release stable `0.2.2`, établi par `pre.001`, corrigé après réaudit Agave v4.2.1 puis exécuté jusqu'à `pre.007-fix.002`; il couvre les 22 wrappers Accounts/Tokens/Cluster, le smoke Transport opt-in et la préparation de `0.2.3`.
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.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md --> <!-- file: docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md -->
<!-- version: 35 --> <!-- version: 36 -->
# Séquence des releases fonctionnelles KSP # Séquence des releases fonctionnelles KSP
@@ -390,7 +390,7 @@ Ces trois releases constituent le découpage nominal, pas une obligation de troi
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. 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.2-pre.001` a confirmé la partition de 22 méthodes et son fix documentaire a recoupé les formes wire avec Agave v4.2.1. Les tranches `pre.002``pre.006` ont livré les DTOs puis les 5 Accounts, 5 Tokens et 12 Cluster. `pre.007` constitue la candidate de clôture : canary exacte 22/22, smoke Devnet Transport pur, README/USAGE, matrice de validation `004` et prompt `0.2.3`. Le smoke cross-crates Config -> Transport de `0.2.1` reste séparé et transitoire. `0.2.2-pre.001` a confirmé la partition de 22 méthodes et son fix documentaire a recoupé les formes wire avec Agave v4.2.1. Les tranches `pre.002``pre.006` ont livré les DTOs puis les 5 Accounts, 5 Tokens et 12 Cluster. `pre.007`, puis `pre.007-fix.001` et `pre.007-fix.002`, ont fermé les canaries exactes 22/22, le smoke Devnet Transport pur, README/USAGE, la matrice de validation `004` et le prompt `0.2.3`. `0.2.2-rel.001` publie cette surface stable après validation du workspace et des deux smokes Devnet. Le smoke cross-crates Config -> Transport de `0.2.1` reste séparé et transitoire.
## `0.2.5` — Wallet foundation ## `0.2.5` — Wallet foundation

View File

@@ -1,11 +1,11 @@
<!-- file: docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md --> <!-- file: docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md -->
<!-- version: 6 --> <!-- version: 7 -->
# Plan `0.2.2` — HTTP Accounts + Tokens + Cluster # Plan `0.2.2` — HTTP Accounts + Tokens + Cluster
## Statut ## Statut
Ce plan, ouvert par `0.2.2-pre.001` sur la base stable `v0.2.1`, est amené en clôture candidate par `0.2.2-pre.007`. Ce plan, ouvert par `0.2.2-pre.001` sur la base stable `v0.2.1`, est clôturé par `0.2.2-rel.001` après validation de la candidate `0.2.2-pre.007-fix.002`.
`0.2.1` a déjà stabilisé la foundation HTTP commune : settings, endpoints/pool/rôles, admission et limites, retry, JSON-RPC 2.0, `0.2.1` a déjà stabilisé la foundation HTTP commune : settings, endpoints/pool/rôles, admission et limites, retry, JSON-RPC 2.0,
registry des méthodes, exécution HTTP générique, adapter Config -> Transport et quatre wrappers typés canari. registry des méthodes, exécution HTTP générique, adapter Config -> Transport et quatre wrappers typés canari.
@@ -454,7 +454,7 @@ Un smoke Devnet opt-in pourra couvrir un sous-ensemble représentatif, sans jama
Le découpage est volontairement asymétrique : `pre.006` contient moins de méthodes mais les formes les plus complexes. Toute tranche qui dépasse Le découpage est volontairement asymétrique : `pre.006` contient moins de méthodes mais les formes les plus complexes. Toute tranche qui dépasse
le budget est scindée en une prerelease supplémentaire plutôt que compressée. le budget est scindée en une prerelease supplémentaire plutôt que compressée.
## État de la candidate `pre.007` ## État final publié
Les tranches fonctionnelles ont livré la surface prévue sans nouvelle dépendance externe : Les tranches fonctionnelles ont livré la surface prévue sans nouvelle dépendance externe :
@@ -467,7 +467,7 @@ pre.006 : 5 Cluster restants
pre.007 : clôture candidate pre.007 : clôture candidate
``` ```
La surface typed candidate est donc : La surface typed stable est donc :
```text ```text
0.2.1 : 4 wrappers foundation 0.2.1 : 4 wrappers foundation
@@ -484,7 +484,40 @@ Un smoke Devnet opt-in **propre à Transport** est ajouté sous `crates/ksp-onch
`pre.007-fix.002` corrige la deuxième exécution opérateur : le scénario `getTokenAccountsByOwner(System Program, { programId })` sans troisième paramètre a renvoyé RPC `-32600` sur le RPC public Devnet, alors que les validations déterministes et le smoke Config -> Transport restaient verts. Le smoke adopte donc la forme complète de l'exemple RPC public (`owner` ordinaire + `{ programId }` + config `finalized/jsonParsed`) sans modifier le contrat optionnel du wrapper. `pre.007-fix.002` corrige la deuxième exécution opérateur : le scénario `getTokenAccountsByOwner(System Program, { programId })` sans troisième paramètre a renvoyé RPC `-32600` sur le RPC public Devnet, alors que les validations déterministes et le smoke Config -> Transport restaient verts. Le smoke adopte donc la forme complète de l'exemple RPC public (`owner` ordinaire + `{ programId }` + config `finalized/jsonParsed`) sans modifier le contrat optionnel du wrapper.
La matrice durable de clôture est `docs/validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md` et le prompt suivant est `prompts/008-V0_2_3_START_PROMPT.md`. `CHANGELOG.md` reste réservé à `rel.001`. La matrice durable de clôture est `docs/validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md` et le prompt suivant est `prompts/008-V0_2_3_START_PROMPT.md`. `0.2.2-rel.001` publie la release stable et ajoute son entrée au `CHANGELOG.md`.
## Validation de clôture observée
La candidate finale `0.2.2-pre.007-fix.002` a été validée par l'opérateur le 2026-08-18 :
```text
cargo fmt --all OK
cargo check --workspace OK
cargo clippy --workspace --all-targets OK, sans warning
cargo test -p ksp-onchain-transport-lib OK
cargo test --workspace OK
smoke Transport pur Devnet 1 passed
smoke Config -> Transport -> Devnet 1 passed
```
La suite Transport confirme :
```text
127 unit tests
13 public API tests
7 release completeness tests
1 smoke Transport ignored par défaut
```
Les graphes Cargo Transport et Config avaient été inspectés pendant la candidate avant les fixes du smoke. `pre.007-fix.001` et `pre.007-fix.002` ne modifient aucune dépendance ni feature ; ils changent uniquement le scénario live, sa documentation et le signal de version. La frontière reste donc :
```text
ksp-config-lib -> ksp-onchain-transport-lib
ksp-onchain-transport-lib -X-> ksp-config-lib
Transport -X-> Store/Program/tracing direct
```
Les doublons visibles sur le graphe inspecté restent limités aux générations `syn` 2.x/3.x de chaînes transitive/proc-macro ; aucune seconde stack HTTP/Tokio KSP n'est introduite.
## Hors périmètre ## Hors périmètre
@@ -499,7 +532,7 @@ Sont exclus de `0.2.2` :
- modification de Config sans besoin concret ; - modification de Config sans besoin concret ;
- ajout de dépendances de décodage pour simple représentation wire. - ajout de dépendances de décodage pour simple représentation wire.
## Validations prévues ## Validations de référence
Pendant le développement : Pendant le développement :
@@ -529,7 +562,7 @@ cargo tree -p ksp-onchain-transport-lib -e normal
## Critères de clôture `0.2.2` ## Critères de clôture `0.2.2`
`0.2.2` ne devient stable que lorsque : Les critères suivants sont satisfaits par `0.2.2-rel.001` :
- la matrice officielle est réauditée une dernière fois ; - la matrice officielle est réauditée une dernière fois ;
- les 22 méthodes de ce plan ont chacune un wrapper public typé et leurs tests ; - les 22 méthodes de ce plan ont chacune un wrapper public typé et leurs tests ;
@@ -540,4 +573,4 @@ cargo tree -p ksp-onchain-transport-lib -e normal
- README/USAGE et validation durable sont synchronisés ; - README/USAGE et validation durable sont synchronisés ;
- les commandes Cargo finales réellement exécutables passent ; - les commandes Cargo finales réellement exécutables passent ;
- le prompt `0.2.3 — HTTP Transactions` est prêt ; - le prompt `0.2.3 — HTTP Transactions` est prêt ;
- `rel.001` ne contient plus de développement fonctionnel nouveau. - `rel.001` ne contient aucun développement fonctionnel nouveau.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/000-README.md --> <!-- file: docs/validation/000-README.md -->
<!-- version: 5 --> <!-- version: 6 -->
# Validations KSP # Validations KSP
@@ -12,4 +12,4 @@ Documents :
- [`001-V0_1_4_CONFIG_DESKTOP.md`](001-V0_1_4_CONFIG_DESKTOP.md) — matrice finale de `0.1.4 — ksp-app-config-desk`. - [`001-V0_1_4_CONFIG_DESKTOP.md`](001-V0_1_4_CONFIG_DESKTOP.md) — matrice finale de `0.1.4 — ksp-app-config-desk`.
- [`002-V0_2_0_SERIES_PLANNING.md`](002-V0_2_0_SERIES_PLANNING.md) — matrice finale de la release stable `0.2.0`, avec audit de cohérence et preuves opérateur de `pre.003`. - [`002-V0_2_0_SERIES_PLANNING.md`](002-V0_2_0_SERIES_PLANNING.md) — matrice finale de la release stable `0.2.0`, avec audit de cohérence et preuves opérateur de `pre.003`.
- [`003-V0_2_1_ONCHAIN_HTTP.md`](003-V0_2_1_ONCHAIN_HTTP.md) — matrice de clôture de `0.2.1 — HTTP Solana foundation`, registry 52+14, résilience, Config -> Transport, quatre canaris et smoke Devnet opt-in. - [`003-V0_2_1_ONCHAIN_HTTP.md`](003-V0_2_1_ONCHAIN_HTTP.md) — matrice de clôture de `0.2.1 — HTTP Solana foundation`, registry 52+14, résilience, Config -> Transport, quatre canaris et smoke Devnet opt-in.
- [`004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md`](004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md) — matrice de clôture candidate de `0.2.2`, 22 wrappers Accounts/Tokens/Cluster, canaries 52+14, smoke Devnet Transport pur et préparation de `0.2.3`. - [`004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md`](004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md) — matrice finale validée de `0.2.2`, 22 wrappers Accounts/Tokens/Cluster, canaries 52+14, graphes Cargo, smoke Devnet Transport pur, smoke historique Config -> Transport et préparation de `0.2.3`.

View File

@@ -1,11 +1,11 @@
<!-- file: docs/validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md --> <!-- file: docs/validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md -->
<!-- version: 3 --> <!-- version: 4 -->
# Validation finale `0.2.2` — HTTP Accounts + Tokens + Cluster # Validation finale `0.2.2` — HTTP Accounts + Tokens + Cluster
## Statut ## Statut
Cette matrice accompagne la candidate `0.2.2-pre.007`. Elle ne publie pas encore la release stable : les preuves opérateur finales doivent être enregistrées avant `0.2.2-rel.001`. Cette matrice clôt la release stable `0.2.2`. Les preuves opérateur finales ont été enregistrées sur la candidate corrigée `0.2.2-pre.007-fix.002` avant `0.2.2-rel.001`.
Base fonctionnelle validée avant `pre.007` : Base fonctionnelle validée avant `pre.007` :
@@ -57,7 +57,7 @@ Cluster : 15 = getGenesisHash/getHealth/getVersion acquis en 0.2.1 + 12 en 0.2.
Aucune méthode `0.2.2` n'est reclassée Deprecated/Unstable. Les 22 descriptors restent `Stable / Supported / Read / RetrySafe`. Aucune méthode `0.2.2` n'est reclassée Deprecated/Unstable. Les 22 descriptors restent `Stable / Supported / Read / RetrySafe`.
## Surface typée candidate ## Surface typée stable
`0.2.2` ajoute exactement : `0.2.2` ajoute exactement :
@@ -68,7 +68,7 @@ Cluster : 12
Total : 22 Total : 22
``` ```
Avec les quatre canaris de `0.2.1`, Transport expose donc 26 wrappers typed à la candidate. Avec les quatre canaris de `0.2.1`, Transport expose donc 26 wrappers typed dans la release stable.
Les partitions futures restent intactes : Les partitions futures restent intactes :
@@ -81,7 +81,7 @@ L'API raw `execute_standard_rpc()` reste disponible mais ne compte pas comme cou
## Contrats wire à préserver ## Contrats wire à préserver
La candidate doit conserver notamment : La release stable conserve notamment :
- `Account.data` legacy / encoded / `jsonParsed` sans décodage Program ; - `Account.data` legacy / encoded / `jsonParsed` sans décodage Program ;
- `Account.space: Option<u64>` ; - `Account.space: Option<u64>` ;
@@ -121,7 +121,7 @@ partition == 4 / 22 / 11 / 15
historical => Deprecated + Removed + Historical + NotApplicable historical => Deprecated + Removed + Historical + NotApplicable
``` ```
Après `pre.007`, la suite attendue est : La suite stable confirmée est :
```text ```text
127 unit tests 127 unit tests
@@ -174,7 +174,7 @@ Ownership : ce smoke cross-crates est transitoire. `ksp-config-lib` ne doit pas
## Dépendances, sécurité et logging ## Dépendances, sécurité et logging
La candidate ne doit introduire : La release stable n'introduit :
```text ```text
aucune dépendance externe nouvelle aucune dépendance externe nouvelle
@@ -185,11 +185,11 @@ aucun client HTTP parallèle
Les invariants de sécurité `0.2.1` restent obligatoires : URL/provider credentials absents des diagnostics ordinaires, `reqwest::Error::without_url()` avant exposition comme source, aucune réponse/body massif journalisé par défaut. Les invariants de sécurité `0.2.1` restent obligatoires : URL/provider credentials absents des diagnostics ordinaires, `reqwest::Error::without_url()` avant exposition comme source, aucune réponse/body massif journalisé par défaut.
La baseline Logging Transport reste `info` avant publication stable. La baseline Logging Transport reste `info` dans la publication stable.
## Documentation candidate ## Documentation stable
Doivent être synchronisés : Sont synchronisés :
```text ```text
crates/ksp-onchain-transport-lib/README.md crates/ksp-onchain-transport-lib/README.md
@@ -201,20 +201,39 @@ ROADMAP.md
prompts/008-V0_2_3_START_PROMPT.md prompts/008-V0_2_3_START_PROMPT.md
``` ```
`CHANGELOG.md` reste volontairement inchangé avant `rel.001`. `0.2.2-rel.001` ajoute l'entrée stable au `CHANGELOG.md` sans modifier la surface fonctionnelle.
## Validations finales opérateur à exécuter sur `pre.007` ## Validations finales opérateur observées
Sur `0.2.2-pre.007-fix.002`, l'opérateur a exécuté le 2026-08-18 :
```bash ```bash
cargo fmt --all cargo fmt --all
cargo check --workspace cargo check --workspace
cargo clippy --workspace --all-targets cargo clippy --workspace --all-targets
cargo test -p ksp-onchain-transport-lib cargo test -p ksp-onchain-transport-lib
cargo test -p ksp-config-lib
cargo test -p ksp-core-lib
cargo test -p ksp-app-config-desk
cargo test --workspace cargo test --workspace
cargo test -p ksp-onchain-transport-lib --test transport_devnet_smoke -- --ignored --nocapture
cargo test -p ksp-config-lib --test transport_devnet_smoke -- --ignored --nocapture
```
Résultats :
```text
fmt/check/clippy : succès, aucun warning Clippy
Transport unit : 127 passed
Transport public : 13 passed
release canaries : 7 passed
workspace : succès
Transport smoke : 1 passed; 0 failed
Config smoke : 1 passed; 0 failed
```
Les suites normales conservent les smokes réseau sous `#[ignore]`; leur exécution explicite ci-dessus constitue la preuve live de clôture.
Les graphes suivants ont été inspectés pendant la candidate :
```bash
cargo tree -p ksp-onchain-transport-lib cargo tree -p ksp-onchain-transport-lib
cargo tree -p ksp-onchain-transport-lib -d cargo tree -p ksp-onchain-transport-lib -d
cargo tree -p ksp-onchain-transport-lib -e features cargo tree -p ksp-onchain-transport-lib -e features
@@ -225,27 +244,20 @@ cargo tree -p ksp-config-lib -e features
cargo tree -p ksp-config-lib -e normal cargo tree -p ksp-config-lib -e normal
``` ```
Puis les deux smokes opt-in : Les fixes `pre.007-fix.001` et `pre.007-fix.002` n'ajoutent ni dépendance ni feature. Le graphe reste conforme au firewall : Config peut dépendre de Transport, Transport ne dépend pas de Config/Store/Program et n'importe pas `tracing` directement. Les doublons constatés sur les graphes inspectés restent ceux de `syn` 2.x/3.x dans les chaînes transitive/proc-macro ; aucune stack HTTP/Tokio KSP concurrente n'est introduite.
```bash ## Publication `rel.001`
cargo test -p ksp-onchain-transport-lib --test transport_devnet_smoke -- --ignored --nocapture
cargo test -p ksp-config-lib --test transport_devnet_smoke -- --ignored --nocapture
```
Les résultats doivent être reportés dans `rel.001`; cette matrice ne les anticipe pas. `0.2.2-rel.001` reste strictement publicationnelle :
## Passage à `rel.001`
Si toutes les validations passent, `rel.001` doit rester strictement publicationnel :
```text ```text
workspace.package.version -> 0.2.2 workspace.package.version -> 0.2.2
ROADMAP : 0.2.2 -> [X] ROADMAP : 0.2.2 -> [X]
CHANGELOG : synthèse stable 0.2.2 CHANGELOG : synthèse stable 0.2.2
plan 009 / validation 004 : statut clôturé + preuves opérateur plan 009 / validation 004 : clôturés avec preuves opérateur
deltas/0.2.2/rel.001.md deltas/0.2.2/rel.001.md
commit v0.2.2-rel.001 commit v0.2.2-rel.001
tag stable v0.2.2 après validation du commit tag stable v0.2.2 après validation du commit
``` ```
Aucune nouvelle méthode HTTP, aucun nouveau DTO et aucun nouveau comportement runtime ne doivent apparaître dans `rel.001`. Aucune nouvelle méthode HTTP, aucun nouveau DTO et aucun nouveau comportement runtime n'apparaissent dans `rel.001`.