From fff69ead9c1085b3f02d13f176f59aa9f604c3f1 Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Tue, 18 Aug 2026 10:14:43 +0200 Subject: [PATCH] v0.2.2-rel.001 --- CHANGELOG.md | 6 +- Cargo.toml | 4 +- ROADMAP.md | 4 +- crates/ksp-onchain-transport-lib/README.md | 6 +- crates/ksp-onchain-transport-lib/USAGE.md | 4 +- deltas/0.2.2/rel.001.md | 154 ++++++++++++++++++ docs/000-README.md | 4 +- docs/architecture/004-COMPONENT_INVENTORY.md | 74 ++++----- docs/plans/000-README.md | 4 +- docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md | 4 +- ...0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md | 49 +++++- docs/validation/000-README.md | 4 +- ...004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md | 66 +++++--- 13 files changed, 293 insertions(+), 90 deletions(-) create mode 100644 deltas/0.2.2/rel.001.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 7bf42cc..83d6c52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,14 @@ - + # 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/`. +## 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` 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`. diff --git a/Cargo.toml b/Cargo.toml index 0679000..6b79c32 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 118 +# version: 119 [workspace] 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"] [workspace.package] -version = "0.2.2-pre.7.fix.2" +version = "0.2.2" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/ROADMAP.md b/ROADMAP.md index bb314c9..7a08d1b 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,5 +1,5 @@ - + # 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 - [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.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`. diff --git a/crates/ksp-onchain-transport-lib/README.md b/crates/ksp-onchain-transport-lib/README.md index d2d01a9..cc29a7b 100644 --- a/crates/ksp-onchain-transport-lib/README.md +++ b/crates/ksp-onchain-transport-lib/README.md @@ -1,5 +1,5 @@ - + # `ksp-onchain-transport-lib` @@ -69,7 +69,7 @@ Le registre porte notamment : - remplacement historique éventuel ; - 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 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 ; - [`../../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/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. diff --git a/crates/ksp-onchain-transport-lib/USAGE.md b/crates/ksp-onchain-transport-lib/USAGE.md index 94d1be7..2f4014a 100644 --- a/crates/ksp-onchain-transport-lib/USAGE.md +++ b/crates/ksp-onchain-transport-lib/USAGE.md @@ -1,5 +1,5 @@ - + # 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; ``` -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 diff --git a/deltas/0.2.2/rel.001.md b/deltas/0.2.2/rel.001.md new file mode 100644 index 0000000..682ed97 --- /dev/null +++ b/deltas/0.2.2/rel.001.md @@ -0,0 +1,154 @@ + + + +# 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`. diff --git a/docs/000-README.md b/docs/000-README.md index a03e39a..8afafb4 100644 --- a/docs/000-README.md +++ b/docs/000-README.md @@ -1,5 +1,5 @@ - + # Documentation KSP @@ -63,7 +63,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). 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. diff --git a/docs/architecture/004-COMPONENT_INVENTORY.md b/docs/architecture/004-COMPONENT_INVENTORY.md index d804ab3..2d09270 100644 --- a/docs/architecture/004-COMPONENT_INVENTORY.md +++ b/docs/architecture/004-COMPONENT_INVENTORY.md @@ -1,5 +1,5 @@ - + # Inventaire initial des composants KSP @@ -17,41 +17,41 @@ Ce document maintient l'inventaire synthétique des composants retenus ou presse ## Inventaire synthétique -| 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 | -| 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 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 | -| 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--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 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 | -| 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 | -| 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 | -| 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 | -| 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 | -| 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 | -| Scenarios | `ksp-scenario--lib` | lib | Retenu | vertical slices | validation métier/devnet par groupe | -| 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 | -| Trading Intelligence | noms à définir | libs/jobs | Futur | après données stables | features/signaux/anomalies/ML | +| 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 | +| 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 Desk | `ksp-app-config-desk` | app | Stable | `0.1.4` | validation/management Config | +| 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 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--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 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 | +| 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 | +| 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 | +| 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 | +| 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 | +| 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 | +| Scenarios | `ksp-scenario--lib` | lib | Retenu | vertical slices | validation métier/devnet par groupe | +| 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 | +| Trading Intelligence | noms à définir | libs/jobs | Futur | après données stables | features/signaux/anomalies/ML | ## Contrats séparés retenus @@ -78,7 +78,7 @@ ksp-data-api ## 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. diff --git a/docs/plans/000-README.md b/docs/plans/000-README.md index 1102f45..f1b01f2 100644 --- a/docs/plans/000-README.md +++ b/docs/plans/000-README.md @@ -1,5 +1,5 @@ - + # 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`. - [`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`. -- [`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. diff --git a/docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md b/docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md index da5238a..31448d5 100644 --- a/docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md +++ b/docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md @@ -1,5 +1,5 @@ - + # 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. -`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 diff --git a/docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md b/docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md index dd1655a..64373c0 100644 --- a/docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md +++ b/docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md @@ -1,11 +1,11 @@ - + # Plan `0.2.2` — HTTP Accounts + Tokens + Cluster ## 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, 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 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 : @@ -467,7 +467,7 @@ pre.006 : 5 Cluster restants pre.007 : clôture candidate ``` -La surface typed candidate est donc : +La surface typed stable est donc : ```text 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. -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 @@ -499,7 +532,7 @@ Sont exclus de `0.2.2` : - modification de Config sans besoin concret ; - ajout de dépendances de décodage pour simple représentation wire. -## Validations prévues +## Validations de référence 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` -`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 ; - 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 ; - les commandes Cargo finales réellement exécutables passent ; - 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. diff --git a/docs/validation/000-README.md b/docs/validation/000-README.md index 1589ffd..beadab5 100644 --- a/docs/validation/000-README.md +++ b/docs/validation/000-README.md @@ -1,5 +1,5 @@ - + # 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`. - [`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. -- [`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`. diff --git a/docs/validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md b/docs/validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md index 4d48cb1..d613606 100644 --- a/docs/validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md +++ b/docs/validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md @@ -1,11 +1,11 @@ - + # Validation finale `0.2.2` — HTTP Accounts + Tokens + Cluster ## 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` : @@ -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`. -## Surface typée candidate +## Surface typée stable `0.2.2` ajoute exactement : @@ -68,7 +68,7 @@ Cluster : 12 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 : @@ -81,7 +81,7 @@ L'API raw `execute_standard_rpc()` reste disponible mais ne compte pas comme cou ## Contrats wire à préserver -La candidate doit conserver notamment : +La release stable conserve notamment : - `Account.data` legacy / encoded / `jsonParsed` sans décodage Program ; - `Account.space: Option` ; @@ -121,7 +121,7 @@ partition == 4 / 22 / 11 / 15 historical => Deprecated + Removed + Historical + NotApplicable ``` -Après `pre.007`, la suite attendue est : +La suite stable confirmée est : ```text 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 -La candidate ne doit introduire : +La release stable n'introduit : ```text 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. -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 crates/ksp-onchain-transport-lib/README.md @@ -201,20 +201,39 @@ ROADMAP.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 cargo fmt --all cargo check --workspace cargo clippy --workspace --all-targets 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 -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 -d 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 ``` -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 -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 -``` +## Publication `rel.001` -Les résultats doivent être reportés dans `rel.001`; cette matrice ne les anticipe pas. - -## Passage à `rel.001` - -Si toutes les validations passent, `rel.001` doit rester strictement publicationnel : +`0.2.2-rel.001` reste strictement publicationnelle : ```text workspace.package.version -> 0.2.2 ROADMAP : 0.2.2 -> [X] 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 commit v0.2.2-rel.001 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`.